summaryrefslogtreecommitdiff
path: root/src/quickfix.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-03-04 18:08:14 +0100
committerBram Moolenaar <Bram@vim.org>2018-03-04 18:08:14 +0100
commitf2bd8ef2b4507d02c6043affff8f7e85e3414d5f (patch)
treef14cb8e7ff09975920f3a813d7de4851a2972661 /src/quickfix.c
parent3f54fd319f6641b4bed478bcc90cdb39ede68e31 (diff)
downloadvim-git-f2bd8ef2b4507d02c6043affff8f7e85e3414d5f.tar.gz
patch 8.0.1564: too many #ifdefsv8.0.1564
Problem: Too many #ifdefs. Solution: Graduate the +autocmd feature. Takes away 450 #ifdefs and increases code size of tiny Vim by only 40 Kbyte.
Diffstat (limited to 'src/quickfix.c')
-rw-r--r--src/quickfix.c77
1 files changed, 17 insertions, 60 deletions
diff --git a/src/quickfix.c b/src/quickfix.c
index 803081038..23cb92696 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -3626,13 +3626,10 @@ qf_fill_buffer(qf_info_T *qi, buf_T *buf, qfline_T *old_last)
/* Set the 'filetype' to "qf" each time after filling the buffer.
* This resembles reading a file into a buffer, it's more logical when
* using autocommands. */
-#ifdef FEAT_AUTOCMD
++curbuf_lock;
-#endif
set_option_value((char_u *)"ft", 0L, (char_u *)"qf", OPT_LOCAL);
curbuf->b_p_ma = FALSE;
-#ifdef FEAT_AUTOCMD
keep_filetype = TRUE; /* don't detect 'filetype' */
apply_autocmds(EVENT_BUFREADPOST, (char_u *)"quickfix", NULL,
FALSE, curbuf);
@@ -3640,7 +3637,7 @@ qf_fill_buffer(qf_info_T *qi, buf_T *buf, qfline_T *old_last)
FALSE, curbuf);
keep_filetype = FALSE;
--curbuf_lock;
-#endif
+
/* make sure it will be redrawn */
redraw_curbuf_later(NOT_VALID);
}
@@ -3682,7 +3679,6 @@ ex_make(exarg_T *eap)
win_T *wp = NULL;
qf_info_T *qi = &ql_info;
int res;
-#ifdef FEAT_AUTOCMD
char_u *au_name = NULL;
/* Redirect ":grep" to ":vimgrep" if 'grepprg' is "internal". */
@@ -3705,12 +3701,11 @@ ex_make(exarg_T *eap)
if (au_name != NULL && apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
curbuf->b_fname, TRUE, curbuf))
{
-# ifdef FEAT_EVAL
+#ifdef FEAT_EVAL
if (aborting())
return;
-# endif
- }
#endif
+ }
#ifdef FEAT_MBYTE
enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
#endif
@@ -3766,7 +3761,6 @@ ex_make(exarg_T *eap)
qi = GET_LOC_LIST(wp);
if (res >= 0 && qi != NULL)
qf_list_changed(qi, qi->qf_curlist);
-#ifdef FEAT_AUTOCMD
if (au_name != NULL)
{
apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
@@ -3776,7 +3770,6 @@ ex_make(exarg_T *eap)
else
res = 0;
}
-#endif
if (res > 0 && !eap->forceit)
qf_jump(qi, 0, 0, FALSE); /* display first error */
@@ -4105,13 +4098,10 @@ ex_cfile(exarg_T *eap)
char_u *enc = NULL;
win_T *wp = NULL;
qf_info_T *qi = &ql_info;
-#ifdef FEAT_AUTOCMD
char_u *au_name = NULL;
int save_qfid;
-#endif
int res;
-#ifdef FEAT_AUTOCMD
switch (eap->cmdidx)
{
case CMD_cfile: au_name = (char_u *)"cfile"; break;
@@ -4124,7 +4114,6 @@ ex_cfile(exarg_T *eap)
}
if (au_name != NULL)
apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, FALSE, curbuf);
-#endif
#ifdef FEAT_MBYTE
enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
#endif
@@ -4164,7 +4153,6 @@ ex_cfile(exarg_T *eap)
qi = GET_LOC_LIST(wp);
if (res >= 0 && qi != NULL)
qf_list_changed(qi, qi->qf_curlist);
-#ifdef FEAT_AUTOCMD
if (qi != NULL)
save_qfid = qi->qf_lists[qi->qf_curlist].qf_id;
if (au_name != NULL)
@@ -4174,7 +4162,6 @@ ex_cfile(exarg_T *eap)
* is still valid. */
if (qi != NULL && !qflist_valid(wp, save_qfid))
return;
-#endif
if (res > 0 && (eap->cmdidx == CMD_cfile || eap->cmdidx == CMD_lfile))
qf_jump(qi, 0, 0, eap->forceit); /* display first error */
}
@@ -4198,11 +4185,9 @@ ex_vimgrep(exarg_T *eap)
int fi;
qf_info_T *qi = &ql_info;
int loclist_cmd = FALSE;
-#ifdef FEAT_AUTOCMD
int_u save_qfid;
qfline_T *cur_qf_start;
win_T *wp;
-#endif
long lnum;
buf_T *buf;
int duplicate_name = FALSE;
@@ -4212,7 +4197,7 @@ ex_vimgrep(exarg_T *eap)
buf_T *first_match_buf = NULL;
time_t seconds = 0;
int save_mls;
-#if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL)
+#if defined(FEAT_SYN_HL)
char_u *save_ei = NULL;
#endif
aco_save_T aco;
@@ -4222,7 +4207,6 @@ ex_vimgrep(exarg_T *eap)
char_u *dirname_start = NULL;
char_u *dirname_now = NULL;
char_u *target_dir = NULL;
-#ifdef FEAT_AUTOCMD
char_u *au_name = NULL;
switch (eap->cmdidx)
@@ -4240,12 +4224,11 @@ ex_vimgrep(exarg_T *eap)
if (au_name != NULL && apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
curbuf->b_fname, TRUE, curbuf))
{
-# ifdef FEAT_EVAL
+#ifdef FEAT_EVAL
if (aborting())
return;
-# endif
- }
#endif
+ }
if (eap->cmdidx == CMD_lgrep
|| eap->cmdidx == CMD_lvimgrep
@@ -4325,12 +4308,10 @@ ex_vimgrep(exarg_T *eap)
* ":lcd %:p:h" changes the meaning of short path names. */
mch_dirname(dirname_start, MAXPATHL);
-#ifdef FEAT_AUTOCMD
/* Remember the current values of the quickfix list and qf_start, so that
* we can check for autocommands changing the current quickfix list. */
save_qfid = qi->qf_lists[qi->qf_curlist].qf_id;
cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start;
-#endif
seconds = (time_t)0;
for (fi = 0; fi < fcount && !got_int && tomatch > 0; ++fi)
@@ -4365,7 +4346,7 @@ ex_vimgrep(exarg_T *eap)
using_dummy = TRUE;
redraw_for_dummy = TRUE;
-#if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL)
+#if defined(FEAT_SYN_HL)
/* Don't do Filetype autocommands to avoid loading syntax and
* indent scripts, a great speed improvement. */
save_ei = au_event_disable(",Filetype");
@@ -4379,7 +4360,7 @@ ex_vimgrep(exarg_T *eap)
buf = load_dummy_buffer(fname, dirname_start, dirname_now);
p_mls = save_mls;
-#if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL)
+#if defined(FEAT_SYN_HL)
au_event_restore(save_ei);
#endif
}
@@ -4387,7 +4368,6 @@ ex_vimgrep(exarg_T *eap)
/* Use existing, loaded buffer. */
using_dummy = FALSE;
-#ifdef FEAT_AUTOCMD
if (loclist_cmd)
{
/*
@@ -4419,7 +4399,6 @@ ex_vimgrep(exarg_T *eap)
cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start;
}
}
-#endif
if (buf == NULL)
{
@@ -4475,9 +4454,7 @@ ex_vimgrep(exarg_T *eap)
if (got_int)
break;
}
-#ifdef FEAT_AUTOCMD
cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start;
-#endif
if (using_dummy)
{
@@ -4532,7 +4509,7 @@ ex_vimgrep(exarg_T *eap)
* need to be done (again). But not the window-local
* options! */
aucmd_prepbuf(&aco, buf);
-#if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL)
+#if defined(FEAT_SYN_HL)
apply_autocmds(EVENT_FILETYPE, buf->b_p_ft,
buf->b_fname, TRUE, buf);
#endif
@@ -4552,7 +4529,6 @@ ex_vimgrep(exarg_T *eap)
qf_update_buffer(qi, NULL);
-#ifdef FEAT_AUTOCMD
if (au_name != NULL)
apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
curbuf->b_fname, TRUE, curbuf);
@@ -4563,7 +4539,6 @@ ex_vimgrep(exarg_T *eap)
wp = loclist_cmd ? curwin : NULL;
if (!qflist_valid(wp, save_qfid))
goto theend;
-#endif
/* Jump to first match. */
if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
@@ -4748,7 +4723,7 @@ wipe_dummy_buffer(buf_T *buf, char_u *dirname_start)
{
if (curbuf != buf) /* safety check */
{
-#if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
+#if defined(FEAT_EVAL)
cleanup_T cs;
/* Reset the error/interrupt/exception state here so that aborting()
@@ -4759,7 +4734,7 @@ wipe_dummy_buffer(buf_T *buf, char_u *dirname_start)
wipe_buffer(buf, FALSE);
-#if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
+#if defined(FEAT_EVAL)
/* Restore the error/interrupt/exception state if not discarded by a
* new aborting error, interrupt, or uncaught exception. */
leave_cleanup(&cs);
@@ -5598,12 +5573,9 @@ ex_cbuffer(exarg_T *eap)
{
buf_T *buf = NULL;
qf_info_T *qi = &ql_info;
-#ifdef FEAT_AUTOCMD
char_u *au_name = NULL;
-#endif
int res;
-#ifdef FEAT_AUTOCMD
switch (eap->cmdidx)
{
case CMD_cbuffer: au_name = (char_u *)"cbuffer"; break;
@@ -5617,12 +5589,11 @@ ex_cbuffer(exarg_T *eap)
if (au_name != NULL && apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
curbuf->b_fname, TRUE, curbuf))
{
-# ifdef FEAT_EVAL
+#ifdef FEAT_EVAL
if (aborting())
return;
-# endif
- }
#endif
+ }
/* Must come after autocommands. */
if (eap->cmdidx == CMD_lbuffer
@@ -5670,11 +5641,9 @@ ex_cbuffer(exarg_T *eap)
qf_title, NULL);
if (res >= 0)
qf_list_changed(qi, qi->qf_curlist);
-#ifdef FEAT_AUTOCMD
if (au_name != NULL)
apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
curbuf->b_fname, TRUE, curbuf);
-#endif
if (res > 0 && (eap->cmdidx == CMD_cbuffer ||
eap->cmdidx == CMD_lbuffer))
qf_jump(qi, 0, 0, eap->forceit); /* display first error */
@@ -5692,12 +5661,9 @@ ex_cexpr(exarg_T *eap)
{
typval_T *tv;
qf_info_T *qi = &ql_info;
-#ifdef FEAT_AUTOCMD
char_u *au_name = NULL;
-#endif
int res;
-#ifdef FEAT_AUTOCMD
switch (eap->cmdidx)
{
case CMD_cexpr: au_name = (char_u *)"cexpr"; break;
@@ -5711,12 +5677,11 @@ ex_cexpr(exarg_T *eap)
if (au_name != NULL && apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
curbuf->b_fname, TRUE, curbuf))
{
-# ifdef FEAT_EVAL
+#ifdef FEAT_EVAL
if (aborting())
return;
-# endif
- }
#endif
+ }
if (eap->cmdidx == CMD_lexpr
|| eap->cmdidx == CMD_lgetexpr
@@ -5742,11 +5707,9 @@ ex_cexpr(exarg_T *eap)
NULL);
if (res >= 0)
qf_list_changed(qi, qi->qf_curlist);
-#ifdef FEAT_AUTOCMD
if (au_name != NULL)
apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
curbuf->b_fname, TRUE, curbuf);
-#endif
if (res > 0 && (eap->cmdidx == CMD_cexpr ||
eap->cmdidx == CMD_lexpr))
qf_jump(qi, 0, 0, eap->forceit); /* display first error */
@@ -5779,16 +5742,13 @@ ex_helpgrep(exarg_T *eap)
qf_info_T *save_qi;
int new_qi = FALSE;
win_T *wp;
-#ifdef FEAT_AUTOCMD
char_u *au_name = NULL;
-#endif
#ifdef FEAT_MULTI_LANG
/* Check for a specified language */
lang = check_help_lang(eap->arg);
#endif
-#ifdef FEAT_AUTOCMD
switch (eap->cmdidx)
{
case CMD_helpgrep: au_name = (char_u *)"helpgrep"; break;
@@ -5798,12 +5758,11 @@ ex_helpgrep(exarg_T *eap)
if (au_name != NULL && apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
curbuf->b_fname, TRUE, curbuf))
{
-# ifdef FEAT_EVAL
+#ifdef FEAT_EVAL
if (aborting())
return;
-# endif
- }
#endif
+ }
/* Make 'cpoptions' empty, the 'l' flag should not be used here. */
save_cpo = p_cpo;
@@ -5965,7 +5924,6 @@ ex_helpgrep(exarg_T *eap)
qf_list_changed(qi, qi->qf_curlist);
qf_update_buffer(qi, NULL);
-#ifdef FEAT_AUTOCMD
if (au_name != NULL)
{
apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
@@ -5974,7 +5932,6 @@ ex_helpgrep(exarg_T *eap)
/* autocommands made "qi" invalid */
return;
}
-#endif
/* Jump to first match. */
if (qi->qf_lists[qi->qf_curlist].qf_count > 0)