summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-12-22 15:38:06 +0100
committerBram Moolenaar <Bram@vim.org>2019-12-22 15:38:06 +0100
commit64e74c9cc7d5aab215cf72d9bdd3aac32e128191 (patch)
treef56e752def4d77a8c2411a447cc4f47c3fc2b08e
parenta27655ef6d0001c7c2265ea682455ec82acee826 (diff)
downloadvim-git-8.2.0030.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.c3
-rw-r--r--src/findfile.c13
-rw-r--r--src/globals.h2
-rw-r--r--src/testdir/test_gf.vim8
-rw-r--r--src/version.c2
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,