From 64e74c9cc7d5aab215cf72d9bdd3aac32e128191 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 22 Dec 2019 15:38:06 +0100 Subject: 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 #5391) --- src/eval.c | 3 +-- src/findfile.c | 13 +++++++++++-- src/globals.h | 2 ++ src/testdir/test_gf.vim | 8 ++++++++ src/version.c | 2 ++ 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/eval.c b/src/eval.c index 3b563f7db..387b2802d 100644 --- a/src/eval.c +++ b/src/eval.c @@ -5462,7 +5462,6 @@ tv_get_number_chk(typval_T *varp, int *denote) 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 index dba547da1..ba996c454 100644 --- 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 index 77a42d8ef..9ddb16441 100644 --- 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 index d30187489..4a4ffcefa 100644 --- 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 index 7d9b3db90..9dbfd6ff4 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 30, /**/ 29, /**/ -- cgit v1.2.1