]> granicus.if.org Git - vim/commitdiff
patch 8.2.0030: "gF" does not work on output of "verbose command" v8.2.0030
authorBram Moolenaar <Bram@vim.org>
Sun, 22 Dec 2019 14:38:06 +0000 (15:38 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 22 Dec 2019 14:38:06 +0000 (15:38 +0100)
Problem:    "gF" does not work on output of "verbose command".
Solution:   Recognize " line " and translations. (closes #5391)

src/eval.c
src/findfile.c
src/globals.h
src/testdir/test_gf.vim
src/version.c

index 3b563f7dbe1763f5956accca9280502c60c296b9..387b2802d0e7c50a0b1d715f4cb029f31aea4afe 100644 (file)
@@ -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();
index dba547da14825f802e32087f8de62015c28afb05..ba996c4546248c612d1ac9630dfb97d7530a3a6a 100644 (file)
@@ -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))
index 77a42d8ef6548427bdee7e599cb14af67f63b738..9ddb164413816c559e5baae2c2ca89190c2431c1 100644 (file)
@@ -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
index d301874891505272572f2dbdc173043ac9945c0e..4a4ffcefa10525fe8ffe749b58e17c9f3ee9fb49 100644 (file)
@@ -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')
index 7d9b3db90c8af994f6a84a45a7f6ddc0da6382d6..9dbfd6ff4559eb90a0cfe812259cb82bdf4e887e 100644 (file)
@@ -742,6 +742,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    30,
 /**/
     29,
 /**/