0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 9.0.0568: autocmd code is indented more than needed

Problem:    Autocmd code is indented more than needed.
Solution:   Break out sooner. (Yegappan Lakshmanan, closes #11208)
            Also in user function code.
This commit is contained in:
Yegappan Lakshmanan
2022-09-24 11:30:41 +01:00
committed by Bram Moolenaar
parent 87af60c915
commit e9dcf13a30
3 changed files with 164 additions and 157 deletions

View File

@@ -320,26 +320,26 @@ show_autocmd(AutoPat *ap, event_T event)
for (ac = ap->cmds; ac != NULL; ac = ac->next) for (ac = ap->cmds; ac != NULL; ac = ac->next)
{ {
if (ac->cmd != NULL) // skip removed commands if (ac->cmd == NULL) // skip removed commands
{ continue;
if (msg_col >= 14)
msg_putchar('\n'); if (msg_col >= 14)
msg_col = 14; msg_putchar('\n');
if (got_int) msg_col = 14;
return; if (got_int)
msg_outtrans(ac->cmd); return;
msg_outtrans(ac->cmd);
#ifdef FEAT_EVAL #ifdef FEAT_EVAL
if (p_verbose > 0) if (p_verbose > 0)
last_set_msg(ac->script_ctx); last_set_msg(ac->script_ctx);
#endif #endif
if (got_int)
return;
if (ac->next != NULL)
{
msg_putchar('\n');
if (got_int) if (got_int)
return; return;
if (ac->next != NULL)
{
msg_putchar('\n');
if (got_int)
return;
}
} }
} }
} }
@@ -492,21 +492,21 @@ au_new_group(char_u *name)
int i; int i;
i = au_find_group(name); i = au_find_group(name);
if (i == AUGROUP_ERROR) // the group doesn't exist yet, add it if (i != AUGROUP_ERROR)
{ return i;
// First try using a free entry.
for (i = 0; i < augroups.ga_len; ++i)
if (AUGROUP_NAME(i) == NULL)
break;
if (i == augroups.ga_len && ga_grow(&augroups, 1) == FAIL)
return AUGROUP_ERROR;
AUGROUP_NAME(i) = vim_strsave(name); // the group doesn't exist yet, add it. First try using a free entry.
for (i = 0; i < augroups.ga_len; ++i)
if (AUGROUP_NAME(i) == NULL) if (AUGROUP_NAME(i) == NULL)
return AUGROUP_ERROR; break;
if (i == augroups.ga_len) if (i == augroups.ga_len && ga_grow(&augroups, 1) == FAIL)
++augroups.ga_len; return AUGROUP_ERROR;
}
AUGROUP_NAME(i) = vim_strsave(name);
if (AUGROUP_NAME(i) == NULL)
return AUGROUP_ERROR;
if (i == augroups.ga_len)
++augroups.ga_len;
return i; return i;
} }
@@ -514,37 +514,41 @@ au_new_group(char_u *name)
static void static void
au_del_group(char_u *name) au_del_group(char_u *name)
{ {
int i; int i;
event_T event;
AutoPat *ap;
int in_use = FALSE;
i = au_find_group(name); i = au_find_group(name);
if (i == AUGROUP_ERROR) // the group doesn't exist if (i == AUGROUP_ERROR) // the group doesn't exist
semsg(_(e_no_such_group_str), name);
else if (i == current_augroup)
emsg(_(e_cannot_delete_current_group));
else
{ {
event_T event; semsg(_(e_no_such_group_str), name);
AutoPat *ap; return;
int in_use = FALSE;
for (event = (event_T)0; (int)event < NUM_EVENTS;
event = (event_T)((int)event + 1))
{
FOR_ALL_AUTOCMD_PATTERNS(event, ap)
if (ap->group == i && ap->pat != NULL)
{
give_warning((char_u *)_("W19: Deleting augroup that is still in use"), TRUE);
in_use = TRUE;
event = NUM_EVENTS;
break;
}
}
vim_free(AUGROUP_NAME(i));
if (in_use)
AUGROUP_NAME(i) = get_deleted_augroup();
else
AUGROUP_NAME(i) = NULL;
} }
if (i == current_augroup)
{
emsg(_(e_cannot_delete_current_group));
return;
}
for (event = (event_T)0; (int)event < NUM_EVENTS;
event = (event_T)((int)event + 1))
{
FOR_ALL_AUTOCMD_PATTERNS(event, ap)
if (ap->group == i && ap->pat != NULL)
{
give_warning((char_u *)_("W19: Deleting augroup that is still in use"), TRUE);
in_use = TRUE;
event = NUM_EVENTS;
break;
}
}
vim_free(AUGROUP_NAME(i));
if (in_use)
AUGROUP_NAME(i) = get_deleted_augroup();
else
AUGROUP_NAME(i) = NULL;
} }
/* /*
@@ -768,20 +772,23 @@ au_event_disable(char *what)
char_u *save_ei; char_u *save_ei;
save_ei = vim_strsave(p_ei); save_ei = vim_strsave(p_ei);
if (save_ei != NULL) if (save_ei == NULL)
return NULL;
new_ei = vim_strnsave(p_ei, STRLEN(p_ei) + STRLEN(what));
if (new_ei == NULL)
{ {
new_ei = vim_strnsave(p_ei, STRLEN(p_ei) + STRLEN(what)); vim_free(save_ei);
if (new_ei != NULL) return NULL;
{
if (*what == ',' && *p_ei == NUL)
STRCPY(new_ei, what + 1);
else
STRCAT(new_ei, what);
set_string_option_direct((char_u *)"ei", -1, new_ei,
OPT_FREE, SID_NONE);
vim_free(new_ei);
}
} }
if (*what == ',' && *p_ei == NUL)
STRCPY(new_ei, what + 1);
else
STRCAT(new_ei, what);
set_string_option_direct((char_u *)"ei", -1, new_ei,
OPT_FREE, SID_NONE);
vim_free(new_ei);
return save_ei; return save_ei;
} }
@@ -908,48 +915,48 @@ do_autocmd(exarg_T *eap, char_u *arg_in, int forceit)
cmd = skipwhite(cmd); cmd = skipwhite(cmd);
for (i = 0; i < 2; i++) for (i = 0; i < 2; i++)
{ {
if (*cmd != NUL) if (*cmd == NUL)
continue;
// Check for "++once" flag.
if (STRNCMP(cmd, "++once", 6) == 0 && VIM_ISWHITE(cmd[6]))
{ {
// Check for "++once" flag. if (once)
if (STRNCMP(cmd, "++once", 6) == 0 && VIM_ISWHITE(cmd[6])) semsg(_(e_duplicate_argument_str), "++once");
{ once = TRUE;
if (once) cmd = skipwhite(cmd + 6);
semsg(_(e_duplicate_argument_str), "++once"); }
once = TRUE;
cmd = skipwhite(cmd + 6);
}
// Check for "++nested" flag. // Check for "++nested" flag.
if ((STRNCMP(cmd, "++nested", 8) == 0 && VIM_ISWHITE(cmd[8]))) if ((STRNCMP(cmd, "++nested", 8) == 0 && VIM_ISWHITE(cmd[8])))
{
if (nested)
{ {
if (nested) semsg(_(e_duplicate_argument_str), "++nested");
{ return;
semsg(_(e_duplicate_argument_str), "++nested");
return;
}
nested = TRUE;
cmd = skipwhite(cmd + 8);
} }
nested = TRUE;
cmd = skipwhite(cmd + 8);
}
// Check for the old "nested" flag in legacy script. // Check for the old "nested" flag in legacy script.
if (STRNCMP(cmd, "nested", 6) == 0 && VIM_ISWHITE(cmd[6])) if (STRNCMP(cmd, "nested", 6) == 0 && VIM_ISWHITE(cmd[6]))
{
if (in_vim9script())
{ {
if (in_vim9script()) // If there ever is a :nested command this error should
{ // be removed and "nested" accepted as the start of the
// If there ever is a :nested command this error should // command.
// be removed and "nested" accepted as the start of the emsg(_(e_invalid_command_nested_did_you_mean_plusplus_nested));
// command. return;
emsg(_(e_invalid_command_nested_did_you_mean_plusplus_nested));
return;
}
if (nested)
{
semsg(_(e_duplicate_argument_str), "nested");
return;
}
nested = TRUE;
cmd = skipwhite(cmd + 6);
} }
if (nested)
{
semsg(_(e_duplicate_argument_str), "nested");
return;
}
nested = TRUE;
cmd = skipwhite(cmd + 6);
} }
} }
@@ -1407,30 +1414,30 @@ ex_doautoall(exarg_T *eap)
FOR_ALL_BUFFERS(buf) FOR_ALL_BUFFERS(buf)
{ {
// Only do loaded buffers and skip the current buffer, it's done last. // Only do loaded buffers and skip the current buffer, it's done last.
if (buf->b_ml.ml_mfp != NULL && buf != curbuf) if (buf->b_ml.ml_mfp == NULL || buf == curbuf)
continue;
// find a window for this buffer and save some values
aucmd_prepbuf(&aco, buf);
set_bufref(&bufref, buf);
// execute the autocommands for this buffer
retval = do_doautocmd(arg, FALSE, &did_aucmd);
if (call_do_modelines && did_aucmd)
// Execute the modeline settings, but don't set window-local
// options if we are using the current window for another
// buffer.
do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
// restore the current window
aucmd_restbuf(&aco);
// stop if there is some error or buffer was deleted
if (retval == FAIL || !bufref_valid(&bufref))
{ {
// find a window for this buffer and save some values retval = FAIL;
aucmd_prepbuf(&aco, buf); break;
set_bufref(&bufref, buf);
// execute the autocommands for this buffer
retval = do_doautocmd(arg, FALSE, &did_aucmd);
if (call_do_modelines && did_aucmd)
// Execute the modeline settings, but don't set window-local
// options if we are using the current window for another
// buffer.
do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
// restore the current window
aucmd_restbuf(&aco);
// stop if there is some error or buffer was deleted
if (retval == FAIL || !bufref_valid(&bufref))
{
retval = FAIL;
break;
}
} }
} }

View File

@@ -1881,7 +1881,7 @@ eval_fname_sid(char_u *p)
* In a script change <SID>name() and s:name() to K_SNR 123_name(). * In a script change <SID>name() and s:name() to K_SNR 123_name().
* Change <SNR>123_name() to K_SNR 123_name(). * Change <SNR>123_name() to K_SNR 123_name().
* Use "fname_buf[FLEN_FIXED + 1]" when it fits, otherwise allocate memory * Use "fname_buf[FLEN_FIXED + 1]" when it fits, otherwise allocate memory
* (slow). * and set "tofree".
*/ */
char_u * char_u *
fname_trans_sid(char_u *name, char_u *fname_buf, char_u **tofree, int *error) fname_trans_sid(char_u *name, char_u *fname_buf, char_u **tofree, int *error)
@@ -1891,43 +1891,41 @@ fname_trans_sid(char_u *name, char_u *fname_buf, char_u **tofree, int *error)
int i; int i;
llen = eval_fname_script(name); llen = eval_fname_script(name);
if (llen > 0) if (llen == 0)
return name; // no prefix
fname_buf[0] = K_SPECIAL;
fname_buf[1] = KS_EXTRA;
fname_buf[2] = (int)KE_SNR;
i = 3;
if (eval_fname_sid(name)) // "<SID>" or "s:"
{ {
fname_buf[0] = K_SPECIAL; if (current_sctx.sc_sid <= 0)
fname_buf[1] = KS_EXTRA; *error = FCERR_SCRIPT;
fname_buf[2] = (int)KE_SNR;
i = 3;
if (eval_fname_sid(name)) // "<SID>" or "s:"
{
if (current_sctx.sc_sid <= 0)
*error = FCERR_SCRIPT;
else
{
sprintf((char *)fname_buf + 3, "%ld_",
(long)current_sctx.sc_sid);
i = (int)STRLEN(fname_buf);
}
}
if (i + STRLEN(name + llen) < FLEN_FIXED)
{
STRCPY(fname_buf + i, name + llen);
fname = fname_buf;
}
else else
{ {
fname = alloc(i + STRLEN(name + llen) + 1); sprintf((char *)fname_buf + 3, "%ld_",
if (fname == NULL) (long)current_sctx.sc_sid);
*error = FCERR_OTHER; i = (int)STRLEN(fname_buf);
else
{
*tofree = fname;
mch_memmove(fname, fname_buf, (size_t)i);
STRCPY(fname + i, name + llen);
}
} }
} }
if (i + STRLEN(name + llen) < FLEN_FIXED)
{
STRCPY(fname_buf + i, name + llen);
fname = fname_buf;
}
else else
fname = name; {
fname = alloc(i + STRLEN(name + llen) + 1);
if (fname == NULL)
*error = FCERR_OTHER;
else
{
*tofree = fname;
mch_memmove(fname, fname_buf, (size_t)i);
STRCPY(fname + i, name + llen);
}
}
return fname; return fname;
} }

View File

@@ -699,6 +699,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
568,
/**/ /**/
567, 567,
/**/ /**/