Fix edge cases in --bind where ',' or ':' are chained (#4206)

This commit is contained in:
Junegunn Choi 2025-01-27 09:28:40 +09:00
parent 4b74f882c7
commit 8179ca5eaa
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627
2 changed files with 4 additions and 2 deletions

View File

@ -1387,6 +1387,8 @@ Loop:
masked += strings.Repeat(" ", loc[1])
action = action[loc[1]:]
}
masked = strings.ReplaceAll(masked, ",,,", string([]rune{',', escapedComma, ','}))
masked = strings.ReplaceAll(masked, ",:,", string([]rune{',', escapedColon, ','}))
masked = strings.ReplaceAll(masked, "::", string([]rune{escapedColon, ':'}))
masked = strings.ReplaceAll(masked, ",:", string([]rune{escapedComma, ':'}))
masked = strings.ReplaceAll(masked, "+:", string([]rune{escapedPlus, ':'}))

View File

@ -418,9 +418,9 @@ class TestCore < TestInteractive
end
def test_bind
tmux.send_keys "seq 1 1000 | #{fzf('-m --bind=ctrl-j:accept,u,U:up,X,Y,Z:toggle-up,t:toggle')}", :Enter
tmux.send_keys "seq 1 1000 | #{fzf('-m --bind=ctrl-j:accept,u,:,U:up,X,,,Z:toggle-up,t:toggle')}", :Enter
tmux.until { |lines| assert_equal ' 1000/1000 (0)', lines[-2] }
tmux.send_keys 'uUu', 'XYZ', 'tt', 'uu', 'ttt', 'C-j'
tmux.send_keys 'uU:', 'X,Z', 'tt', 'uu', 'ttt', 'C-j'
assert_equal %w[4 5 6 9], fzf_output_lines
end