Mercurial > vim
comparison src/quickfix.c @ 665:21ab9abf0f08
updated for version 7.0196
author | vimboss |
---|---|
date | Fri, 10 Feb 2006 23:20:28 +0000 |
parents | e93a99ef31d0 |
children | e649c78407e6 |
comparison
equal
deleted
inserted
replaced
664:ce5a759cc907 | 665:21ab9abf0f08 |
---|---|
123 #endif | 123 #endif |
124 static char_u *get_mef_name __ARGS((void)); | 124 static char_u *get_mef_name __ARGS((void)); |
125 static buf_T *load_dummy_buffer __ARGS((char_u *fname)); | 125 static buf_T *load_dummy_buffer __ARGS((char_u *fname)); |
126 static void wipe_dummy_buffer __ARGS((buf_T *buf)); | 126 static void wipe_dummy_buffer __ARGS((buf_T *buf)); |
127 static void unload_dummy_buffer __ARGS((buf_T *buf)); | 127 static void unload_dummy_buffer __ARGS((buf_T *buf)); |
128 static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *)); | |
128 | 129 |
129 /* Quickfix window check helper macro */ | 130 /* Quickfix window check helper macro */ |
130 #define IS_QF_WINDOW(wp) (bt_quickfix(wp->w_buffer) && wp->w_llist_ref == NULL) | 131 #define IS_QF_WINDOW(wp) (bt_quickfix(wp->w_buffer) && wp->w_llist_ref == NULL) |
131 /* Location list window check helper macro */ | 132 /* Location list window check helper macro */ |
132 #define IS_LL_WINDOW(wp) (bt_quickfix(wp->w_buffer) && wp->w_llist_ref != NULL) | 133 #define IS_LL_WINDOW(wp) (bt_quickfix(wp->w_buffer) && wp->w_llist_ref != NULL) |
152 | 153 |
153 if (efile == NULL) | 154 if (efile == NULL) |
154 return FAIL; | 155 return FAIL; |
155 | 156 |
156 if (wp != NULL) | 157 if (wp != NULL) |
157 qi = GET_LOC_LIST(wp); | 158 { |
159 qi = ll_get_or_alloc_list(wp); | |
160 if (qi == NULL) | |
161 return FAIL; | |
162 } | |
158 | 163 |
159 return qf_init_ext(qi, efile, curbuf, NULL, errorformat, newlist, | 164 return qf_init_ext(qi, efile, curbuf, NULL, errorformat, newlist, |
160 (linenr_T)0, (linenr_T)0); | 165 (linenr_T)0, (linenr_T)0); |
161 } | 166 } |
162 | 167 |
2626 return; | 2631 return; |
2627 } | 2632 } |
2628 | 2633 |
2629 if (eap->cmdidx == CMD_lmake || eap->cmdidx == CMD_lgrep | 2634 if (eap->cmdidx == CMD_lmake || eap->cmdidx == CMD_lgrep |
2630 || eap->cmdidx == CMD_lgrepadd) | 2635 || eap->cmdidx == CMD_lgrepadd) |
2631 { | |
2632 qi = ll_get_or_alloc_list(curwin); | |
2633 if (qi == NULL) | |
2634 return; | |
2635 wp = curwin; | 2636 wp = curwin; |
2636 } | |
2637 | 2637 |
2638 autowrite_all(); | 2638 autowrite_all(); |
2639 fname = get_mef_name(); | 2639 fname = get_mef_name(); |
2640 if (fname == NULL) | 2640 if (fname == NULL) |
2641 return; | 2641 return; |
2676 if (qf_init(wp, fname, (eap->cmdidx != CMD_make | 2676 if (qf_init(wp, fname, (eap->cmdidx != CMD_make |
2677 && eap->cmdidx != CMD_lmake) ? p_gefm : p_efm, | 2677 && eap->cmdidx != CMD_lmake) ? p_gefm : p_efm, |
2678 (eap->cmdidx != CMD_grepadd | 2678 (eap->cmdidx != CMD_grepadd |
2679 && eap->cmdidx != CMD_lgrepadd)) > 0 | 2679 && eap->cmdidx != CMD_lgrepadd)) > 0 |
2680 && !eap->forceit) | 2680 && !eap->forceit) |
2681 { | |
2682 if (wp != NULL) | |
2683 qi = GET_LOC_LIST(wp); | |
2681 qf_jump(qi, 0, 0, FALSE); /* display first error */ | 2684 qf_jump(qi, 0, 0, FALSE); /* display first error */ |
2685 } | |
2682 | 2686 |
2683 mch_remove(fname); | 2687 mch_remove(fname); |
2684 vim_free(fname); | 2688 vim_free(fname); |
2685 vim_free(cmd); | 2689 vim_free(cmd); |
2686 | 2690 |
2830 win_T *wp = NULL; | 2834 win_T *wp = NULL; |
2831 qf_info_T *qi = &ql_info; | 2835 qf_info_T *qi = &ql_info; |
2832 | 2836 |
2833 if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile | 2837 if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile |
2834 || eap->cmdidx == CMD_laddfile) | 2838 || eap->cmdidx == CMD_laddfile) |
2835 { | |
2836 qi = ll_get_or_alloc_list(curwin); | |
2837 if (qi == NULL) | |
2838 return; | |
2839 wp = curwin; | 2839 wp = curwin; |
2840 } | |
2841 | 2840 |
2842 if (*eap->arg != NUL) | 2841 if (*eap->arg != NUL) |
2843 set_string_option_direct((char_u *)"ef", -1, eap->arg, OPT_FREE); | 2842 set_string_option_direct((char_u *)"ef", -1, eap->arg, OPT_FREE); |
2844 | 2843 |
2845 /* | 2844 /* |
2854 */ | 2853 */ |
2855 if (qf_init(wp, p_ef, p_efm, (eap->cmdidx != CMD_caddfile | 2854 if (qf_init(wp, p_ef, p_efm, (eap->cmdidx != CMD_caddfile |
2856 && eap->cmdidx != CMD_laddfile)) > 0 | 2855 && eap->cmdidx != CMD_laddfile)) > 0 |
2857 && (eap->cmdidx == CMD_cfile | 2856 && (eap->cmdidx == CMD_cfile |
2858 || eap->cmdidx == CMD_lfile)) | 2857 || eap->cmdidx == CMD_lfile)) |
2858 { | |
2859 if (wp != NULL) | |
2860 qi = GET_LOC_LIST(wp); | |
2859 qf_jump(qi, 0, 0, eap->forceit); /* display first error */ | 2861 qf_jump(qi, 0, 0, eap->forceit); /* display first error */ |
2862 } | |
2860 } | 2863 } |
2861 | 2864 |
2862 /* | 2865 /* |
2863 * ":vimgrep {pattern} file(s)" | 2866 * ":vimgrep {pattern} file(s)" |
2864 * ":vimgrepadd {pattern} file(s)" | 2867 * ":vimgrepadd {pattern} file(s)" |
3515 if (tv != NULL) | 3518 if (tv != NULL) |
3516 { | 3519 { |
3517 if ((tv->v_type == VAR_STRING && tv->vval.v_string != NULL) | 3520 if ((tv->v_type == VAR_STRING && tv->vval.v_string != NULL) |
3518 || (tv->v_type == VAR_LIST && tv->vval.v_list != NULL)) | 3521 || (tv->v_type == VAR_LIST && tv->vval.v_list != NULL)) |
3519 { | 3522 { |
3520 if (qf_init_ext(qi, NULL, NULL, tv, p_efm, | 3523 int expr_cmd = (eap->cmdidx == CMD_cexpr |
3521 (eap->cmdidx == CMD_cexpr | 3524 || eap->cmdidx == CMD_lexpr); |
3522 || eap->cmdidx == CMD_lexpr), | 3525 if (qf_init_ext(qi, NULL, NULL, tv, p_efm, expr_cmd, |
3523 (linenr_T)0, (linenr_T)0) > 0 | 3526 (linenr_T)0, (linenr_T)0) > 0 |
3524 && (eap->cmdidx == CMD_cexpr || eap->cmdidx == CMD_lexpr)) | 3527 && expr_cmd) |
3525 qf_jump(qi, 0, 0, eap->forceit); /* display first error */ | 3528 qf_jump(qi, 0, 0, eap->forceit); /* display first error */ |
3526 } | 3529 } |
3527 else | 3530 else |
3528 EMSG(_("E777: String or List expected")); | 3531 EMSG(_("E777: String or List expected")); |
3529 free_tv(tv); | 3532 free_tv(tv); |