summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2016-04-25 00:53:11 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2016-04-25 01:04:35 +0900
commit988c9bd9be48b487bccca2d1d90d67c341c3bbf3 (patch)
treeae2bd59c0102f1ff5d4b7925648b29d04d512548
parent095f31b31691577641894b1942b316514ae23f3f (diff)
[zsh] Fix issues with unicode characters
-rw-r--r--shell/completion.zsh2
-rw-r--r--shell/key-bindings.zsh2
-rw-r--r--test/test_go.rb30
3 files changed, 32 insertions, 2 deletions
diff --git a/shell/completion.zsh b/shell/completion.zsh
index 25c021a8..74d1ad32 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 8a03585d..f60bbaea 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 34cdd59e..cf1fd77c 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