diff options
author | Marco Hinz <mh.codebro@gmail.com> | 2015-11-10 03:14:47 +0100 |
---|---|---|
committer | Marco Hinz <mh.codebro@gmail.com> | 2015-11-10 03:14:47 +0100 |
commit | 68255df9b93e1b69ac5402d193abfceca04ffb54 (patch) | |
tree | e178e7bc5a5069007d431812cf08c7721c4c3762 /src/nvim/eval.c | |
parent | 971e5c22bfc51102d670549d3df1181adfc75c77 (diff) | |
parent | 3b12bb225adda2aac40a55f7009cae05311b2a43 (diff) | |
download | rneovim-68255df9b93e1b69ac5402d193abfceca04ffb54.tar.gz rneovim-68255df9b93e1b69ac5402d193abfceca04ffb54.tar.bz2 rneovim-68255df9b93e1b69ac5402d193abfceca04ffb54.zip |
Merge PR #3611 'Add file selection prompt on ":oldfiles!"'
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 045d513a4a..e1fa76c526 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -21208,9 +21208,9 @@ void last_set_msg(scid_T scriptID) */ void ex_oldfiles(exarg_T *eap) { - list_T *l = vimvars[VV_OLDFILES].vv_list; + list_T *l = get_vim_var_list(VV_OLDFILES); listitem_T *li; - int nr = 0; + long nr = 0; if (l == NULL) msg((char_u *)_("No old files")); @@ -21218,7 +21218,7 @@ void ex_oldfiles(exarg_T *eap) msg_start(); msg_scroll = TRUE; for (li = l->lv_first; li != NULL && !got_int; li = li->li_next) { - msg_outnum((long)++nr); + msg_outnum(++nr); MSG_PUTS(": "); msg_outtrans(get_tv_string(&li->li_tv)); msg_putchar('\n'); @@ -21228,6 +21228,23 @@ void ex_oldfiles(exarg_T *eap) /* Assume "got_int" was set to truncate the listing. */ got_int = FALSE; + // File selection prompt on ":oldfiles!" + if (eap->forceit) { + quit_more = false; + nr = prompt_for_number(false); + msg_starthere(); + if (nr > 0 && nr <= l->lv_len) { + char_u *p = list_find_str(l, nr); + if (p == NULL) { + return; + } + p = expand_env_save(p); + eap->arg = p; + eap->cmdidx = CMD_edit; + do_exedit(eap, NULL); + xfree(p); + } + } } } |