diff --git a/src/builtins/argparse.rs b/src/builtins/argparse.rs index 936f19ee7..7101d4728 100644 --- a/src/builtins/argparse.rs +++ b/src/builtins/argparse.rs @@ -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) diff --git a/src/builtins/commandline.rs b/src/builtins/commandline.rs index 9ecbe6385..ab02b14c0 100644 --- a/src/builtins/commandline.rs +++ b/src/builtins/commandline.rs @@ -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; }; diff --git a/src/builtins/complete.rs b/src/builtins/complete.rs index 3343fb459..98564f9f9 100644 --- a/src/builtins/complete.rs +++ b/src/builtins/complete.rs @@ -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); } } diff --git a/src/builtins/printf.rs b/src/builtins/printf.rs index 2bb06e08e..196073a4f 100644 --- a/src/builtins/printf.rs +++ b/src/builtins/printf.rs @@ -578,7 +578,7 @@ fn nonfatal_error>(&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>(&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); diff --git a/src/builtins/set.rs b/src/builtins/set.rs index 3fd563651..6e4b4a8ec 100644 --- a/src/builtins/set.rs +++ b/src/builtins/set.rs @@ -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; diff --git a/src/builtins/shared.rs b/src/builtins/shared.rs index b1eefe5d1..42f7ef059 100644 --- a/src/builtins/shared.rs +++ b/src/builtins/shared.rs @@ -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); } } diff --git a/src/builtins/status.rs b/src/builtins/status.rs index 973775785..9aac40258 100644 --- a/src/builtins/status.rs +++ b/src/builtins/status.rs @@ -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::*; diff --git a/src/builtins/string/join.rs b/src/builtins/string/join.rs index c5576690a..e1d69d43f 100644 --- a/src/builtins/string/join.rs +++ b/src/builtins/string/join.rs @@ -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'); } } diff --git a/src/builtins/string/repeat.rs b/src/builtins/string/repeat.rs index 7473c1aab..3db3f0cd4 100644 --- a/src/builtins/string/repeat.rs +++ b/src/builtins/string/repeat.rs @@ -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 { diff --git a/src/builtins/string/replace.rs b/src/builtins/string/replace.rs index de643ed42..866f01c01 100644 --- a/src/builtins/string/replace.rs +++ b/src/builtins/string/replace.rs @@ -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'); } } diff --git a/src/builtins/string/sub.rs b/src/builtins/string/sub.rs index e015ffb6e..4f9c29901 100644 --- a/src/builtins/string/sub.rs +++ b/src/builtins/string/sub.rs @@ -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; diff --git a/src/builtins/string/transform.rs b/src/builtins/string/transform.rs index de48f6cef..e7a3c23ef 100644 --- a/src/builtins/string/transform.rs +++ b/src/builtins/string/transform.rs @@ -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(()); diff --git a/src/builtins/string/trim.rs b/src/builtins/string/trim.rs index aab563754..2fdf55950 100644 --- a/src/builtins/string/trim.rs +++ b/src/builtins/string/trim.rs @@ -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(()); diff --git a/src/builtins/string/unescape.rs b/src/builtins/string/unescape.rs index 9c3178a88..08f3e5daa 100644 --- a/src/builtins/string/unescape.rs +++ b/src/builtins/string/unescape.rs @@ -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; } diff --git a/src/io.rs b/src/io.rs index 74319a1e0..a4d37ef2a 100644 --- a/src/io.rs +++ b/src/io.rs @@ -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)) }