From d88a46b1a9d58698c6f53ac02056ec8cc5113ead Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Sat, 9 Feb 2013 21:27:47 +0000 Subject: 31037: return to previous position with vi-goto-mark using `` or '' --- ChangeLog | 7 ++++++- Src/Zle/zle_move.c | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index ebe2b200c..424b70f29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-02-09 Oliver Kiddle + + * 31037: Src/Zle/zle_move.c: return to previous position + with vi-goto-mark using `` or '' + 2013-02-07 Peter Stephenson * Wieland Hoffmann: 31030: Completion/X/Command/_mplayer: @@ -504,5 +509,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5798 $ +* $Revision: 1.5799 $ ***************************************************** diff --git a/Src/Zle/zle_move.c b/Src/Zle/zle_move.c index d5f464c2c..379c8982a 100644 --- a/Src/Zle/zle_move.c +++ b/Src/Zle/zle_move.c @@ -30,7 +30,7 @@ #include "zle.mdh" #include "zle_move.pro" -static int vimarkcs[26], vimarkline[26]; +static int vimarkcs[27], vimarkline[27]; #ifdef MULTIBYTE_SUPPORT /* @@ -825,11 +825,17 @@ int vigotomark(UNUSED(char **args)) { ZLE_INT_T ch; + int oldcs = zlecs; + int oldline = histline; ch = getfullchar(0); - if (ch < ZWC('a') || ch > ZWC('z')) - return 1; - ch -= ZWC('a'); + if (ch == ZWC('\'') || ch == ZWC('`')) + ch = 26; + else { + if (ch < ZWC('a') || ch > ZWC('z')) + return 1; + ch -= ZWC('a'); + } if (!vimarkline[ch]) return 1; if (curhist != vimarkline[ch] && !zle_goto_hist(vimarkline[ch], 0, 0)) { @@ -837,6 +843,8 @@ vigotomark(UNUSED(char **args)) return 1; } zlecs = vimarkcs[ch]; + vimarkcs[26] = oldcs; + vimarkline[26] = histline; if (zlecs > zlell) zlecs = zlell; return 0; -- cgit 1.4.1