# HG changeset patch # User Bram Moolenaar # Date 1577025903 -3600 # Node ID 25ebc35e104fdfcc93daf0e106ddb7d50513fc11 # Parent a32de2d9694497ba6b6c666d8215b6a3be73483e patch 8.2.0030: "gF" does not work on output of "verbose command" Commit: https://github.com/vim/vim/commit/64e74c9cc7d5aab215cf72d9bdd3aac32e128191 Author: Bram Moolenaar 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) diff --git a/src/eval.c b/src/eval.c --- 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(); diff --git a/src/findfile.c b/src/findfile.c --- 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)) diff --git a/src/globals.h b/src/globals.h --- 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 diff --git a/src/testdir/test_gf.vim b/src/testdir/test_gf.vim --- 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') diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -743,6 +743,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 30, +/**/ 29, /**/ 28,