From 550b84c3ddf77b86b4d7182fa0eea73eeeb73ae2 Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Thu, 20 Jan 2011 21:20:05 +0100 Subject: vim-mode: Support ^H as BS key. Reported by peth. At the moment it's not working for custom mappings though! --- vim-mode/vim_mode.pl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/vim-mode/vim_mode.pl b/vim-mode/vim_mode.pl index 7d898ab..a0be248 100644 --- a/vim-mode/vim_mode.pl +++ b/vim-mode/vim_mode.pl @@ -312,6 +312,7 @@ my $commands # arrow like movement h => { char => 'h', func => \&cmd_h, type => C_NORMAL }, l => { char => 'l', func => \&cmd_l, type => C_NORMAL }, + "\x08" => { char => '', func => \&cmd_h, type => C_NORMAL }, "\x7F" => { char => '', func => \&cmd_h, type => C_NORMAL }, ' ' => { char => '', func => \&cmd_l, type => C_NORMAL }, # history movement @@ -2347,9 +2348,9 @@ sub got_key { _stop(); return; - # Pressing delete resets insert mode repetition. + # Pressing delete resets insert mode repetition (8 = BS, 127 = DEL). # TODO: maybe allow it - } elsif ($key == 127) { + } elsif ($key == 8 || $key == 127) { @insert_buf = (); # All other entered characters need to be stored to allow repeat of # insert mode. Ignore delete and control characters. @@ -2743,8 +2744,8 @@ sub handle_command_cmd { sub handle_command_ex { my ($key) = @_; - # DEL key - remove last character - if ($key == 127) { + # BS key (8) or DEL key (127) - remove last character. + if ($key == 8 || $key == 127) { print "Delete" if DEBUG; if (scalar @ex_buf > 0) { pop @ex_buf; -- cgit v1.2.3 From 8c54f40902ce38987b71c71ffb0f269c1bb7ca1f Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Sat, 12 Feb 2011 12:37:54 +0100 Subject: vim-mode: Fix :map displaying as mapped to . --- vim-mode/vim_mode.pl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vim-mode/vim_mode.pl b/vim-mode/vim_mode.pl index a0be248..428156c 100644 --- a/vim-mode/vim_mode.pl +++ b/vim-mode/vim_mode.pl @@ -1991,6 +1991,8 @@ sub ex_map { my $cmd = $map->{cmd}; if (defined $cmd) { next if $map->{char} eq $cmd->{char}; # skip default mappings + # FIXME: Hack so doesn't show up as mapped to . + next if $map->{char} eq '' and $cmd->{char} eq ''; next if $map->{char} !~ /^\Q$search\E/; # skip non-matches $active_window->print(sprintf "%-15s %s", $map->{char}, $cmd->{char}); -- cgit v1.2.3