Patch 8.1.0165
Problem:    :clist output can be very long.
Solution:   Support filtering :clist entries. (Yegappan Lakshmanan)
Files:      src/quickfix.c, src/testdir/test_quickfix.vim


*** ../vim-8.1.0164/src/quickfix.c      Tue Jul  3 16:54:18 2018
--- src/quickfix.c      Sun Jul  8 15:53:26 2018
***************
*** 3051,3056 ****
--- 3051,3057 ----
      int               qfFileAttr;
      int               qfSepAttr;
      int               qfLineAttr;
+     int               filter_entry;
      int               all = eap->forceit;     /* if not :cl!, only show
                                                   recognised errors */
      qf_info_T *qi = &ql_info;
***************
*** 3120,3126 ****
      {
        if ((qfp->qf_valid || all) && idx1 <= i && i <= idx2)
        {
-           msg_putchar('\n');
            if (got_int)
                break;
  
--- 3121,3126 ----
***************
*** 3141,3146 ****
--- 3141,3160 ----
                    vim_snprintf((char *)IObuff, IOSIZE, "%2d %s",
                                                                i, (char 
*)fname);
            }
+ 
+           // Support for filtering entries using :filter /pat/ clist
+           filter_entry = 1;
+           if (qfp->qf_module != NULL && *qfp->qf_module != NUL)
+               filter_entry &= message_filtered(qfp->qf_module);
+           if (fname != NULL)
+               filter_entry &= message_filtered(fname);
+           if (qfp->qf_pattern != NULL)
+               filter_entry &= message_filtered(qfp->qf_pattern);
+           filter_entry &= message_filtered(qfp->qf_text);
+           if (filter_entry)
+               goto next_entry;
+ 
+           msg_putchar('\n');
            msg_outtrans_attr(IObuff, i == qi->qf_lists[qi->qf_curlist].qf_index
                                           ? HL_ATTR(HLF_QFL) : qfFileAttr);
  
***************
*** 3175,3180 ****
--- 3189,3195 ----
            out_flush();                /* show one line at a time */
        }
  
+ next_entry:
        qfp = qfp->qf_next;
        if (qfp == NULL)
            break;
***************
*** 4186,4191 ****
--- 4201,4207 ----
      }
      if (res >= 0)
        qf_list_changed(qi, qi->qf_curlist);
+ 
      // Remember the current quickfix list identifier, so that we can
      // check for autocommands changing the current quickfix list.
      save_qfid = qi->qf_lists[qi->qf_curlist].qf_id;
*** ../vim-8.1.0164/src/testdir/test_quickfix.vim       Tue Jul  3 19:15:56 2018
--- src/testdir/test_quickfix.vim       Sun Jul  8 15:53:26 2018
***************
*** 3487,3489 ****
--- 3487,3506 ----
    call Xautocmd_changelist('c')
    call Xautocmd_changelist('l')
  endfunc
+ 
+ " Tests for the ':filter /pat/ clist' command
+ func Test_filter_clist()
+   cexpr ['Xfile1:10:10:Line 10', 'Xfile2:15:15:Line 15']
+   call assert_equal([' 2 Xfile2:15 col 15: Line 15'],
+                       \ split(execute('filter /Line 15/ clist'), "\n"))
+   call assert_equal([' 1 Xfile1:10 col 10: Line 10'],
+                       \ split(execute('filter /Xfile1/ clist'), "\n"))
+   call assert_equal([], split(execute('filter /abc/ clist'), "\n"))
+ 
+   call setqflist([{'module' : 'abc', 'pattern' : 'pat1'},
+                       \ {'module' : 'pqr', 'pattern' : 'pat2'}], ' ')
+   call assert_equal([' 2 pqr:pat2:  '],
+                       \ split(execute('filter /pqr/ clist'), "\n"))
+   call assert_equal([' 1 abc:pat1:  '],
+                       \ split(execute('filter /pat1/ clist'), "\n"))
+ endfunc
*** ../vim-8.1.0164/src/version.c       Sat Jul  7 23:07:35 2018
--- src/version.c       Sun Jul  8 15:54:40 2018
***************
*** 791,792 ****
--- 791,794 ----
  {   /* Add new patch number below this line */
+ /**/
+     165,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
204. You're being audited because you mailed your tax return to the IRC.

 /// 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].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui