}
#endif
+#if defined(FEAT_EVAL)
+/*
+ * Apply the OptionSet autocommand.
+ */
+ static void
+apply_optionset_autocmd(
+ int opt_idx,
+ long opt_flags,
+ long oldval,
+ long oldval_g,
+ long newval,
+ char *errmsg)
+{
+ char_u buf_old[12], buf_old_global[12], buf_new[12], buf_type[12];
+
+ // Don't do this while starting up, failure or recursively.
+ if (starting || errmsg != NULL || *get_vim_var_str(VV_OPTION_TYPE) != NUL)
+ return;
+
+ vim_snprintf((char *)buf_old, sizeof(buf_old), "%ld", oldval);
+ vim_snprintf((char *)buf_old_global, sizeof(buf_old_global), "%ld",
+ oldval_g);
+ vim_snprintf((char *)buf_new, sizeof(buf_new), "%ld", newval);
+ vim_snprintf((char *)buf_type, sizeof(buf_type), "%s",
+ (opt_flags & OPT_LOCAL) ? "local" : "global");
+ set_vim_var_string(VV_OPTION_NEW, buf_new, -1);
+ set_vim_var_string(VV_OPTION_OLD, buf_old, -1);
+ set_vim_var_string(VV_OPTION_TYPE, buf_type, -1);
+ if (opt_flags & OPT_LOCAL)
+ {
+ set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setlocal", -1);
+ set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1);
+ }
+ if (opt_flags & OPT_GLOBAL)
+ {
+ set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setglobal", -1);
+ set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old, -1);
+ }
+ if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)
+ {
+ set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"set", -1);
+ set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1);
+ set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old_global, -1);
+ }
+ if (opt_flags & OPT_MODELINE)
+ {
+ set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"modeline", -1);
+ set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1);
+ }
+ apply_autocmds(EVENT_OPTIONSET, (char_u *)options[opt_idx].fullname,
+ NULL, FALSE, NULL);
+ reset_v_option_vars();
+}
+#endif
+
/*
* Set the value of a boolean option, and take care of side effects.
* Returns NULL for success, or an error message for an error.
options[opt_idx].flags |= P_WAS_SET;
#if defined(FEAT_EVAL)
- // Don't do this while starting up or recursively.
- if (!starting && *get_vim_var_str(VV_OPTION_TYPE) == NUL)
- {
- char_u buf_old[2], buf_old_global[2], buf_new[2], buf_type[7];
-
- vim_snprintf((char *)buf_old, 2, "%d", old_value ? TRUE: FALSE);
- vim_snprintf((char *)buf_old_global, 2, "%d",
- old_global_value ? TRUE: FALSE);
- vim_snprintf((char *)buf_new, 2, "%d", value ? TRUE: FALSE);
- vim_snprintf((char *)buf_type, 7, "%s",
- (opt_flags & OPT_LOCAL) ? "local" : "global");
- set_vim_var_string(VV_OPTION_NEW, buf_new, -1);
- set_vim_var_string(VV_OPTION_OLD, buf_old, -1);
- set_vim_var_string(VV_OPTION_TYPE, buf_type, -1);
- if (opt_flags & OPT_LOCAL)
- {
- set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setlocal", -1);
- set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1);
- }
- if (opt_flags & OPT_GLOBAL)
- {
- set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setglobal", -1);
- set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old, -1);
- }
- if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)
- {
- set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"set", -1);
- set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1);
- set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old_global, -1);
- }
- if (opt_flags & OPT_MODELINE)
- {
- set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"modeline", -1);
- set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1);
- }
- apply_autocmds(EVENT_OPTIONSET, (char_u *)options[opt_idx].fullname,
- NULL, FALSE, NULL);
- reset_v_option_vars();
- }
+ apply_optionset_autocmd(opt_idx, opt_flags,
+ (long)(old_value ? TRUE : FALSE),
+ (long)(old_global_value ? TRUE : FALSE),
+ (long)(value ? TRUE : FALSE), NULL);
#endif
comp_col(); // in case 'ruler' or 'showcmd' changed
options[opt_idx].flags |= P_WAS_SET;
#if defined(FEAT_EVAL)
- // Don't do this while starting up, failure or recursively.
- if (!starting && errmsg == NULL && *get_vim_var_str(VV_OPTION_TYPE) == NUL)
- {
- char_u buf_old[11], buf_old_global[11], buf_new[11], buf_type[7];
- vim_snprintf((char *)buf_old, 10, "%ld", old_value);
- vim_snprintf((char *)buf_old_global, 10, "%ld", old_global_value);
- vim_snprintf((char *)buf_new, 10, "%ld", value);
- vim_snprintf((char *)buf_type, 7, "%s", (opt_flags & OPT_LOCAL) ? "local" : "global");
- set_vim_var_string(VV_OPTION_NEW, buf_new, -1);
- set_vim_var_string(VV_OPTION_OLD, buf_old, -1);
- set_vim_var_string(VV_OPTION_TYPE, buf_type, -1);
- if (opt_flags & OPT_LOCAL)
- {
- set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setlocal", -1);
- set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1);
- }
- if (opt_flags & OPT_GLOBAL)
- {
- set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setglobal", -1);
- set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old, -1);
- }
- if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)
- {
- set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"set", -1);
- set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1);
- set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old_global, -1);
- }
- if (opt_flags & OPT_MODELINE)
- {
- set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"modeline", -1);
- set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1);
- }
- apply_autocmds(EVENT_OPTIONSET, (char_u *)options[opt_idx].fullname,
- NULL, FALSE, NULL);
- reset_v_option_vars();
- }
+ apply_optionset_autocmd(opt_idx, opt_flags, old_value, old_global_value,
+ value, errmsg);
#endif
comp_col(); // in case 'columns' or 'ls' changed
}
/*
- * Parse the match for '%+' format pattern. The whole matching line is included
- * in the error string. Return the matched line in "fields->errmsg".
+ * Copy a non-error line into the error string. Return the matched line in
+ * "fields->errmsg".
*/
static int
-qf_parse_fmt_plus(char_u *linebuf, int linelen, qffields_T *fields)
+copy_nonerror_line(char_u *linebuf, int linelen, qffields_T *fields)
{
char_u *p;
fields->errmsg = p;
fields->errmsglen = linelen + 1;
}
+ // copy whole line to error message
vim_strncpy(fields->errmsg, linebuf, linelen);
+
return QF_OK;
}
else if (i == 5)
{
if (fmt_ptr->flags == '+' && !qf_multiscan) // %+
- status = qf_parse_fmt_plus(linebuf, linelen, fields);
+ status = copy_nonerror_line(linebuf, linelen, fields);
else if (midx > 0) // %m
status = qf_parse_fmt_m(regmatch, midx, fields);
}
static int
qf_parse_line_nomatch(char_u *linebuf, int linelen, qffields_T *fields)
{
- char_u *p;
-
fields->namebuf[0] = NUL; // no match found, remove file name
fields->lnum = 0; // don't jump to this line
fields->valid = FALSE;
- if (linelen >= fields->errmsglen)
- {
- // linelen + null terminator
- if ((p = vim_realloc(fields->errmsg, linelen + 1)) == NULL)
- return QF_NOMEM;
- fields->errmsg = p;
- fields->errmsglen = linelen + 1;
- }
- // copy whole line to error message
- vim_strncpy(fields->errmsg, linebuf, linelen);
- return QF_OK;
+ return copy_nonerror_line(linebuf, linelen, fields);
}
/*