diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-12-22 15:38:06 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-12-22 15:38:06 +0100 |
commit | 64e74c9cc7d5aab215cf72d9bdd3aac32e128191 (patch) | |
tree | f56e752def4d77a8c2411a447cc4f47c3fc2b08e | |
parent | a27655ef6d0001c7c2265ea682455ec82acee826 (diff) | |
download | vim-git-64e74c9cc7d5aab215cf72d9bdd3aac32e128191.tar.gz |
patch 8.2.0030: "gF" does not work on output of "verbose command"v8.2.0030
Problem: "gF" does not work on output of "verbose command".
Solution: Recognize " line " and translations. (closes #5391)
-rw-r--r-- | src/eval.c | 3 | ||||
-rw-r--r-- | src/findfile.c | 13 | ||||
-rw-r--r-- | src/globals.h | 2 | ||||
-rw-r--r-- | src/testdir/test_gf.vim | 8 | ||||
-rw-r--r-- | 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 @@ -743,6 +743,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 30, +/**/ 29, /**/ 28, |