io: remove append_char

Its functionality is subsumed by `append`. In some cases, the call can
be omitted and replaced by an `appendln`.

Part of #12396
This commit is contained in:
Daniel Rainer
2026-01-30 22:12:58 +01:00
committed by Johannes Altmanninger
parent 414dba994f
commit 22e5e63a65
15 changed files with 30 additions and 38 deletions

View File

@@ -738,8 +738,7 @@ fn validate_arg<'opts>(
);
for output in cmd_output {
streams.err.append(&output);
streams.err.append_char('\n');
streams.err.appendln(&output);
}
parser.vars().pop(parser.is_repainting());
retval.map(|()| SUCCESS)

View File

@@ -156,11 +156,12 @@ fn write_part(
let Some(token_mode) = token_mode else {
if cut_at_cursor {
streams.out.append(&buffer[range.start..range.start + pos]);
streams
.out
.appendln(&buffer[range.start..range.start + pos]);
} else {
streams.out.append(&buffer[range]);
streams.out.appendln(&buffer[range]);
}
streams.out.append_char('\n');
return;
};

View File

@@ -452,13 +452,12 @@ pub fn complete(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) ->
if detect_parse_errors(condition_string, Some(&mut errors), false).is_err() {
for error in errors {
let prefix = cmd.to_owned() + L!(": -n '") + &condition_string[..] + L!("': ");
streams.err.append(&error.describe_with_prefix(
streams.err.appendln(&error.describe_with_prefix(
condition_string,
&prefix,
parser.is_interactive(),
false,
));
streams.err.append_char('\n');
}
return Err(STATUS_CMD_ERROR);
}
@@ -475,8 +474,7 @@ pub fn complete(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) ->
cmd,
comp
));
streams.err.append(&err_text);
streams.err.append_char('\n');
streams.err.appendln(&err_text);
return Err(STATUS_CMD_ERROR);
}
}

View File

@@ -578,7 +578,7 @@ fn nonfatal_error<Str: AsRef<wstr>>(&mut self, errstr: Str) {
self.streams.err.append(errstr);
if !errstr.ends_with('\n') {
self.streams.err.append_char('\n');
self.streams.err.append('\n');
}
// We set the exit code to error, because one occurred,
@@ -602,7 +602,7 @@ fn fatal_error<Str: AsRef<wstr>>(&mut self, errstr: Str) {
self.streams.err.append(errstr);
if !errstr.ends_with('\n') {
self.streams.err.append_char('\n');
self.streams.err.append('\n');
}
self.exit_code = Err(STATUS_CMD_ERROR);

View File

@@ -677,19 +677,20 @@ fn show_scope(var_name: &wstr, scope: EnvMode, streams: &mut IoStreams, vars: &d
if EnvVar::flags_for(var_name).contains(EnvVarFlags::READ_ONLY) {
streams.out.append(wgettext!(" (read-only)\n"));
} else {
streams.out.append_char('\n');
streams.out.append('\n');
}
for i in 0..vals.len() {
if vals.len() > 100 {
if i == 50 {
// try to print a mid-line ellipsis because we are eliding lines not words
streams.out.append(if u32::from(get_ellipsis_char()) > 256 {
L!("\u{22EF}")
} else {
get_ellipsis_str()
});
streams.out.append_char('\n');
streams
.out
.appendln(if u32::from(get_ellipsis_char()) > 256 {
L!("\u{22EF}")
} else {
get_ellipsis_str()
});
}
if i >= 50 && i < vals.len() - 50 {
continue;

View File

@@ -696,12 +696,11 @@ pub fn builtin_unexpected_argument(
/// Print the backtrace and call for help that we use at the end of error messages.
pub fn builtin_print_error_trailer(parser: &Parser, b: &mut OutputStream, cmd: &wstr) {
b.append_char('\n');
b.append('\n');
let stacktrace = parser.current_line();
// Don't print two empty lines if we don't have a stacktrace.
if !stacktrace.is_empty() {
b.append(&stacktrace);
b.append_char('\n');
b.appendln(&stacktrace);
}
b.append(&wgettext_fmt!(
"(Type 'help %s' for related documentation)\n",
@@ -717,8 +716,7 @@ pub fn builtin_wperror(program_name: &wstr, streams: &mut IoStreams) {
streams.err.append(L!(": "));
if err.0 != 0 {
let werr = str2wcstring(err.to_string());
streams.err.append(&werr);
streams.err.append_char('\n');
streams.err.appendln(&werr);
}
}

View File

@@ -728,8 +728,7 @@ pub fn status(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> B
}
STATUS_CURRENT_COMMANDLINE => {
let commandline = &parser.libdata().status_vars.commandline;
streams.out.append(commandline);
streams.out.append_char('\n');
streams.out.appendln(commandline);
}
STATUS_FISH_PATH => {
use crate::env::config_paths::FishPath::*;

View File

@@ -84,9 +84,9 @@ fn handle(
if nargs > 0 && !self.quiet {
if self.is_join0 {
streams.out.append_char('\0');
streams.out.append('\0');
} else if print_trailing_newline {
streams.out.append_char('\n');
streams.out.append('\n');
}
}

View File

@@ -102,7 +102,7 @@ fn handle(
}
if !first {
streams.out.append_char('\n');
streams.out.append('\n');
}
first = false;
@@ -165,7 +165,7 @@ fn handle(
// Historical behavior is to never append a newline if all strings were empty.
if !self.quiet && !self.no_newline && !all_empty && print_trailing_newline {
streams.out.append_char('\n');
streams.out.append('\n');
}
if all_empty {

View File

@@ -116,7 +116,7 @@ fn handle(
if !self.quiet && (!self.filter || replaced) {
streams.out.append(&result);
if want_newline {
streams.out.append_char('\n');
streams.out.append('\n');
}
}

View File

@@ -97,7 +97,7 @@ fn handle(
.out
.append(&arg[start..usize::min(start + count, arg.len())]);
if want_newline {
streams.out.append_char('\n');
streams.out.append('\n');
}
}
nsub += 1;

View File

@@ -33,7 +33,7 @@ fn handle(
if !self.quiet {
streams.out.append(&transformed);
if want_newline {
streams.out.append_char('\n');
streams.out.append('\n');
}
} else if n_transformed > 0 {
return Ok(());

View File

@@ -85,7 +85,7 @@ fn handle(
if !self.quiet {
streams.out.append(&arg[trim_start..arg.len() - trim_end]);
if want_newline {
streams.out.append_char('\n');
streams.out.append('\n');
}
} else if ntrim > 0 {
return Ok(());

View File

@@ -42,7 +42,7 @@ fn handle(
if let Some(res) = unescape_string(&arg, self.style) {
streams.out.append(&res);
if want_newline {
streams.out.append_char('\n');
streams.out.append('\n');
}
nesc += 1;
}

View File

@@ -717,10 +717,6 @@ pub fn append_with_separation(
}
}
pub fn append_char(&mut self, c: char) -> bool {
self.append(wstr::from_char_slice(&[c]))
}
pub fn append_narrow(&mut self, s: &str) -> bool {
self.append(&str2wcstring(s))
}