comparison src/quickfix.c @ 14550:60b9b6196644 v8.1.0288

patch 8.1.0288: quickfix code uses cmdidx too often commit https://github.com/vim/vim/commit/396659592fe039decc8c088694912067fe32a681 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Aug 15 20:59:48 2018 +0200 patch 8.1.0288: quickfix code uses cmdidx too often Problem: Quickfix code uses cmdidx too often. Solution: Add is_loclist_cmd(). (Yegappan Lakshmanan)
author Christian Brabandt <cb@256bit.org>
date Wed, 15 Aug 2018 21:00:06 +0200
parents 5a10a0020c3e
children b298737a7188
comparison
equal deleted inserted replaced
14549:35d1645774eb 14550:60b9b6196644
3328 int plus = FALSE; 3328 int plus = FALSE;
3329 int all = eap->forceit; /* if not :cl!, only show 3329 int all = eap->forceit; /* if not :cl!, only show
3330 recognised errors */ 3330 recognised errors */
3331 qf_info_T *qi = &ql_info; 3331 qf_info_T *qi = &ql_info;
3332 3332
3333 if (eap->cmdidx == CMD_llist) 3333 if (is_loclist_cmd(eap->cmdidx))
3334 { 3334 {
3335 qi = GET_LOC_LIST(curwin); 3335 qi = GET_LOC_LIST(curwin);
3336 if (qi == NULL) 3336 if (qi == NULL)
3337 { 3337 {
3338 EMSG(_(e_loclist)); 3338 EMSG(_(e_loclist));
3476 qf_age(exarg_T *eap) 3476 qf_age(exarg_T *eap)
3477 { 3477 {
3478 qf_info_T *qi = &ql_info; 3478 qf_info_T *qi = &ql_info;
3479 int count; 3479 int count;
3480 3480
3481 if (eap->cmdidx == CMD_lolder || eap->cmdidx == CMD_lnewer) 3481 if (is_loclist_cmd(eap->cmdidx))
3482 { 3482 {
3483 qi = GET_LOC_LIST(curwin); 3483 qi = GET_LOC_LIST(curwin);
3484 if (qi == NULL) 3484 if (qi == NULL)
3485 { 3485 {
3486 EMSG(_(e_loclist)); 3486 EMSG(_(e_loclist));
3524 qf_history(exarg_T *eap) 3524 qf_history(exarg_T *eap)
3525 { 3525 {
3526 qf_info_T *qi = &ql_info; 3526 qf_info_T *qi = &ql_info;
3527 int i; 3527 int i;
3528 3528
3529 if (eap->cmdidx == CMD_lhistory) 3529 if (is_loclist_cmd(eap->cmdidx))
3530 qi = GET_LOC_LIST(curwin); 3530 qi = GET_LOC_LIST(curwin);
3531 if (qi == NULL || (qi->qf_listcount == 0 3531 if (qi == NULL || (qi->qf_listcount == 0
3532 && qf_list_empty(qi, qi->qf_curlist))) 3532 && qf_list_empty(qi, qi->qf_curlist)))
3533 MSG(_("No entries")); 3533 MSG(_("No entries"));
3534 else 3534 else
3743 ex_cwindow(exarg_T *eap) 3743 ex_cwindow(exarg_T *eap)
3744 { 3744 {
3745 qf_info_T *qi = &ql_info; 3745 qf_info_T *qi = &ql_info;
3746 win_T *win; 3746 win_T *win;
3747 3747
3748 if (eap->cmdidx == CMD_lwindow) 3748 if (is_loclist_cmd(eap->cmdidx))
3749 { 3749 {
3750 qi = GET_LOC_LIST(curwin); 3750 qi = GET_LOC_LIST(curwin);
3751 if (qi == NULL) 3751 if (qi == NULL)
3752 return; 3752 return;
3753 } 3753 }
3779 ex_cclose(exarg_T *eap) 3779 ex_cclose(exarg_T *eap)
3780 { 3780 {
3781 win_T *win = NULL; 3781 win_T *win = NULL;
3782 qf_info_T *qi = &ql_info; 3782 qf_info_T *qi = &ql_info;
3783 3783
3784 if (eap->cmdidx == CMD_lclose || eap->cmdidx == CMD_lwindow) 3784 if (is_loclist_cmd(eap->cmdidx))
3785 { 3785 {
3786 qi = GET_LOC_LIST(curwin); 3786 qi = GET_LOC_LIST(curwin);
3787 if (qi == NULL) 3787 if (qi == NULL)
3788 return; 3788 return;
3789 } 3789 }
3806 win_T *win; 3806 win_T *win;
3807 tabpage_T *prevtab = curtab; 3807 tabpage_T *prevtab = curtab;
3808 buf_T *qf_buf; 3808 buf_T *qf_buf;
3809 win_T *oldwin = curwin; 3809 win_T *oldwin = curwin;
3810 3810
3811 if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow) 3811 if (is_loclist_cmd(eap->cmdidx))
3812 { 3812 {
3813 qi = GET_LOC_LIST(curwin); 3813 qi = GET_LOC_LIST(curwin);
3814 if (qi == NULL) 3814 if (qi == NULL)
3815 { 3815 {
3816 EMSG(_(e_loclist)); 3816 EMSG(_(e_loclist));
3951 3951
3952 /* 3952 /*
3953 * :cbottom/:lbottom commands. 3953 * :cbottom/:lbottom commands.
3954 */ 3954 */
3955 void 3955 void
3956 ex_cbottom(exarg_T *eap UNUSED) 3956 ex_cbottom(exarg_T *eap)
3957 { 3957 {
3958 qf_info_T *qi = &ql_info; 3958 qf_info_T *qi = &ql_info;
3959 win_T *win; 3959 win_T *win;
3960 3960
3961 if (eap->cmdidx == CMD_lbottom) 3961 if (is_loclist_cmd(eap->cmdidx))
3962 { 3962 {
3963 qi = GET_LOC_LIST(curwin); 3963 qi = GET_LOC_LIST(curwin);
3964 if (qi == NULL) 3964 if (qi == NULL)
3965 { 3965 {
3966 EMSG(_(e_loclist)); 3966 EMSG(_(e_loclist));
4428 } 4428 }
4429 #ifdef FEAT_MBYTE 4429 #ifdef FEAT_MBYTE
4430 enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc; 4430 enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
4431 #endif 4431 #endif
4432 4432
4433 if (eap->cmdidx == CMD_lmake || eap->cmdidx == CMD_lgrep 4433 if (is_loclist_cmd(eap->cmdidx))
4434 || eap->cmdidx == CMD_lgrepadd)
4435 wp = curwin; 4434 wp = curwin;
4436 4435
4437 autowrite_all(); 4436 autowrite_all();
4438 fname = get_mef_name(); 4437 fname = get_mef_name();
4439 if (fname == NULL) 4438 if (fname == NULL)
4568 qf_info_T *qi = &ql_info; 4567 qf_info_T *qi = &ql_info;
4569 qfline_T *qfp; 4568 qfline_T *qfp;
4570 int i, sz = 0; 4569 int i, sz = 0;
4571 int prev_fnum = 0; 4570 int prev_fnum = 0;
4572 4571
4573 if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo) 4572 if (is_loclist_cmd(eap->cmdidx))
4574 { 4573 {
4575 /* Location list */ 4574 /* Location list */
4576 qi = GET_LOC_LIST(curwin); 4575 qi = GET_LOC_LIST(curwin);
4577 if (qi == NULL) 4576 if (qi == NULL)
4578 return 0; 4577 return 0;
4605 int 4604 int
4606 qf_get_cur_idx(exarg_T *eap) 4605 qf_get_cur_idx(exarg_T *eap)
4607 { 4606 {
4608 qf_info_T *qi = &ql_info; 4607 qf_info_T *qi = &ql_info;
4609 4608
4610 if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo) 4609 if (is_loclist_cmd(eap->cmdidx))
4611 { 4610 {
4612 /* Location list */ 4611 /* Location list */
4613 qi = GET_LOC_LIST(curwin); 4612 qi = GET_LOC_LIST(curwin);
4614 if (qi == NULL) 4613 if (qi == NULL)
4615 return 0; 4614 return 0;
4629 qf_list_T *qfl; 4628 qf_list_T *qfl;
4630 qfline_T *qfp; 4629 qfline_T *qfp;
4631 int i, eidx = 0; 4630 int i, eidx = 0;
4632 int prev_fnum = 0; 4631 int prev_fnum = 0;
4633 4632
4634 if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo) 4633 if (is_loclist_cmd(eap->cmdidx))
4635 { 4634 {
4636 /* Location list */ 4635 /* Location list */
4637 qi = GET_LOC_LIST(curwin); 4636 qi = GET_LOC_LIST(curwin);
4638 if (qi == NULL) 4637 if (qi == NULL)
4639 return 1; 4638 return 1;
4722 ex_cc(exarg_T *eap) 4721 ex_cc(exarg_T *eap)
4723 { 4722 {
4724 qf_info_T *qi = &ql_info; 4723 qf_info_T *qi = &ql_info;
4725 int errornr; 4724 int errornr;
4726 4725
4727 if (eap->cmdidx == CMD_ll 4726 if (is_loclist_cmd(eap->cmdidx))
4728 || eap->cmdidx == CMD_lrewind
4729 || eap->cmdidx == CMD_lfirst
4730 || eap->cmdidx == CMD_llast
4731 || eap->cmdidx == CMD_ldo
4732 || eap->cmdidx == CMD_lfdo)
4733 { 4727 {
4734 qi = GET_LOC_LIST(curwin); 4728 qi = GET_LOC_LIST(curwin);
4735 if (qi == NULL) 4729 if (qi == NULL)
4736 { 4730 {
4737 EMSG(_(e_loclist)); 4731 EMSG(_(e_loclist));
4741 4735
4742 if (eap->addr_count > 0) 4736 if (eap->addr_count > 0)
4743 errornr = (int)eap->line2; 4737 errornr = (int)eap->line2;
4744 else 4738 else
4745 { 4739 {
4746 if (eap->cmdidx == CMD_cc || eap->cmdidx == CMD_ll) 4740 switch (eap->cmdidx)
4747 errornr = 0; 4741 {
4748 else if (eap->cmdidx == CMD_crewind || eap->cmdidx == CMD_lrewind 4742 case CMD_cc: case CMD_ll:
4749 || eap->cmdidx == CMD_cfirst || eap->cmdidx == CMD_lfirst) 4743 errornr = 0;
4750 errornr = 1; 4744 break;
4751 else 4745 case CMD_crewind: case CMD_lrewind: case CMD_cfirst:
4752 errornr = 32767; 4746 case CMD_lfirst:
4747 errornr = 1;
4748 break;
4749 default:
4750 errornr = 32767;
4751 }
4753 } 4752 }
4754 4753
4755 /* For cdo and ldo commands, jump to the nth valid error. 4754 /* For cdo and ldo commands, jump to the nth valid error.
4756 * For cfdo and lfdo commands, jump to the nth valid file entry. 4755 * For cfdo and lfdo commands, jump to the nth valid file entry.
4757 */ 4756 */
4772 void 4771 void
4773 ex_cnext(exarg_T *eap) 4772 ex_cnext(exarg_T *eap)
4774 { 4773 {
4775 qf_info_T *qi = &ql_info; 4774 qf_info_T *qi = &ql_info;
4776 int errornr; 4775 int errornr;
4777 4776 int dir;
4778 if (eap->cmdidx == CMD_lnext 4777
4779 || eap->cmdidx == CMD_lNext 4778 if (is_loclist_cmd(eap->cmdidx))
4780 || eap->cmdidx == CMD_lprevious
4781 || eap->cmdidx == CMD_lnfile
4782 || eap->cmdidx == CMD_lNfile
4783 || eap->cmdidx == CMD_lpfile
4784 || eap->cmdidx == CMD_ldo
4785 || eap->cmdidx == CMD_lfdo)
4786 { 4779 {
4787 qi = GET_LOC_LIST(curwin); 4780 qi = GET_LOC_LIST(curwin);
4788 if (qi == NULL) 4781 if (qi == NULL)
4789 { 4782 {
4790 EMSG(_(e_loclist)); 4783 EMSG(_(e_loclist));
4797 && eap->cmdidx != CMD_cfdo && eap->cmdidx != CMD_lfdo)) 4790 && eap->cmdidx != CMD_cfdo && eap->cmdidx != CMD_lfdo))
4798 errornr = (int)eap->line2; 4791 errornr = (int)eap->line2;
4799 else 4792 else
4800 errornr = 1; 4793 errornr = 1;
4801 4794
4802 qf_jump(qi, (eap->cmdidx == CMD_cnext || eap->cmdidx == CMD_lnext 4795 // Depending on the command jump to either next or previous entry/file.
4803 || eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo) 4796 switch (eap->cmdidx)
4804 ? FORWARD 4797 {
4805 : (eap->cmdidx == CMD_cnfile || eap->cmdidx == CMD_lnfile 4798 case CMD_cnext: case CMD_lnext: case CMD_cdo: case CMD_ldo:
4806 || eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo) 4799 dir = FORWARD;
4807 ? FORWARD_FILE 4800 break;
4808 : (eap->cmdidx == CMD_cpfile || eap->cmdidx == CMD_lpfile 4801 case CMD_cprevious: case CMD_lprevious: case CMD_cNext:
4809 || eap->cmdidx == CMD_cNfile || eap->cmdidx == CMD_lNfile) 4802 case CMD_lNext:
4810 ? BACKWARD_FILE 4803 dir = BACKWARD;
4811 : BACKWARD, 4804 break;
4812 errornr, eap->forceit); 4805 case CMD_cnfile: case CMD_lnfile: case CMD_cfdo: case CMD_lfdo:
4806 dir = FORWARD_FILE;
4807 break;
4808 case CMD_cpfile: case CMD_lpfile: case CMD_cNfile: case CMD_lNfile:
4809 dir = BACKWARD_FILE;
4810 break;
4811 default:
4812 dir = FORWARD;
4813 break;
4814 }
4815
4816 qf_jump(qi, dir, errornr, eap->forceit);
4813 } 4817 }
4814 4818
4815 /* 4819 /*
4816 * ":cfile"/":cgetfile"/":caddfile" commands. 4820 * ":cfile"/":cgetfile"/":caddfile" commands.
4817 * ":lfile"/":lgetfile"/":laddfile" commands. 4821 * ":lfile"/":lgetfile"/":laddfile" commands.
4855 else 4859 else
4856 #endif 4860 #endif
4857 if (*eap->arg != NUL) 4861 if (*eap->arg != NUL)
4858 set_string_option_direct((char_u *)"ef", -1, eap->arg, OPT_FREE, 0); 4862 set_string_option_direct((char_u *)"ef", -1, eap->arg, OPT_FREE, 0);
4859 4863
4860 if (eap->cmdidx == CMD_lfile 4864 if (is_loclist_cmd(eap->cmdidx))
4861 || eap->cmdidx == CMD_lgetfile
4862 || eap->cmdidx == CMD_laddfile)
4863 wp = curwin; 4865 wp = curwin;
4864 4866
4865 /* 4867 /*
4866 * This function is used by the :cfile, :cgetfile and :caddfile 4868 * This function is used by the :cfile, :cgetfile and :caddfile
4867 * commands. 4869 * commands.
5176 if (aborting()) 5178 if (aborting())
5177 return; 5179 return;
5178 #endif 5180 #endif
5179 } 5181 }
5180 5182
5181 if (eap->cmdidx == CMD_lgrep 5183 if (is_loclist_cmd(eap->cmdidx))
5182 || eap->cmdidx == CMD_lvimgrep
5183 || eap->cmdidx == CMD_lgrepadd
5184 || eap->cmdidx == CMD_lvimgrepadd)
5185 { 5184 {
5186 qi = ll_get_or_alloc_list(curwin); 5185 qi = ll_get_or_alloc_list(curwin);
5187 if (qi == NULL) 5186 if (qi == NULL)
5188 return; 5187 return;
5189 wp = curwin; 5188 wp = curwin;
6523 return; 6522 return;
6524 #endif 6523 #endif
6525 } 6524 }
6526 6525
6527 /* Must come after autocommands. */ 6526 /* Must come after autocommands. */
6528 if (eap->cmdidx == CMD_lbuffer 6527 if (is_loclist_cmd(eap->cmdidx))
6529 || eap->cmdidx == CMD_lgetbuffer
6530 || eap->cmdidx == CMD_laddbuffer)
6531 { 6528 {
6532 qi = ll_get_or_alloc_list(curwin); 6529 qi = ll_get_or_alloc_list(curwin);
6533 if (qi == NULL) 6530 if (qi == NULL)
6534 return; 6531 return;
6535 wp = curwin; 6532 wp = curwin;
6629 if (aborting()) 6626 if (aborting())
6630 return; 6627 return;
6631 #endif 6628 #endif
6632 } 6629 }
6633 6630
6634 if (eap->cmdidx == CMD_lexpr 6631 if (is_loclist_cmd(eap->cmdidx))
6635 || eap->cmdidx == CMD_lgetexpr
6636 || eap->cmdidx == CMD_laddexpr)
6637 { 6632 {
6638 qi = ll_get_or_alloc_list(curwin); 6633 qi = ll_get_or_alloc_list(curwin);
6639 if (qi == NULL) 6634 if (qi == NULL)
6640 return; 6635 return;
6641 wp = curwin; 6636 wp = curwin;
6920 6915
6921 /* Make 'cpoptions' empty, the 'l' flag should not be used here. */ 6916 /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
6922 save_cpo = p_cpo; 6917 save_cpo = p_cpo;
6923 p_cpo = empty_option; 6918 p_cpo = empty_option;
6924 6919
6925 if (eap->cmdidx == CMD_lhelpgrep) 6920 if (is_loclist_cmd(eap->cmdidx))
6926 { 6921 {
6927 qi = hgr_get_ll(&new_qi); 6922 qi = hgr_get_ll(&new_qi);
6928 if (qi == NULL) 6923 if (qi == NULL)
6929 return; 6924 return;
6930 } 6925 }