Patch 8.1.0288
Problem: Quickfix code uses cmdidx too often.
Solution: Add is_loclist_cmd(). (Yegappan Lakshmanan)
Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/quickfix.c
*** ../vim-8.1.0287/src/ex_docmd.c 2018-08-14 16:06:09.451696062 +0200
--- src/ex_docmd.c 2018-08-15 20:53:22.429089025 +0200
***************
*** 12529,12534 ****
--- 12529,12548 ----
}
#endif
+ #ifdef FEAT_QUICKFIX
+ /*
+ * Returns TRUE if the supplied Ex cmdidx is for a location list command
+ * instead of a quickfix command.
+ */
+ int
+ is_loclist_cmd(int cmdidx)
+ {
+ if (cmdidx < 0 || cmdidx > CMD_SIZE)
+ return FALSE;
+ return cmdnames[cmdidx].cmd_name[0] == 'l';
+ }
+ #endif
+
# if defined(FEAT_TIMERS) || defined(PROTO)
int
get_pressedreturn(void)
*** ../vim-8.1.0287/src/proto/ex_docmd.pro 2018-08-14 16:06:09.451696062
+0200
--- src/proto/ex_docmd.pro 2018-08-15 20:50:10.242164053 +0200
***************
*** 70,75 ****
--- 70,76 ----
char_u *get_messages_arg(expand_T *xp, int idx);
char_u *get_mapclear_arg(expand_T *xp, int idx);
void set_no_hlsearch(int flag);
+ int is_loclist_cmd(int cmdidx);
int get_pressedreturn(void);
void set_pressedreturn(int val);
/* vim: set ft=c : */
*** ../vim-8.1.0287/src/quickfix.c 2018-08-11 13:36:51.806140673 +0200
--- src/quickfix.c 2018-08-15 20:50:10.242164053 +0200
***************
*** 3330,3336 ****
recognised errors */
qf_info_T *qi = &ql_info;
! if (eap->cmdidx == CMD_llist)
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
--- 3330,3336 ----
recognised errors */
qf_info_T *qi = &ql_info;
! if (is_loclist_cmd(eap->cmdidx))
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
***************
*** 3478,3484 ****
qf_info_T *qi = &ql_info;
int count;
! if (eap->cmdidx == CMD_lolder || eap->cmdidx == CMD_lnewer)
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
--- 3478,3484 ----
qf_info_T *qi = &ql_info;
int count;
! if (is_loclist_cmd(eap->cmdidx))
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
***************
*** 3526,3532 ****
qf_info_T *qi = &ql_info;
int i;
! if (eap->cmdidx == CMD_lhistory)
qi = GET_LOC_LIST(curwin);
if (qi == NULL || (qi->qf_listcount == 0
&& qf_list_empty(qi, qi->qf_curlist)))
--- 3526,3532 ----
qf_info_T *qi = &ql_info;
int i;
! if (is_loclist_cmd(eap->cmdidx))
qi = GET_LOC_LIST(curwin);
if (qi == NULL || (qi->qf_listcount == 0
&& qf_list_empty(qi, qi->qf_curlist)))
***************
*** 3745,3751 ****
qf_info_T *qi = &ql_info;
win_T *win;
! if (eap->cmdidx == CMD_lwindow)
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
--- 3745,3751 ----
qf_info_T *qi = &ql_info;
win_T *win;
! if (is_loclist_cmd(eap->cmdidx))
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
***************
*** 3781,3787 ****
win_T *win = NULL;
qf_info_T *qi = &ql_info;
! if (eap->cmdidx == CMD_lclose || eap->cmdidx == CMD_lwindow)
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
--- 3781,3787 ----
win_T *win = NULL;
qf_info_T *qi = &ql_info;
! if (is_loclist_cmd(eap->cmdidx))
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
***************
*** 3808,3814 ****
buf_T *qf_buf;
win_T *oldwin = curwin;
! if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
--- 3808,3814 ----
buf_T *qf_buf;
win_T *oldwin = curwin;
! if (is_loclist_cmd(eap->cmdidx))
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
***************
*** 3953,3964 ****
* :cbottom/:lbottom commands.
*/
void
! ex_cbottom(exarg_T *eap UNUSED)
{
qf_info_T *qi = &ql_info;
win_T *win;
! if (eap->cmdidx == CMD_lbottom)
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
--- 3953,3964 ----
* :cbottom/:lbottom commands.
*/
void
! ex_cbottom(exarg_T *eap)
{
qf_info_T *qi = &ql_info;
win_T *win;
! if (is_loclist_cmd(eap->cmdidx))
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
***************
*** 4430,4437 ****
enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
#endif
! if (eap->cmdidx == CMD_lmake || eap->cmdidx == CMD_lgrep
! || eap->cmdidx == CMD_lgrepadd)
wp = curwin;
autowrite_all();
--- 4430,4436 ----
enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
#endif
! if (is_loclist_cmd(eap->cmdidx))
wp = curwin;
autowrite_all();
***************
*** 4570,4576 ****
int i, sz = 0;
int prev_fnum = 0;
! if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo)
{
/* Location list */
qi = GET_LOC_LIST(curwin);
--- 4569,4575 ----
int i, sz = 0;
int prev_fnum = 0;
! if (is_loclist_cmd(eap->cmdidx))
{
/* Location list */
qi = GET_LOC_LIST(curwin);
***************
*** 4607,4613 ****
{
qf_info_T *qi = &ql_info;
! if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo)
{
/* Location list */
qi = GET_LOC_LIST(curwin);
--- 4606,4612 ----
{
qf_info_T *qi = &ql_info;
! if (is_loclist_cmd(eap->cmdidx))
{
/* Location list */
qi = GET_LOC_LIST(curwin);
***************
*** 4631,4637 ****
int i, eidx = 0;
int prev_fnum = 0;
! if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo)
{
/* Location list */
qi = GET_LOC_LIST(curwin);
--- 4630,4636 ----
int i, eidx = 0;
int prev_fnum = 0;
! if (is_loclist_cmd(eap->cmdidx))
{
/* Location list */
qi = GET_LOC_LIST(curwin);
***************
*** 4724,4735 ****
qf_info_T *qi = &ql_info;
int errornr;
! if (eap->cmdidx == CMD_ll
! || eap->cmdidx == CMD_lrewind
! || eap->cmdidx == CMD_lfirst
! || eap->cmdidx == CMD_llast
! || eap->cmdidx == CMD_ldo
! || eap->cmdidx == CMD_lfdo)
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
--- 4723,4729 ----
qf_info_T *qi = &ql_info;
int errornr;
! if (is_loclist_cmd(eap->cmdidx))
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
***************
*** 4743,4755 ****
errornr = (int)eap->line2;
else
{
! if (eap->cmdidx == CMD_cc || eap->cmdidx == CMD_ll)
! errornr = 0;
! else if (eap->cmdidx == CMD_crewind || eap->cmdidx == CMD_lrewind
! || eap->cmdidx == CMD_cfirst || eap->cmdidx == CMD_lfirst)
! errornr = 1;
! else
! errornr = 32767;
}
/* For cdo and ldo commands, jump to the nth valid error.
--- 4737,4754 ----
errornr = (int)eap->line2;
else
{
! switch (eap->cmdidx)
! {
! case CMD_cc: case CMD_ll:
! errornr = 0;
! break;
! case CMD_crewind: case CMD_lrewind: case CMD_cfirst:
! case CMD_lfirst:
! errornr = 1;
! break;
! default:
! errornr = 32767;
! }
}
/* For cdo and ldo commands, jump to the nth valid error.
***************
*** 4774,4788 ****
{
qf_info_T *qi = &ql_info;
int errornr;
! if (eap->cmdidx == CMD_lnext
! || eap->cmdidx == CMD_lNext
! || eap->cmdidx == CMD_lprevious
! || eap->cmdidx == CMD_lnfile
! || eap->cmdidx == CMD_lNfile
! || eap->cmdidx == CMD_lpfile
! || eap->cmdidx == CMD_ldo
! || eap->cmdidx == CMD_lfdo)
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
--- 4773,4781 ----
{
qf_info_T *qi = &ql_info;
int errornr;
+ int dir;
! if (is_loclist_cmd(eap->cmdidx))
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
***************
*** 4799,4815 ****
else
errornr = 1;
! qf_jump(qi, (eap->cmdidx == CMD_cnext || eap->cmdidx == CMD_lnext
! || eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo)
! ? FORWARD
! : (eap->cmdidx == CMD_cnfile || eap->cmdidx == CMD_lnfile
! || eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo)
! ? FORWARD_FILE
! : (eap->cmdidx == CMD_cpfile || eap->cmdidx == CMD_lpfile
! || eap->cmdidx == CMD_cNfile || eap->cmdidx == CMD_lNfile)
! ? BACKWARD_FILE
! : BACKWARD,
! errornr, eap->forceit);
}
/*
--- 4792,4819 ----
else
errornr = 1;
! // Depending on the command jump to either next or previous entry/file.
! switch (eap->cmdidx)
! {
! case CMD_cnext: case CMD_lnext: case CMD_cdo: case CMD_ldo:
! dir = FORWARD;
! break;
! case CMD_cprevious: case CMD_lprevious: case CMD_cNext:
! case CMD_lNext:
! dir = BACKWARD;
! break;
! case CMD_cnfile: case CMD_lnfile: case CMD_cfdo: case CMD_lfdo:
! dir = FORWARD_FILE;
! break;
! case CMD_cpfile: case CMD_lpfile: case CMD_cNfile: case CMD_lNfile:
! dir = BACKWARD_FILE;
! break;
! default:
! dir = FORWARD;
! break;
! }
!
! qf_jump(qi, dir, errornr, eap->forceit);
}
/*
***************
*** 4857,4865 ****
if (*eap->arg != NUL)
set_string_option_direct((char_u *)"ef", -1, eap->arg, OPT_FREE, 0);
! if (eap->cmdidx == CMD_lfile
! || eap->cmdidx == CMD_lgetfile
! || eap->cmdidx == CMD_laddfile)
wp = curwin;
/*
--- 4861,4867 ----
if (*eap->arg != NUL)
set_string_option_direct((char_u *)"ef", -1, eap->arg, OPT_FREE, 0);
! if (is_loclist_cmd(eap->cmdidx))
wp = curwin;
/*
***************
*** 5178,5187 ****
#endif
}
! if (eap->cmdidx == CMD_lgrep
! || eap->cmdidx == CMD_lvimgrep
! || eap->cmdidx == CMD_lgrepadd
! || eap->cmdidx == CMD_lvimgrepadd)
{
qi = ll_get_or_alloc_list(curwin);
if (qi == NULL)
--- 5180,5186 ----
#endif
}
! if (is_loclist_cmd(eap->cmdidx))
{
qi = ll_get_or_alloc_list(curwin);
if (qi == NULL)
***************
*** 6525,6533 ****
}
/* Must come after autocommands. */
! if (eap->cmdidx == CMD_lbuffer
! || eap->cmdidx == CMD_lgetbuffer
! || eap->cmdidx == CMD_laddbuffer)
{
qi = ll_get_or_alloc_list(curwin);
if (qi == NULL)
--- 6524,6530 ----
}
/* Must come after autocommands. */
! if (is_loclist_cmd(eap->cmdidx))
{
qi = ll_get_or_alloc_list(curwin);
if (qi == NULL)
***************
*** 6631,6639 ****
#endif
}
! if (eap->cmdidx == CMD_lexpr
! || eap->cmdidx == CMD_lgetexpr
! || eap->cmdidx == CMD_laddexpr)
{
qi = ll_get_or_alloc_list(curwin);
if (qi == NULL)
--- 6628,6634 ----
#endif
}
! if (is_loclist_cmd(eap->cmdidx))
{
qi = ll_get_or_alloc_list(curwin);
if (qi == NULL)
***************
*** 6922,6928 ****
save_cpo = p_cpo;
p_cpo = empty_option;
! if (eap->cmdidx == CMD_lhelpgrep)
{
qi = hgr_get_ll(&new_qi);
if (qi == NULL)
--- 6917,6923 ----
save_cpo = p_cpo;
p_cpo = empty_option;
! if (is_loclist_cmd(eap->cmdidx))
{
qi = hgr_get_ll(&new_qi);
if (qi == NULL)
*** ../vim-8.1.0287/src/version.c 2018-08-14 22:08:20.211616525 +0200
--- src/version.c 2018-08-15 20:51:09.609828450 +0200
***************
*** 796,797 ****
--- 796,799 ----
{ /* Add new patch number below this line */
+ /**/
+ 288,
/**/
--
INSPECTOR END OF FILM: Move along. There's nothing to see! Keep moving!
[Suddenly he notices the cameras.]
INSPECTOR END OF FILM: (to Camera) All right, put that away sonny.
[He walks over to it and puts his hand over the lens.]
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// 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.