diff --git a/src/builtin_commandline.cpp b/src/builtin_commandline.cpp index 971ba2082..122681af3 100644 --- a/src/builtin_commandline.cpp +++ b/src/builtin_commandline.cpp @@ -234,9 +234,7 @@ static void write_part(const wchar_t *begin, } // debug( 0, L"woot2 %ls -> %ls", buff, esc ); - wcstring tmp = wcstring(begin, end - begin); - unescape_string_in_place(&tmp, UNESCAPE_INCOMPLETE); - streams.out.append(tmp); + streams.out.append(begin, end - begin); streams.out.append(L"\n"); } diff --git a/tests/commandline.expect b/tests/commandline.expect new file mode 100644 index 000000000..8db0c8331 --- /dev/null +++ b/tests/commandline.expect @@ -0,0 +1,30 @@ +# vim: set filetype=expect: + +spawn $fish + +expect_prompt + +send_line "bind '~' 'handle_tilde'" +expect_prompt + +# printing the current buffer should not remove quoting +send_line "function handle_tilde; echo; echo '@GUARD:1@'; commandline -b; echo '@/GUARD:1@'; commandline -b ''; end" +expect_prompt +send_line {echo \en one "two three" four'five six'{7} 'eight~} +expect_prompt -re {\r\n@GUARD:1@\r\n(.*)\r\n@/GUARD:1@\r\n} { + puts "a:" + puts $expect_out(1,string) +} unmatched { + abort "Couldn't find guard 1" +} + +# printing the buffer with -o should remove quoting +send_line "function handle_tilde; echo; echo '@GUARD:2@'; commandline -bo; echo '@/GUARD:2@'; commandline -b ''; end" +expect_prompt +send_line {echo one "two three" four'five six'{7} 'eight~} +expect_prompt -re {\r\n@GUARD:2@\r\n(.*)\r\n@/GUARD:2@\r\n} { + puts "b:" + puts [string map {\r {}} $expect_out(1,string)] +} unmatched { + abort "Couldn't find guard 2" +} diff --git a/tests/commandline.expect.err b/tests/commandline.expect.err new file mode 100644 index 000000000..e69de29bb diff --git a/tests/commandline.expect.out b/tests/commandline.expect.out new file mode 100644 index 000000000..ea3879a83 --- /dev/null +++ b/tests/commandline.expect.out @@ -0,0 +1,8 @@ +a: +echo \en one "two three" four'five six'{7} 'eight +b: +echo +one +two three +fourfive six{7} +eight diff --git a/tests/commandline.expect.status b/tests/commandline.expect.status new file mode 100644 index 000000000..573541ac9 --- /dev/null +++ b/tests/commandline.expect.status @@ -0,0 +1 @@ +0