From 8b453cf7e88eb8fae4fdafd8dcd72011136fb930 Mon Sep 17 00:00:00 2001 From: kana Date: Mon, 10 Mar 2008 07:05:34 +0900 Subject: [PATCH] Fix values of and for NCmdUndefined Both and for NCmdUndefined are expanded to the last typed key which is not mapped to any Normal mode command. --- src/fileio.c | 5 +++-- src/normal.c | 17 +++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/fileio.c b/src/fileio.c index 525f8f6..22ff82f 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -8611,13 +8611,14 @@ apply_autocmds_group(event, fname, fname_io, force, group, buf, eap) else { sfname = vim_strsave(fname); - /* Don't try expanding FileType, Syntax, WindowID or QuickFixCmd* */ + /* Don't try expanding for specific events */ if (event == EVENT_FILETYPE || event == EVENT_SYNTAX || event == EVENT_REMOTEREPLY || event == EVENT_SPELLFILEMISSING || event == EVENT_QUICKFIXCMDPRE - || event == EVENT_QUICKFIXCMDPOST) + || event == EVENT_QUICKFIXCMDPOST + || event == EVENT_NCMDUNDEFINED) fname = vim_strsave(fname); else fname = FullName_save(fname, FALSE); diff --git a/src/normal.c b/src/normal.c index 7d3f4f3..d44ce4d 100644 --- a/src/normal.c +++ b/src/normal.c @@ -182,6 +182,7 @@ static void nv_drop __ARGS((cmdarg_T *cap)); #ifdef FEAT_AUTOCMD static void nv_cursorhold __ARGS((cmdarg_T *cap)); static void nv_ncmdundefined __ARGS((cmdarg_T *cap)); +static int last_undefined_ncmdchar = '?'; #endif /* @@ -799,6 +800,7 @@ getcount: K_THIRD(K_NCMDUNDEFINED), '\0'}; ins_typebuf(KEY, REMAP_NONE, 0, TRUE, FALSE); + last_undefined_ncmdchar = c; goto normal_end; } @@ -9213,8 +9215,19 @@ nv_cursorhold(cap) nv_ncmdundefined(cap) cmdarg_T *cap; { - /* FIXME: proper values for fname and fname_io. */ - if (apply_autocmds(EVENT_NCMDUNDEFINED, NULL, NULL, FALSE, curbuf)) + char_u key[NUMBUFLEN]; + +#ifdef FEAT_MBYTE + if (has_mbyte) + key[(*mb_char2bytes)(last_undefined_ncmdchar, key)] = NUL; + else +#endif + { + key[0] = last_undefined_ncmdchar; + key[1] = NUL; + } + + if (apply_autocmds(EVENT_NCMDUNDEFINED, key, key, FALSE, curbuf)) cap->retval |= CA_COMMAND_BUSY; /* don't call edit() now */ else clearopbeep(cap->oap); /* Not a known command: beep. */ -- 2.11.4.GIT