Patch 8.1.2312
Problem:    "line:" field in tags file not used.
Solution:   Recognize the field and use the value. (Andy Massimino, Daniel
            Hahler, closes #5232, closes #2546, closes #1057)
Files:      src/tag.c, src/testdir/test_tagjump.vim


*** ../vim-8.1.2311/src/tag.c   2019-11-08 21:56:54.779417459 +0100
--- src/tag.c   2019-11-17 16:18:06.817748509 +0100
***************
*** 35,40 ****
--- 35,41 ----
      char_u    *tagkind_end;   // end of tagkind
      char_u    *user_data;     // user_data string
      char_u    *user_data_end; // end of user_data
+     linenr_T  tagline;        // "line:" value
  } tagptrs_T;
  
  /*
***************
*** 3217,3222 ****
--- 3218,3224 ----
  
      tagp->tagkind = NULL;
      tagp->user_data = NULL;
+     tagp->tagline = 0;
      tagp->command_end = NULL;
  
      if (retval == OK)
***************
*** 3237,3242 ****
--- 3239,3246 ----
                        tagp->tagkind = p + 5;
                    else if (STRNCMP(p, "user_data:", 10) == 0)
                        tagp->user_data = p + 10;
+                   else if (STRNCMP(p, "line:", 5) == 0)
+                       tagp->tagline = atoi((char *)p + 5);
                    if (tagp->tagkind != NULL && tagp->user_data != NULL)
                        break;
                    pc = vim_strchr(p, ':');
***************
*** 3537,3543 ****
            p_ic = FALSE;       /* don't ignore case now */
            p_scs = FALSE;
            save_lnum = curwin->w_cursor.lnum;
!           curwin->w_cursor.lnum = 0;  /* start search before first line */
            if (do_search(NULL, pbuf[0], pbuf + 1, (long)1,
                                                         search_options, NULL))
                retval = OK;
--- 3541,3552 ----
            p_ic = FALSE;       /* don't ignore case now */
            p_scs = FALSE;
            save_lnum = curwin->w_cursor.lnum;
!           if (tagp.tagline > 0)
!               // start search before line from "line:" field
!               curwin->w_cursor.lnum = tagp.tagline - 1;
!           else
!               // start search before first line
!               curwin->w_cursor.lnum = 0;
            if (do_search(NULL, pbuf[0], pbuf + 1, (long)1,
                                                         search_options, NULL))
                retval = OK;
*** ../vim-8.1.2311/src/testdir/test_tagjump.vim        2019-11-07 
23:08:39.245164729 +0100
--- src/testdir/test_tagjump.vim        2019-11-17 16:16:36.833994958 +0100
***************
*** 526,529 ****
--- 526,553 ----
    call delete('XTest_tselect')
  endfunc
  
+ func Test_tagline()
+   call writefile([
+       \ 'provision    Xtest.py        /^    def provision(self, 
**kwargs):$/;"        m       line:1  language:Python class:Foo',
+       \ 'provision    Xtest.py        /^    def provision(self, 
**kwargs):$/;"        m       line:3  language:Python class:Bar',
+       \], 'Xtags')
+   call writefile([
+       \ '    def provision(self, **kwargs):',
+       \ '        pass',
+       \ '    def provision(self, **kwargs):',
+       \ '        pass',
+       \], 'Xtest.py')
+ 
+   set tags=Xtags
+ 
+   1tag provision
+   call assert_equal(line('.'), 1)
+   2tag provision
+   call assert_equal(line('.'), 3)
+ 
+   call delete('Xtags')
+   call delete('Xtest.py')
+   set tags&
+ endfunc
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.1.2311/src/version.c       2019-11-16 22:49:34.190410455 +0100
--- src/version.c       2019-11-17 15:59:16.606236491 +0100
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     2312,
  /**/

-- 
% cat /usr/include/real_life.h
void life(void);

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/201911171519.xAHFJ0At007926%40masaka.moolenaar.net.

Raspunde prin e-mail lui