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')
--- 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,