From 988c9bd9be48b487bccca2d1d90d67c341c3bbf3 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Mon, 25 Apr 2016 00:53:11 +0900 Subject: [PATCH] [zsh] Fix issues with unicode characters --- shell/completion.zsh | 2 +- shell/key-bindings.zsh | 2 +- test/test_go.rb | 30 ++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/shell/completion.zsh b/shell/completion.zsh index 25c021a..74d1ad3 100644 --- a/shell/completion.zsh +++ b/shell/completion.zsh @@ -54,7 +54,7 @@ __fzf_generic_path_completion() { [ "$dir" != "/" ] && dir="${dir/%\//}" dir=${~dir} matches=$(eval "$compgen $(printf %q "$dir")" | ${=fzf} ${=FZF_COMPLETION_OPTS} ${=fzf_opts} -q "$leftover" | while read item; do - printf "%q$suffix " "$item" + echo -n "${(q)item}$suffix " done) matches=${matches% } if [ -n "$matches" ]; then diff --git a/shell/key-bindings.zsh b/shell/key-bindings.zsh index 8a03585..f60bbae 100644 --- a/shell/key-bindings.zsh +++ b/shell/key-bindings.zsh @@ -9,7 +9,7 @@ __fsel() { -o -type d -print \ -o -type l -print 2> /dev/null | sed 1d | cut -b3-"}" eval "$cmd" | $(__fzfcmd) -m | while read item; do - printf '%q ' "$item" + echo -n "${(q)item} " done echo } diff --git a/test/test_go.rb b/test/test_go.rb index 34cdd59..cf1fd77 100644 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -1218,6 +1218,22 @@ module TestShell tmux.until(0) { |lines| lines[-1].include? '1 2 3' } end + def test_ctrl_t_unicode + FileUtils.mkdir_p '/tmp/fzf-test' + tmux.send_keys 'cd /tmp/fzf-test; echo -n test1 > "fzf-unicode 테스트1"; echo -n test2 > "fzf-unicode 테스트2"', :Enter + tmux.prepare + tmux.send_keys 'cat ', 'C-t', pane: 0 + tmux.until(1) { |lines| lines.item_count >= 1 } + tmux.send_keys 'fzf-unicode', pane: 1 + tmux.until(1) { |lines| lines[-2].start_with? ' 2/' } + tmux.send_keys :BTab, :BTab, pane: 1 + tmux.until(1) { |lines| lines[-2].include? '(2)' } + tmux.send_keys :Enter, pane: 1 + tmux.until { |lines| lines[-1].include? 'cat' } + tmux.send_keys :Enter + tmux.until { |lines| lines[-1].include? 'test1test2' } + end + def test_alt_c tmux.prepare tmux.send_keys :Escape, :c, pane: 0 @@ -1418,6 +1434,20 @@ module CompletionTest tmux.send_keys :Enter tmux.until { |lines| lines[-1] == 'unset FOO' } end + + def test_file_completion_unicode + FileUtils.mkdir_p '/tmp/fzf-test' + tmux.send_keys 'cd /tmp/fzf-test; echo -n test3 > "fzf-unicode 테스트1"; echo -n test4 > "fzf-unicode 테스트2"', :Enter + tmux.prepare + tmux.send_keys 'cat fzf-unicode**', :Tab, pane: 0 + tmux.until(1) { |lines| lines[-2].start_with? ' 2/' } + tmux.send_keys :BTab, :BTab, pane: 1 + tmux.until(1) { |lines| lines[-2].include? '(2)' } + tmux.send_keys :Enter, pane: 1 + tmux.until { |lines| lines[-1].include? 'cat' } + tmux.send_keys :Enter + tmux.until { |lines| lines[-1].include? 'test3test4' } + end end class TestBash < TestBase