mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.1.0288: quickfix code uses cmdidx too often
Problem: Quickfix code uses cmdidx too often.
Solution: Add is_loclist_cmd(). (Yegappan Lakshmanan)
396659592f
This commit is contained in:
@@ -10139,6 +10139,17 @@ static void ex_folddo(exarg_T *eap)
|
||||
ml_clearmarked(); // clear rest of the marks
|
||||
}
|
||||
|
||||
// Returns true if the supplied Ex cmdidx is for a location list command
|
||||
// instead of a quickfix command.
|
||||
bool is_loclist_cmd(int cmdidx)
|
||||
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
if (cmdidx < 0 || cmdidx > CMD_SIZE) {
|
||||
return false;
|
||||
}
|
||||
return cmdnames[cmdidx].cmd_name[0] == 'l';
|
||||
}
|
||||
|
||||
bool get_pressedreturn(void)
|
||||
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
|
||||
@@ -2647,7 +2647,7 @@ void qf_list(exarg_T *eap)
|
||||
// recognised errors
|
||||
qf_info_T *qi = &ql_info;
|
||||
|
||||
if (eap->cmdidx == CMD_llist) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL) {
|
||||
EMSG(_(e_loclist));
|
||||
@@ -2856,7 +2856,7 @@ void qf_age(exarg_T *eap)
|
||||
qf_info_T *qi = &ql_info;
|
||||
int count;
|
||||
|
||||
if (eap->cmdidx == CMD_lolder || eap->cmdidx == CMD_lnewer) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL) {
|
||||
EMSG(_(e_loclist));
|
||||
@@ -2895,7 +2895,7 @@ void qf_history(exarg_T *eap)
|
||||
qf_info_T *qi = &ql_info;
|
||||
int i;
|
||||
|
||||
if (eap->cmdidx == CMD_lhistory) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
}
|
||||
if (qi == NULL || (qi->qf_listcount == 0
|
||||
@@ -3097,7 +3097,7 @@ void ex_cwindow(exarg_T *eap)
|
||||
qf_info_T *qi = &ql_info;
|
||||
win_T *win;
|
||||
|
||||
if (eap->cmdidx == CMD_lwindow) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL)
|
||||
return;
|
||||
@@ -3129,7 +3129,7 @@ void ex_cclose(exarg_T *eap)
|
||||
win_T *win = NULL;
|
||||
qf_info_T *qi = &ql_info;
|
||||
|
||||
if (eap->cmdidx == CMD_lclose || eap->cmdidx == CMD_lwindow) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL)
|
||||
return;
|
||||
@@ -3155,7 +3155,7 @@ void ex_copen(exarg_T *eap)
|
||||
buf_T *qf_buf;
|
||||
win_T *oldwin = curwin;
|
||||
|
||||
if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL) {
|
||||
EMSG(_(e_loclist));
|
||||
@@ -3284,7 +3284,7 @@ void ex_cbottom(exarg_T *eap)
|
||||
{
|
||||
qf_info_T *qi = &ql_info;
|
||||
|
||||
if (eap->cmdidx == CMD_lbottom) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL) {
|
||||
EMSG(_(e_loclist));
|
||||
@@ -3700,9 +3700,9 @@ void ex_make(exarg_T *eap)
|
||||
}
|
||||
}
|
||||
|
||||
if (eap->cmdidx == CMD_lmake || eap->cmdidx == CMD_lgrep
|
||||
|| eap->cmdidx == CMD_lgrepadd)
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
wp = curwin;
|
||||
}
|
||||
|
||||
autowrite_all();
|
||||
fname = get_mef_name();
|
||||
@@ -3817,7 +3817,7 @@ size_t qf_get_size(exarg_T *eap)
|
||||
FUNC_ATTR_NONNULL_ALL
|
||||
{
|
||||
qf_info_T *qi = &ql_info;
|
||||
if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
// Location list.
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL) {
|
||||
@@ -3857,7 +3857,7 @@ size_t qf_get_cur_idx(exarg_T *eap)
|
||||
{
|
||||
qf_info_T *qi = &ql_info;
|
||||
|
||||
if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
// Location list.
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL) {
|
||||
@@ -3877,7 +3877,7 @@ int qf_get_cur_valid_idx(exarg_T *eap)
|
||||
{
|
||||
qf_info_T *qi = &ql_info;
|
||||
|
||||
if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
// Location list.
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL) {
|
||||
@@ -3970,12 +3970,7 @@ void ex_cc(exarg_T *eap)
|
||||
{
|
||||
qf_info_T *qi = &ql_info;
|
||||
|
||||
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) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL) {
|
||||
EMSG(_(e_loclist));
|
||||
@@ -3986,13 +3981,22 @@ void ex_cc(exarg_T *eap)
|
||||
int errornr;
|
||||
if (eap->addr_count > 0) {
|
||||
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;
|
||||
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;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// For cdo and ldo commands, jump to the nth valid error.
|
||||
@@ -4024,14 +4028,7 @@ void ex_cnext(exarg_T *eap)
|
||||
{
|
||||
qf_info_T *qi = &ql_info;
|
||||
|
||||
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) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = GET_LOC_LIST(curwin);
|
||||
if (qi == NULL) {
|
||||
EMSG(_(e_loclist));
|
||||
@@ -4048,17 +4045,37 @@ void ex_cnext(exarg_T *eap)
|
||||
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);
|
||||
// Depending on the command jump to either next or previous entry/file.
|
||||
Direction dir;
|
||||
switch (eap->cmdidx) {
|
||||
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;
|
||||
case CMD_cnext:
|
||||
case CMD_lnext:
|
||||
case CMD_cdo:
|
||||
case CMD_ldo:
|
||||
default:
|
||||
dir = FORWARD;
|
||||
break;
|
||||
}
|
||||
|
||||
qf_jump(qi, dir, errornr, eap->forceit);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -4087,9 +4104,7 @@ void ex_cfile(exarg_T *eap)
|
||||
|
||||
char_u *enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
|
||||
|
||||
if (eap->cmdidx == CMD_lfile
|
||||
|| eap->cmdidx == CMD_lgetfile
|
||||
|| eap->cmdidx == CMD_laddfile) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
wp = curwin;
|
||||
}
|
||||
|
||||
@@ -4346,10 +4361,7 @@ void ex_vimgrep(exarg_T *eap)
|
||||
}
|
||||
}
|
||||
|
||||
if (eap->cmdidx == CMD_lgrep
|
||||
|| eap->cmdidx == CMD_lvimgrep
|
||||
|| eap->cmdidx == CMD_lgrepadd
|
||||
|| eap->cmdidx == CMD_lvimgrepadd) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = ll_get_or_alloc_list(curwin);
|
||||
wp = curwin;
|
||||
}
|
||||
@@ -5575,9 +5587,7 @@ void ex_cbuffer(exarg_T *eap)
|
||||
}
|
||||
|
||||
// Must come after autocommands.
|
||||
if (eap->cmdidx == CMD_lbuffer
|
||||
|| eap->cmdidx == CMD_lgetbuffer
|
||||
|| eap->cmdidx == CMD_laddbuffer) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = ll_get_or_alloc_list(curwin);
|
||||
wp = curwin;
|
||||
}
|
||||
@@ -5677,9 +5687,7 @@ void ex_cexpr(exarg_T *eap)
|
||||
}
|
||||
}
|
||||
|
||||
if (eap->cmdidx == CMD_lexpr
|
||||
|| eap->cmdidx == CMD_lgetexpr
|
||||
|| eap->cmdidx == CMD_laddexpr) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = ll_get_or_alloc_list(curwin);
|
||||
wp = curwin;
|
||||
}
|
||||
@@ -5878,7 +5886,7 @@ void ex_helpgrep(exarg_T *eap)
|
||||
char_u *const save_cpo = p_cpo;
|
||||
p_cpo = empty_option;
|
||||
|
||||
if (eap->cmdidx == CMD_lhelpgrep) {
|
||||
if (is_loclist_cmd(eap->cmdidx)) {
|
||||
qi = hgr_get_ll(&new_qi);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user