Mercurial > vim
changeset 18939:25ebc35e104f v8.2.0030
patch 8.2.0030: "gF" does not work on output of "verbose command"
Commit: https://github.com/vim/vim/commit/64e74c9cc7d5aab215cf72d9bdd3aac32e128191
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Dec 22 15:38:06 2019 +0100
patch 8.2.0030: "gF" does not work on output of "verbose command"
Problem: "gF" does not work on output of "verbose command".
Solution: Recognize " line " and translations. (closes https://github.com/vim/vim/issues/5391)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 22 Dec 2019 15:45:03 +0100 |
parents | a32de2d96944 |
children | 9af4bf3b4f82 |
files | src/eval.c src/findfile.c src/globals.h src/testdir/test_gf.vim src/version.c |
diffstat | 5 files changed, 24 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -5462,7 +5462,6 @@ tv_get_number_chk(typval_T *varp, int *d break; case VAR_SPECIAL: return varp->vval.v_number == VVAL_TRUE ? 1 : 0; - break; case VAR_JOB: #ifdef FEAT_JOB_CHANNEL emsg(_("E910: Using a Job as a Number")); @@ -6147,7 +6146,7 @@ last_set_msg(sctx_T script_ctx) msg_puts((char *)p); if (script_ctx.sc_lnum > 0) { - msg_puts(_(" line ")); + msg_puts(_(line_msg)); msg_outnum((long)script_ctx.sc_lnum); } verbose_leave();
--- a/src/findfile.c +++ b/src/findfile.c @@ -2047,10 +2047,19 @@ file_name_in_line( if (file_lnum != NULL) { char_u *p; + char *line_english = " line "; + char *line_transl = _(line_msg); - // Get the number after the file name and a separator character + // Get the number after the file name and a separator character. + // Also accept " line 999" with and without the same translation as + // used in last_set_msg(). p = ptr + len; - p = skipwhite(p); + if (STRNCMP(p, line_english, STRLEN(line_english)) == 0) + p += STRLEN(line_english); + else if (STRNCMP(p, line_transl, STRLEN(line_transl)) == 0) + p += STRLEN(line_transl); + else + p = skipwhite(p); if (*p != NUL) { if (!isdigit(*p))
--- a/src/globals.h +++ b/src/globals.h @@ -1660,6 +1660,8 @@ EXTERN short disallow_gui INIT(= FALSE); EXTERN char top_bot_msg[] INIT(= N_("search hit TOP, continuing at BOTTOM")); EXTERN char bot_top_msg[] INIT(= N_("search hit BOTTOM, continuing at TOP")); +EXTERN char line_msg[] INIT(= N_(" line ")); + #ifdef FEAT_CRYPT EXTERN char need_key_msg[] INIT(= N_("Need encryption key for \"%s\"")); #endif
--- a/src/testdir/test_gf.vim +++ b/src/testdir/test_gf.vim @@ -58,6 +58,14 @@ func Test_gF() call assert_equal('Xfile', bufname('%')) call assert_equal(3, getcurpos()[1]) + enew! + call setline(1, ['one', 'the Xfile line 2, and more', 'three']) + w! Xfile2 + normal 2GfX + normal gF + call assert_equal('Xfile', bufname('%')) + call assert_equal(2, getcurpos()[1]) + set isfname& call delete('Xfile') call delete('Xfile2')