From 2109af0987ce6daab95daa053199ab4f7cafb970 Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Mon, 20 Jul 2015 00:18:56 -0700 Subject: [PATCH] Implement lowercase-r replace in fish_vi_mode Fixes #1595 --- share/functions/fish_mode_prompt.fish | 3 +++ share/functions/fish_vi_key_bindings.fish | 6 ++++++ tests/bind.expect | 10 ++++++++++ tests/bind.expect.out | 1 + 4 files changed, 20 insertions(+) diff --git a/share/functions/fish_mode_prompt.fish b/share/functions/fish_mode_prompt.fish index 305216796..e9b49e5b3 100644 --- a/share/functions/fish_mode_prompt.fish +++ b/share/functions/fish_mode_prompt.fish @@ -9,6 +9,9 @@ function fish_mode_prompt --description "Displays the current mode" case insert set_color --bold --background green white echo '[I]' + case replace-one + set_color --bold --background green white + echo '[R]' case visual set_color --bold --background magenta white echo '[V]' diff --git a/share/functions/fish_vi_key_bindings.fish b/share/functions/fish_vi_key_bindings.fish index aa6dda6fa..54cc5b31c 100644 --- a/share/functions/fish_vi_key_bindings.fish +++ b/share/functions/fish_vi_key_bindings.fish @@ -198,7 +198,13 @@ function fish_vi_key_bindings --description 'vi-like key bindings for fish' bind -M insert \ef forward-word + # + # Lowercase r, enters replace-one mode + # + bind -m replace-one r force-repaint + bind -M replace-one -m default '' delete-char self-insert backward-char force-repaint + bind -M replace-one -m default \e cancel force-repaint # # visual mode diff --git a/tests/bind.expect b/tests/bind.expect index 91585c96a..9df5b37cc 100644 --- a/tests/bind.expect +++ b/tests/bind.expect @@ -27,6 +27,16 @@ expect_prompt -re {\r\nsuccess\r\n} { puts stderr "Couldn't find expected output 'success'" } +# Test lowercase-r replace +send_line "\033ddiecho TEXT\033hhrAi" +expect_prompt -re {\r\nTAXT\r\n} { + puts "replace success" +} -nounmatched -re {\r\nfail} { + puts stderr "replace fail" +} unmatched { + puts stderr "Couldn't find expected output 'TAXT'" +} + # still in insert mode, switch back to regular key bindings send_line "set -g fish_key_bindings fish_default_key_bindings" expect_prompt diff --git a/tests/bind.expect.out b/tests/bind.expect.out index a670195e7..7f883abdc 100644 --- a/tests/bind.expect.out +++ b/tests/bind.expect.out @@ -1,3 +1,4 @@ success success +replace success success