patch 9.0.1166: code is indented more than necessary

Problem:    Code is indented more than necessary.
Solution:   Use an early return where it makes sense. (Yegappan Lakshmanan,
            closes #11792)
This commit is contained in:
Yegappan Lakshmanan
2023-01-09 19:04:23 +00:00
committed by Bram Moolenaar
parent 765d82a657
commit 1cfb14aa97
22 changed files with 929 additions and 903 deletions
+12 -12
View File
@@ -1063,18 +1063,18 @@ au_get_grouparg(char_u **argp)
for (p = arg; *p && !VIM_ISWHITE(*p) && *p != '|'; ++p)
;
if (p > arg)
{
group_name = vim_strnsave(arg, p - arg);
if (group_name == NULL) // out of memory
return AUGROUP_ERROR;
group = au_find_group(group_name);
if (group == AUGROUP_ERROR)
group = AUGROUP_ALL; // no match, use all groups
else
*argp = skipwhite(p); // match, skip over group name
vim_free(group_name);
}
if (p <= arg)
return AUGROUP_ALL;
group_name = vim_strnsave(arg, p - arg);
if (group_name == NULL) // out of memory
return AUGROUP_ERROR;
group = au_find_group(group_name);
if (group == AUGROUP_ERROR)
group = AUGROUP_ALL; // no match, use all groups
else
*argp = skipwhite(p); // match, skip over group name
vim_free(group_name);
return group;
}
+56 -58
View File
@@ -357,34 +357,34 @@ open_buffer(
apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
#endif
if (retval == OK)
if (retval != OK)
return retval;
// The autocommands may have changed the current buffer. Apply the
// modelines to the correct buffer, if it still exists and is loaded.
if (bufref_valid(&old_curbuf) && old_curbuf.br_buf->b_ml.ml_mfp != NULL)
{
// The autocommands may have changed the current buffer. Apply the
// modelines to the correct buffer, if it still exists and is loaded.
if (bufref_valid(&old_curbuf) && old_curbuf.br_buf->b_ml.ml_mfp != NULL)
aco_save_T aco;
// Go to the buffer that was opened, make sure it is in a window.
// If not then skip it.
aucmd_prepbuf(&aco, old_curbuf.br_buf);
if (curbuf == old_curbuf.br_buf)
{
aco_save_T aco;
do_modelines(0);
curbuf->b_flags &= ~(BF_CHECK_RO | BF_NEVERLOADED);
// Go to the buffer that was opened, make sure it is in a window.
// If not then skip it.
aucmd_prepbuf(&aco, old_curbuf.br_buf);
if (curbuf == old_curbuf.br_buf)
{
do_modelines(0);
curbuf->b_flags &= ~(BF_CHECK_RO | BF_NEVERLOADED);
if ((flags & READ_NOWINENTER) == 0)
if ((flags & READ_NOWINENTER) == 0)
#ifdef FEAT_EVAL
apply_autocmds_retval(EVENT_BUFWINENTER, NULL, NULL,
FALSE, curbuf, &retval);
apply_autocmds_retval(EVENT_BUFWINENTER, NULL, NULL,
FALSE, curbuf, &retval);
#else
apply_autocmds(EVENT_BUFWINENTER, NULL, NULL,
FALSE, curbuf);
apply_autocmds(EVENT_BUFWINENTER, NULL, NULL,
FALSE, curbuf);
#endif
// restore curwin/curbuf and a few other things
aucmd_restbuf(&aco);
}
// restore curwin/curbuf and a few other things
aucmd_restbuf(&aco);
}
}
@@ -1761,7 +1761,6 @@ do_bufdel(
}
}
return errormsg;
}
@@ -3019,20 +3018,20 @@ fname_match(
char_u *p;
// extra check for valid arguments
if (name != NULL && rmp->regprog != NULL)
if (name == NULL || rmp->regprog == NULL)
return NULL;
// Ignore case when 'fileignorecase' or the argument is set.
rmp->rm_ic = p_fic || ignore_case;
if (vim_regexec(rmp, name, (colnr_T)0))
match = name;
else if (rmp->regprog != NULL)
{
// Ignore case when 'fileignorecase' or the argument is set.
rmp->rm_ic = p_fic || ignore_case;
if (vim_regexec(rmp, name, (colnr_T)0))
// Replace $(HOME) with '~' and try matching again.
p = home_replace_save(NULL, name);
if (p != NULL && vim_regexec(rmp, p, (colnr_T)0))
match = name;
else if (rmp->regprog != NULL)
{
// Replace $(HOME) with '~' and try matching again.
p = home_replace_save(NULL, name);
if (p != NULL && vim_regexec(rmp, p, (colnr_T)0))
match = name;
vim_free(p);
}
vim_free(p);
}
return match;
@@ -3160,16 +3159,15 @@ wininfo_other_tab_diff(wininfo_T *wip)
{
win_T *wp;
if (wip->wi_opt.wo_diff)
{
FOR_ALL_WINDOWS(wp)
// return FALSE when it's a window in the current tab page, thus
// the buffer was in diff mode here
if (wip->wi_win == wp)
return FALSE;
return TRUE;
}
return FALSE;
if (!wip->wi_opt.wo_diff)
return FALSE;
FOR_ALL_WINDOWS(wp)
// return FALSE when it's a window in the current tab page, thus
// the buffer was in diff mode here
if (wip->wi_win == wp)
return FALSE;
return TRUE;
}
#endif
@@ -3198,27 +3196,27 @@ find_wininfo(
&& (!need_options || wip->wi_optset))
break;
if (wip != NULL)
return wip;
// If no wininfo for curwin, use the first in the list (that doesn't have
// 'diff' set and is in another tab page).
// If "need_options" is TRUE skip entries that don't have options set,
// unless the window is editing "buf", so we can copy from the window
// itself.
if (wip == NULL)
{
#ifdef FEAT_DIFF
if (skip_diff_buffer)
{
FOR_ALL_BUF_WININFO(buf, wip)
if (!wininfo_other_tab_diff(wip)
&& (!need_options || wip->wi_optset
|| (wip->wi_win != NULL
&& wip->wi_win->w_buffer == buf)))
break;
}
else
#endif
wip = buf->b_wininfo;
if (skip_diff_buffer)
{
FOR_ALL_BUF_WININFO(buf, wip)
if (!wininfo_other_tab_diff(wip)
&& (!need_options || wip->wi_optset
|| (wip->wi_win != NULL
&& wip->wi_win->w_buffer == buf)))
break;
}
else
#endif
wip = buf->b_wininfo;
return wip;
}
+15 -14
View File
@@ -345,24 +345,25 @@ transstr(char_u *s)
}
else
res = alloc(vim_strsize(s) + 1);
if (res != NULL)
if (res == NULL)
return NULL;
*res = NUL;
p = s;
while (*p != NUL)
{
*res = NUL;
p = s;
while (*p != NUL)
if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
{
if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
{
c = (*mb_ptr2char)(p);
if (vim_isprintc(c))
STRNCAT(res, p, l); // append printable multi-byte char
else
transchar_hex(res + STRLEN(res), c);
p += l;
}
c = (*mb_ptr2char)(p);
if (vim_isprintc(c))
STRNCAT(res, p, l); // append printable multi-byte char
else
STRCAT(res, transchar_byte(*p++));
transchar_hex(res + STRLEN(res), c);
p += l;
}
else
STRCAT(res, transchar_byte(*p++));
}
return res;
}
+52 -53
View File
@@ -46,21 +46,21 @@ cin_is_cinword(char_u *line)
cinw_len = (int)STRLEN(curbuf->b_p_cinw) + 1;
cinw_buf = alloc(cinw_len);
if (cinw_buf != NULL)
if (cinw_buf == NULL)
return FALSE;
line = skipwhite(line);
for (cinw = curbuf->b_p_cinw; *cinw; )
{
line = skipwhite(line);
for (cinw = curbuf->b_p_cinw; *cinw; )
len = copy_option_part(&cinw, cinw_buf, cinw_len, ",");
if (STRNCMP(line, cinw_buf, len) == 0
&& (!vim_iswordc(line[len]) || !vim_iswordc(line[len - 1])))
{
len = copy_option_part(&cinw, cinw_buf, cinw_len, ",");
if (STRNCMP(line, cinw_buf, len) == 0
&& (!vim_iswordc(line[len]) || !vim_iswordc(line[len - 1])))
{
retval = TRUE;
break;
}
retval = TRUE;
break;
}
vim_free(cinw_buf);
}
vim_free(cinw_buf);
return retval;
}
@@ -644,43 +644,42 @@ cin_islabel(void) // XXX
if (cin_isscopedecl(s))
return FALSE;
if (cin_islabel_skip(&s))
if (!cin_islabel_skip(&s))
return FALSE;
// Only accept a label if the previous line is terminated or is a case
// label.
pos_T cursor_save;
pos_T *trypos;
char_u *line;
cursor_save = curwin->w_cursor;
while (curwin->w_cursor.lnum > 1)
{
// Only accept a label if the previous line is terminated or is a case
// label.
pos_T cursor_save;
pos_T *trypos;
char_u *line;
--curwin->w_cursor.lnum;
cursor_save = curwin->w_cursor;
while (curwin->w_cursor.lnum > 1)
{
--curwin->w_cursor.lnum;
// If we're in a comment or raw string now, skip to the start of
// it.
curwin->w_cursor.col = 0;
if ((trypos = ind_find_start_CORS(NULL)) != NULL) // XXX
curwin->w_cursor = *trypos;
// If we're in a comment or raw string now, skip to the start of
// it.
curwin->w_cursor.col = 0;
if ((trypos = ind_find_start_CORS(NULL)) != NULL) // XXX
curwin->w_cursor = *trypos;
line = ml_get_curline();
if (cin_ispreproc(line)) // ignore #defines, #if, etc.
continue;
if (*(line = cin_skipcomment(line)) == NUL)
continue;
line = ml_get_curline();
if (cin_ispreproc(line)) // ignore #defines, #if, etc.
continue;
if (*(line = cin_skipcomment(line)) == NUL)
continue;
curwin->w_cursor = cursor_save;
if (cin_isterminated(line, TRUE, FALSE)
|| cin_isscopedecl(line)
|| cin_iscase(line, TRUE)
|| (cin_islabel_skip(&line) && cin_nocode(line)))
return TRUE;
return FALSE;
}
curwin->w_cursor = cursor_save;
return TRUE; // label at start of file???
if (cin_isterminated(line, TRUE, FALSE)
|| cin_isscopedecl(line)
|| cin_iscase(line, TRUE)
|| (cin_islabel_skip(&line) && cin_nocode(line)))
return TRUE;
return FALSE;
}
return FALSE;
curwin->w_cursor = cursor_save;
return TRUE; // label at start of file???
}
/*
@@ -1688,18 +1687,18 @@ find_match_paren_after_brace (int ind_maxparen) // XXX
{
pos_T *trypos = find_match_paren(ind_maxparen);
if (trypos != NULL)
{
pos_T *tryposBrace = find_start_brace();
if (trypos == NULL)
return NULL;
// If both an unmatched '(' and '{' is found. Ignore the '('
// position if the '{' is further down.
if (tryposBrace != NULL
&& (trypos->lnum != tryposBrace->lnum
? trypos->lnum < tryposBrace->lnum
: trypos->col < tryposBrace->col))
trypos = NULL;
}
pos_T *tryposBrace = find_start_brace();
// If both an unmatched '(' and '{' is found. Ignore the '('
// position if the '{' is further down.
if (tryposBrace != NULL
&& (trypos->lnum != tryposBrace->lnum
? trypos->lnum < tryposBrace->lnum
: trypos->col < tryposBrace->col))
trypos = NULL;
return trypos;
}
+14 -14
View File
@@ -157,22 +157,22 @@ serverConvert(
char_u *res = data;
*tofree = NULL;
if (client_enc != NULL && p_enc != NULL)
{
vimconv_T vimconv;
if (client_enc == NULL || p_enc == NULL)
return res;
vimconv.vc_type = CONV_NONE;
if (convert_setup(&vimconv, client_enc, p_enc) != FAIL
&& vimconv.vc_type != CONV_NONE)
{
res = string_convert(&vimconv, data, NULL);
if (res == NULL)
res = data;
else
*tofree = res;
}
convert_setup(&vimconv, NULL, NULL);
vimconv_T vimconv;
vimconv.vc_type = CONV_NONE;
if (convert_setup(&vimconv, client_enc, p_enc) != FAIL
&& vimconv.vc_type != CONV_NONE)
{
res = string_convert(&vimconv, data, NULL);
if (res == NULL)
res = data;
else
*tofree = res;
}
convert_setup(&vimconv, NULL, NULL);
return res;
}
#endif
+16 -15
View File
@@ -1850,21 +1850,22 @@ find_cmd_after_substitute_cmd(char_u *arg)
find_cmd_after_isearch_cmd(expand_T *xp, char_u *arg)
{
arg = skipwhite(skipdigits(arg)); // skip count
if (*arg == '/') // Match regexp, not just whole words
{
for (++arg; *arg && *arg != '/'; arg++)
if (*arg == '\\' && arg[1] != NUL)
arg++;
if (*arg)
{
arg = skipwhite(arg + 1);
if (*arg != '/')
return NULL;
// Check for trailing illegal characters
if (*arg == NUL || vim_strchr((char_u *)"|\"\n", *arg) == NULL)
xp->xp_context = EXPAND_NOTHING;
else
return arg;
}
// Match regexp, not just whole words
for (++arg; *arg && *arg != '/'; arg++)
if (*arg == '\\' && arg[1] != NUL)
arg++;
if (*arg)
{
arg = skipwhite(arg + 1);
// Check for trailing illegal characters
if (*arg == NUL || vim_strchr((char_u *)"|\"\n", *arg) == NULL)
xp->xp_context = EXPAND_NOTHING;
else
return arg;
}
return NULL;
@@ -2780,7 +2781,7 @@ get_breakadd_arg(expand_T *xp UNUSED, int idx)
{
char *opts[] = {"expr", "file", "func", "here"};
if (idx >=0 && idx <= 3)
if (idx >= 0 && idx <= 3)
{
// breakadd {expr, file, func, here}
if (breakpt_expand_what == EXP_BREAKPT_ADD)
+21 -22
View File
@@ -315,14 +315,14 @@ get_maxbacktrace_level(char_u *sname)
char *p, *q;
int maxbacktrace = 0;
if (sname != NULL)
if (sname == NULL)
return 0;
p = (char *)sname;
while ((q = strstr(p, "..")) != NULL)
{
p = (char *)sname;
while ((q = strstr(p, "..")) != NULL)
{
p = q + 2;
maxbacktrace++;
}
p = q + 2;
maxbacktrace++;
}
return maxbacktrace;
}
@@ -486,21 +486,20 @@ dbg_check_skipped(exarg_T *eap)
{
int prev_got_int;
if (debug_skipped)
{
// Save the value of got_int and reset it. We don't want a previous
// interruption cause flushing the input buffer.
prev_got_int = got_int;
got_int = FALSE;
debug_breakpoint_name = debug_skipped_name;
// eap->skip is TRUE
eap->skip = FALSE;
(void)dbg_check_breakpoint(eap);
eap->skip = TRUE;
got_int |= prev_got_int;
return TRUE;
}
return FALSE;
if (!debug_skipped)
return FALSE;
// Save the value of got_int and reset it. We don't want a previous
// interruption cause flushing the input buffer.
prev_got_int = got_int;
got_int = FALSE;
debug_breakpoint_name = debug_skipped_name;
// eap->skip is TRUE
eap->skip = FALSE;
(void)dbg_check_breakpoint(eap);
eap->skip = TRUE;
got_int |= prev_got_int;
return TRUE;
}
/*
+64 -64
View File
@@ -30,21 +30,21 @@ dict_alloc(void)
dict_T *d;
d = ALLOC_CLEAR_ONE(dict_T);
if (d != NULL)
{
// Add the dict to the list of dicts for garbage collection.
if (first_dict != NULL)
first_dict->dv_used_prev = d;
d->dv_used_next = first_dict;
d->dv_used_prev = NULL;
first_dict = d;
if (d == NULL)
return NULL;
hash_init(&d->dv_hashtab);
d->dv_lock = 0;
d->dv_scope = 0;
d->dv_refcount = 0;
d->dv_copyID = 0;
}
// Add the dict to the list of dicts for garbage collection.
if (first_dict != NULL)
first_dict->dv_used_prev = d;
d->dv_used_next = first_dict;
d->dv_used_prev = NULL;
first_dict = d;
hash_init(&d->dv_hashtab);
d->dv_lock = 0;
d->dv_scope = 0;
d->dv_refcount = 0;
d->dv_copyID = 0;
return d;
}
@@ -228,13 +228,13 @@ dictitem_alloc(char_u *key)
size_t len = STRLEN(key);
di = alloc(offsetof(dictitem_T, di_key) + len + 1);
if (di != NULL)
{
mch_memmove(di->di_key, key, len + 1);
di->di_flags = DI_FLAGS_ALLOC;
di->di_tv.v_lock = 0;
di->di_tv.v_type = VAR_UNKNOWN;
}
if (di == NULL)
return NULL;
mch_memmove(di->di_key, key, len + 1);
di->di_flags = DI_FLAGS_ALLOC;
di->di_tv.v_lock = 0;
di->di_tv.v_type = VAR_UNKNOWN;
return di;
}
@@ -248,12 +248,12 @@ dictitem_copy(dictitem_T *org)
size_t len = STRLEN(org->di_key);
di = alloc(offsetof(dictitem_T, di_key) + len + 1);
if (di != NULL)
{
mch_memmove(di->di_key, org->di_key, len + 1);
di->di_flags = DI_FLAGS_ALLOC;
copy_tv(&org->di_tv, &di->di_tv);
}
if (di == NULL)
return NULL;
mch_memmove(di->di_key, org->di_key, len + 1);
di->di_flags = DI_FLAGS_ALLOC;
copy_tv(&org->di_tv, &di->di_tv);
return di;
}
@@ -303,53 +303,53 @@ dict_copy(dict_T *orig, int deep, int top, int copyID)
return NULL;
copy = dict_alloc();
if (copy != NULL)
if (copy == NULL)
return NULL;
if (copyID != 0)
{
if (copyID != 0)
{
orig->dv_copyID = copyID;
orig->dv_copydict = copy;
}
if (orig->dv_type == NULL || top || deep)
copy->dv_type = NULL;
else
copy->dv_type = alloc_type(orig->dv_type);
orig->dv_copyID = copyID;
orig->dv_copydict = copy;
}
if (orig->dv_type == NULL || top || deep)
copy->dv_type = NULL;
else
copy->dv_type = alloc_type(orig->dv_type);
todo = (int)orig->dv_hashtab.ht_used;
for (hi = orig->dv_hashtab.ht_array; todo > 0 && !got_int; ++hi)
todo = (int)orig->dv_hashtab.ht_used;
for (hi = orig->dv_hashtab.ht_array; todo > 0 && !got_int; ++hi)
{
if (!HASHITEM_EMPTY(hi))
{
if (!HASHITEM_EMPTY(hi))
--todo;
di = dictitem_alloc(hi->hi_key);
if (di == NULL)
break;
if (deep)
{
--todo;
di = dictitem_alloc(hi->hi_key);
if (di == NULL)
break;
if (deep)
if (item_copy(&HI2DI(hi)->di_tv, &di->di_tv,
deep, FALSE, copyID) == FAIL)
{
if (item_copy(&HI2DI(hi)->di_tv, &di->di_tv,
deep, FALSE, copyID) == FAIL)
{
vim_free(di);
break;
}
}
else
copy_tv(&HI2DI(hi)->di_tv, &di->di_tv);
if (dict_add(copy, di) == FAIL)
{
dictitem_free(di);
vim_free(di);
break;
}
}
else
copy_tv(&HI2DI(hi)->di_tv, &di->di_tv);
if (dict_add(copy, di) == FAIL)
{
dictitem_free(di);
break;
}
}
}
++copy->dv_refcount;
if (todo > 0)
{
dict_unref(copy);
copy = NULL;
}
++copy->dv_refcount;
if (todo > 0)
{
dict_unref(copy);
copy = NULL;
}
return copy;
+8 -8
View File
@@ -559,14 +559,14 @@ diff_alloc_new(tabpage_T *tp, diff_T *dprev, diff_T *dp)
diff_T *dnew;
dnew = ALLOC_ONE(diff_T);
if (dnew != NULL)
{
dnew->df_next = dp;
if (dprev == NULL)
tp->tp_first_diff = dnew;
else
dprev->df_next = dnew;
}
if (dnew == NULL)
return NULL;
dnew->df_next = dp;
if (dprev == NULL)
tp->tp_first_diff = dnew;
else
dprev->df_next = dnew;
return dnew;
}
+20 -19
View File
@@ -1533,29 +1533,30 @@ get_digraph(
c = plain_vgetc();
--no_mapping;
--allow_keys;
if (c != ESC) // ESC cancels CTRL-K
if (c == ESC) // ESC cancels CTRL-K
return NUL;
if (IS_SPECIAL(c)) // insert special key code
return c;
if (cmdline)
{
if (IS_SPECIAL(c)) // insert special key code
return c;
if (cmdline)
{
if (char2cells(c) == 1
if (char2cells(c) == 1
#if defined(FEAT_CRYPT) || defined(FEAT_EVAL)
&& cmdline_star == 0
&& cmdline_star == 0
#endif
)
putcmdline(c, TRUE);
}
else
add_to_showcmd(c);
++no_mapping;
++allow_keys;
cc = plain_vgetc();
--no_mapping;
--allow_keys;
if (cc != ESC) // ESC cancels CTRL-K
return digraph_get(c, cc, TRUE);
)
putcmdline(c, TRUE);
}
else
add_to_showcmd(c);
++no_mapping;
++allow_keys;
cc = plain_vgetc();
--no_mapping;
--allow_keys;
if (cc != ESC) // ESC cancels CTRL-K
return digraph_get(c, cc, TRUE);
return NUL;
}
+6 -6
View File
@@ -2970,12 +2970,12 @@ get_last_insert_save(void)
if (last_insert == NULL)
return NULL;
s = vim_strsave(last_insert + last_insert_skip);
if (s != NULL)
{
len = (int)STRLEN(s);
if (len > 0 && s[len - 1] == ESC) // remove trailing ESC
s[len - 1] = NUL;
}
if (s == NULL)
return NULL;
len = (int)STRLEN(s);
if (len > 0 && s[len - 1] == ESC) // remove trailing ESC
s[len - 1] = NUL;
return s;
}
+54 -54
View File
@@ -2950,22 +2950,22 @@ internal_func_check_arg_types(
{
argcheck_T *argchecks = global_functions[idx].f_argcheck;
if (argchecks != NULL)
{
argcontext_T context;
if (argchecks == NULL)
return OK;
context.arg_count = argcount;
context.arg_types = types;
context.arg_cctx = cctx;
for (int i = 0; i < argcount; ++i)
if (argchecks[i] != NULL)
{
context.arg_idx = i;
if (argchecks[i](types[i].type_curr, types[i].type_decl,
&context) == FAIL)
return FAIL;
}
}
argcontext_T context;
context.arg_count = argcount;
context.arg_types = types;
context.arg_cctx = cctx;
for (int i = 0; i < argcount; ++i)
if (argchecks[i] != NULL)
{
context.arg_idx = i;
if (argchecks[i](types[i].type_curr, types[i].type_decl,
&context) == FAIL)
return FAIL;
}
return OK;
}
@@ -3475,14 +3475,14 @@ get_optional_window(typval_T *argvars, int idx)
{
win_T *win = curwin;
if (argvars[idx].v_type != VAR_UNKNOWN)
if (argvars[idx].v_type == VAR_UNKNOWN)
return curwin;
win = find_win_by_nr_or_id(&argvars[idx]);
if (win == NULL)
{
win = find_win_by_nr_or_id(&argvars[idx]);
if (win == NULL)
{
emsg(_(e_invalid_window_number));
return NULL;
}
emsg(_(e_invalid_window_number));
return NULL;
}
return win;
}
@@ -8624,43 +8624,43 @@ get_search_arg(typval_T *varp, int *flagsp)
char_u nbuf[NUMBUFLEN];
int mask;
if (varp->v_type != VAR_UNKNOWN)
if (varp->v_type == VAR_UNKNOWN)
return FORWARD;
flags = tv_get_string_buf_chk(varp, nbuf);
if (flags == NULL)
return 0; // type error; errmsg already given
while (*flags != NUL)
{
flags = tv_get_string_buf_chk(varp, nbuf);
if (flags == NULL)
return 0; // type error; errmsg already given
while (*flags != NUL)
switch (*flags)
{
switch (*flags)
{
case 'b': dir = BACKWARD; break;
case 'w': p_ws = TRUE; break;
case 'W': p_ws = FALSE; break;
default: mask = 0;
if (flagsp != NULL)
switch (*flags)
{
case 'c': mask = SP_START; break;
case 'e': mask = SP_END; break;
case 'm': mask = SP_RETCOUNT; break;
case 'n': mask = SP_NOMOVE; break;
case 'p': mask = SP_SUBPAT; break;
case 'r': mask = SP_REPEAT; break;
case 's': mask = SP_SETPCMARK; break;
case 'z': mask = SP_COLUMN; break;
}
if (mask == 0)
case 'b': dir = BACKWARD; break;
case 'w': p_ws = TRUE; break;
case 'W': p_ws = FALSE; break;
default: mask = 0;
if (flagsp != NULL)
switch (*flags)
{
semsg(_(e_invalid_argument_str), flags);
dir = 0;
case 'c': mask = SP_START; break;
case 'e': mask = SP_END; break;
case 'm': mask = SP_RETCOUNT; break;
case 'n': mask = SP_NOMOVE; break;
case 'p': mask = SP_SUBPAT; break;
case 'r': mask = SP_REPEAT; break;
case 's': mask = SP_SETPCMARK; break;
case 'z': mask = SP_COLUMN; break;
}
else
*flagsp |= mask;
}
if (dir == 0)
break;
++flags;
if (mask == 0)
{
semsg(_(e_invalid_argument_str), flags);
dir = 0;
}
else
*flagsp |= mask;
}
if (dir == 0)
break;
++flags;
}
return dir;
}
+31 -29
View File
@@ -24,29 +24,29 @@ win_getid(typval_T *argvars)
if (argvars[0].v_type == VAR_UNKNOWN)
return curwin->w_id;
winnr = tv_get_number(&argvars[0]);
if (winnr > 0)
if (winnr <= 0)
return 0;
if (argvars[1].v_type == VAR_UNKNOWN)
wp = firstwin;
else
{
if (argvars[1].v_type == VAR_UNKNOWN)
tabpage_T *tp;
int tabnr = tv_get_number(&argvars[1]);
FOR_ALL_TABPAGES(tp)
if (--tabnr == 0)
break;
if (tp == NULL)
return -1;
if (tp == curtab)
wp = firstwin;
else
{
tabpage_T *tp;
int tabnr = tv_get_number(&argvars[1]);
FOR_ALL_TABPAGES(tp)
if (--tabnr == 0)
break;
if (tp == NULL)
return -1;
if (tp == curtab)
wp = firstwin;
else
wp = tp->tp_firstwin;
}
for ( ; wp != NULL; wp = wp->w_next)
if (--winnr == 0)
return wp->w_id;
wp = tp->tp_firstwin;
}
for ( ; wp != NULL; wp = wp->w_next)
if (--winnr == 0)
return wp->w_id;
return 0;
}
@@ -380,18 +380,20 @@ get_winnr(tabpage_T *tp, typval_T *argvar)
}
}
if (nr > 0)
for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
wp != twin; wp = wp->w_next)
if (nr <= 0)
return 0;
for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
wp != twin; wp = wp->w_next)
{
if (wp == NULL)
{
if (wp == NULL)
{
// didn't find it in this tabpage
nr = 0;
break;
}
++nr;
// didn't find it in this tabpage
nr = 0;
break;
}
++nr;
}
return nr;
}
+53 -53
View File
@@ -5279,67 +5279,67 @@ prepare_tagpreview(
need_mouse_correct = TRUE;
# endif
if (curwin->w_p_pvw)
return FALSE;
/*
* If there is already a preview window open, use that one.
*/
if (!curwin->w_p_pvw)
# ifdef FEAT_PROP_POPUP
if (use_previewpopup && *p_pvp != NUL)
{
# ifdef FEAT_PROP_POPUP
if (use_previewpopup && *p_pvp != NUL)
{
wp = popup_find_preview_window();
if (wp != NULL)
popup_set_wantpos_cursor(wp, wp->w_minwidth, NULL);
}
else if (use_popup != USEPOPUP_NONE)
{
wp = popup_find_info_window();
if (wp != NULL)
{
if (use_popup == USEPOPUP_NORMAL)
popup_show(wp);
else
popup_hide(wp);
// When the popup moves or resizes it may reveal part of
// another window. TODO: can this be done more efficiently?
redraw_all_later(UPD_NOT_VALID);
}
}
else
# endif
{
FOR_ALL_WINDOWS(wp)
if (wp->w_p_pvw)
break;
}
wp = popup_find_preview_window();
if (wp != NULL)
popup_set_wantpos_cursor(wp, wp->w_minwidth, NULL);
}
else if (use_popup != USEPOPUP_NONE)
{
wp = popup_find_info_window();
if (wp != NULL)
win_enter(wp, undo_sync);
else
{
/*
* There is no preview window open yet. Create one.
*/
# ifdef FEAT_PROP_POPUP
if ((use_previewpopup && *p_pvp != NUL)
|| use_popup != USEPOPUP_NONE)
return popup_create_preview_window(use_popup != USEPOPUP_NONE);
# endif
if (win_split(g_do_tagpreview > 0 ? g_do_tagpreview : 0, 0) == FAIL)
return FALSE;
curwin->w_p_pvw = TRUE;
curwin->w_p_wfh = TRUE;
RESET_BINDING(curwin); // don't take over 'scrollbind'
// and 'cursorbind'
# ifdef FEAT_DIFF
curwin->w_p_diff = FALSE; // no 'diff'
# endif
# ifdef FEAT_FOLDING
curwin->w_p_fdc = 0; // no 'foldcolumn'
# endif
return TRUE;
if (use_popup == USEPOPUP_NORMAL)
popup_show(wp);
else
popup_hide(wp);
// When the popup moves or resizes it may reveal part of
// another window. TODO: can this be done more efficiently?
redraw_all_later(UPD_NOT_VALID);
}
}
return FALSE;
else
# endif
{
FOR_ALL_WINDOWS(wp)
if (wp->w_p_pvw)
break;
}
if (wp != NULL)
{
win_enter(wp, undo_sync);
return FALSE;
}
/*
* There is no preview window open yet. Create one.
*/
# ifdef FEAT_PROP_POPUP
if ((use_previewpopup && *p_pvp != NUL)
|| use_popup != USEPOPUP_NONE)
return popup_create_preview_window(use_popup != USEPOPUP_NONE);
# endif
if (win_split(g_do_tagpreview > 0 ? g_do_tagpreview : 0, 0) == FAIL)
return FALSE;
curwin->w_p_pvw = TRUE;
curwin->w_p_wfh = TRUE;
RESET_BINDING(curwin); // don't take over 'scrollbind'
// and 'cursorbind'
# ifdef FEAT_DIFF
curwin->w_p_diff = FALSE; // no 'diff'
# endif
# ifdef FEAT_FOLDING
curwin->w_p_fdc = 0; // no 'foldcolumn'
# endif
return TRUE;
}
#endif
+22 -22
View File
@@ -828,40 +828,40 @@ requires_py_version(char_u *filename)
lines = 5;
file = mch_fopen((char *)filename, "r");
if (file != NULL)
if (file == NULL)
return 0;
for (i = 0; i < lines; i++)
{
for (i = 0; i < lines; i++)
if (vim_fgets(IObuff, IOSIZE, file))
break;
if (i == 0 && IObuff[0] == '#' && IObuff[1] == '!')
{
if (vim_fgets(IObuff, IOSIZE, file))
break;
if (i == 0 && IObuff[0] == '#' && IObuff[1] == '!')
{
// Check shebang.
if (strstr((char *)IObuff + 2, "python2") != NULL)
{
requires_py_version = 2;
break;
}
if (strstr((char *)IObuff + 2, "python3") != NULL)
{
requires_py_version = 3;
break;
}
}
IObuff[21] = '\0';
if (STRCMP("# requires python 2.x", IObuff) == 0)
// Check shebang.
if (strstr((char *)IObuff + 2, "python2") != NULL)
{
requires_py_version = 2;
break;
}
if (STRCMP("# requires python 3.x", IObuff) == 0)
if (strstr((char *)IObuff + 2, "python3") != NULL)
{
requires_py_version = 3;
break;
}
}
fclose(file);
IObuff[21] = '\0';
if (STRCMP("# requires python 2.x", IObuff) == 0)
{
requires_py_version = 2;
break;
}
if (STRCMP("# requires python 3.x", IObuff) == 0)
{
requires_py_version = 3;
break;
}
}
fclose(file);
return requires_py_version;
}
+8 -8
View File
@@ -4146,16 +4146,16 @@ get_cmdline_completion(void)
return NULL;
p = get_ccline_ptr();
if (p != NULL && p->xpc != NULL)
{
char_u *cmd_compl;
if (p == NULL || p->xpc == NULL)
return NULL;
set_expand_context(p->xpc);
char_u *cmd_compl;
cmd_compl = cmdcomplete_type_to_str(p->xpc->xp_context);
if (cmd_compl != NULL)
return vim_strsave(cmd_compl);
}
set_expand_context(p->xpc);
cmd_compl = cmdcomplete_type_to_str(p->xpc->xp_context);
if (cmd_compl != NULL)
return vim_strsave(cmd_compl);
return NULL;
}
+15 -15
View File
@@ -3084,13 +3084,13 @@ concat_fnames(char_u *fname1, char_u *fname2, int sep)
char_u *dest;
dest = alloc(STRLEN(fname1) + STRLEN(fname2) + 3);
if (dest != NULL)
{
STRCPY(dest, fname1);
if (sep)
add_pathsep(dest);
STRCAT(dest, fname2);
}
if (dest == NULL)
return NULL;
STRCPY(dest, fname1);
if (sep)
add_pathsep(dest);
STRCAT(dest, fname2);
return dest;
}
@@ -3122,14 +3122,14 @@ FullName_save(
return NULL;
buf = alloc(MAXPATHL);
if (buf != NULL)
{
if (vim_FullName(fname, buf, MAXPATHL, force) != FAIL)
new_fname = vim_strsave(buf);
else
new_fname = vim_strsave(fname);
vim_free(buf);
}
if (buf == NULL)
return NULL;
if (vim_FullName(fname, buf, MAXPATHL, force) != FAIL)
new_fname = vim_strsave(buf);
else
new_fname = vim_strsave(fname);
vim_free(buf);
return new_fname;
}
+23 -24
View File
@@ -1345,33 +1345,32 @@ ff_check_visited(
* New file/dir. Add it to the list of visited files/dirs.
*/
vp = alloc(sizeof(ff_visited_T) + STRLEN(ff_expand_buffer));
if (vp == NULL)
return OK;
if (vp != NULL)
#ifdef UNIX
if (!url)
{
#ifdef UNIX
if (!url)
{
vp->ffv_dev_valid = TRUE;
vp->ffv_ino = st.st_ino;
vp->ffv_dev = st.st_dev;
vp->ffv_fname[0] = NUL;
}
else
{
vp->ffv_dev_valid = FALSE;
#endif
STRCPY(vp->ffv_fname, ff_expand_buffer);
#ifdef UNIX
}
#endif
if (wc_path != NULL)
vp->ffv_wc_path = vim_strsave(wc_path);
else
vp->ffv_wc_path = NULL;
vp->ffv_next = *visited_list;
*visited_list = vp;
vp->ffv_dev_valid = TRUE;
vp->ffv_ino = st.st_ino;
vp->ffv_dev = st.st_dev;
vp->ffv_fname[0] = NUL;
}
else
{
vp->ffv_dev_valid = FALSE;
#endif
STRCPY(vp->ffv_fname, ff_expand_buffer);
#ifdef UNIX
}
#endif
if (wc_path != NULL)
vp->ffv_wc_path = vim_strsave(wc_path);
else
vp->ffv_wc_path = NULL;
vp->ffv_next = *visited_list;
*visited_list = vp;
return OK;
}
+1 -1
View File
@@ -516,7 +516,7 @@ foldCheckClose(void)
if (*p_fcl == NUL)
return;
// can only be "all" right now
// 'foldclose' can only be "all" right now
checkupdate(curwin);
if (checkCloseRec(&curwin->w_folds, curwin->w_cursor.lnum,
(int)curwin->w_p_fdl))
+93 -91
View File
@@ -334,35 +334,35 @@ prt_get_attr(
static void
prt_set_fg(long_u fg)
{
if (fg != curr_fg)
{
curr_fg = fg;
mch_print_set_fg(fg);
}
if (fg == curr_fg)
return;
curr_fg = fg;
mch_print_set_fg(fg);
}
static void
prt_set_bg(long_u bg)
{
if (bg != curr_bg)
{
curr_bg = bg;
mch_print_set_bg(bg);
}
if (bg == curr_bg)
return;
curr_bg = bg;
mch_print_set_bg(bg);
}
static void
prt_set_font(int bold, int italic, int underline)
{
if (curr_bold != bold
|| curr_italic != italic
|| curr_underline != underline)
{
curr_underline = underline;
curr_italic = italic;
curr_bold = bold;
mch_print_set_font(bold, italic, underline);
}
if (curr_bold == bold
&& curr_italic == italic
&& curr_underline == underline)
return;
curr_underline = underline;
curr_italic = italic;
curr_bold = bold;
mch_print_set_font(bold, italic, underline);
}
/*
@@ -434,13 +434,15 @@ prt_get_unit(int idx)
int i;
static char *(units[4]) = PRT_UNIT_NAMES;
if (printer_opts[idx].present)
for (i = 0; i < 4; ++i)
if (STRNICMP(printer_opts[idx].string, units[i], 2) == 0)
{
u = i;
break;
}
if (!printer_opts[idx].present)
return PRT_UNIT_NONE;
for (i = 0; i < 4; ++i)
if (STRNICMP(printer_opts[idx].string, units[i], 2) == 0)
{
u = i;
break;
}
return u;
}
@@ -1574,75 +1576,75 @@ prt_def_var(char *name, double value, int prec)
static void
prt_flush_buffer(void)
{
if (prt_ps_buffer.ga_len > 0)
if (prt_ps_buffer.ga_len <= 0)
return;
// Any background color must be drawn first
if (prt_do_bgcol && (prt_new_bgcol != PRCOLOR_WHITE))
{
// Any background color must be drawn first
if (prt_do_bgcol && (prt_new_bgcol != PRCOLOR_WHITE))
{
int r, g, b;
int r, g, b;
if (prt_do_moveto)
{
prt_write_real(prt_pos_x_moveto, 2);
prt_write_real(prt_pos_y_moveto, 2);
prt_write_string("m\n");
prt_do_moveto = FALSE;
}
// Size of rect of background color on which text is printed
prt_write_real(prt_text_run, 2);
prt_write_real(prt_line_height, 2);
// Lastly add the color of the background
r = ((unsigned)prt_new_bgcol & 0xff0000) >> 16;
g = ((unsigned)prt_new_bgcol & 0xff00) >> 8;
b = prt_new_bgcol & 0xff;
prt_write_real(r / 255.0, 3);
prt_write_real(g / 255.0, 3);
prt_write_real(b / 255.0, 3);
prt_write_string("bg\n");
}
// Draw underlines before the text as it makes it slightly easier to
// find the starting point.
if (prt_do_underline)
{
if (prt_do_moveto)
{
prt_write_real(prt_pos_x_moveto, 2);
prt_write_real(prt_pos_y_moveto, 2);
prt_write_string("m\n");
prt_do_moveto = FALSE;
}
// Underline length of text run
prt_write_real(prt_text_run, 2);
prt_write_string("ul\n");
}
// Draw the text
if (prt_out_mbyte)
prt_write_string("<");
else
prt_write_string("(");
prt_write_file_raw_len(prt_ps_buffer.ga_data, prt_ps_buffer.ga_len);
if (prt_out_mbyte)
prt_write_string(">");
else
prt_write_string(")");
// Add a moveto if need be and use the appropriate show procedure
if (prt_do_moveto)
{
prt_write_real(prt_pos_x_moveto, 2);
prt_write_real(prt_pos_y_moveto, 2);
// moveto and a show
prt_write_string("ms\n");
prt_write_string("m\n");
prt_do_moveto = FALSE;
}
else // Simple show
prt_write_string("s\n");
ga_clear(&prt_ps_buffer);
ga_init2(&prt_ps_buffer, sizeof(char), prt_bufsiz);
// Size of rect of background color on which text is printed
prt_write_real(prt_text_run, 2);
prt_write_real(prt_line_height, 2);
// Lastly add the color of the background
r = ((unsigned)prt_new_bgcol & 0xff0000) >> 16;
g = ((unsigned)prt_new_bgcol & 0xff00) >> 8;
b = prt_new_bgcol & 0xff;
prt_write_real(r / 255.0, 3);
prt_write_real(g / 255.0, 3);
prt_write_real(b / 255.0, 3);
prt_write_string("bg\n");
}
// Draw underlines before the text as it makes it slightly easier to
// find the starting point.
if (prt_do_underline)
{
if (prt_do_moveto)
{
prt_write_real(prt_pos_x_moveto, 2);
prt_write_real(prt_pos_y_moveto, 2);
prt_write_string("m\n");
prt_do_moveto = FALSE;
}
// Underline length of text run
prt_write_real(prt_text_run, 2);
prt_write_string("ul\n");
}
// Draw the text
if (prt_out_mbyte)
prt_write_string("<");
else
prt_write_string("(");
prt_write_file_raw_len(prt_ps_buffer.ga_data, prt_ps_buffer.ga_len);
if (prt_out_mbyte)
prt_write_string(">");
else
prt_write_string(")");
// Add a moveto if need be and use the appropriate show procedure
if (prt_do_moveto)
{
prt_write_real(prt_pos_x_moveto, 2);
prt_write_real(prt_pos_y_moveto, 2);
// moveto and a show
prt_write_string("ms\n");
prt_do_moveto = FALSE;
}
else // Simple show
prt_write_string("s\n");
ga_clear(&prt_ps_buffer);
ga_init2(&prt_ps_buffer, sizeof(char), prt_bufsiz);
}
@@ -3447,12 +3449,12 @@ mch_print_set_bg(long_u bgcol)
void
mch_print_set_fg(long_u fgcol)
{
if (fgcol != (long_u)prt_fgcol)
{
prt_fgcol = (int)fgcol;
prt_attribute_change = TRUE;
prt_need_fgcol = TRUE;
}
if (fgcol == (long_u)prt_fgcol)
return;
prt_fgcol = (int)fgcol;
prt_attribute_change = TRUE;
prt_need_fgcol = TRUE;
}
# endif //FEAT_POSTSCRIPT
+343 -321
View File
@@ -920,94 +920,114 @@ highlight_set_font(
}
#endif
/*
* Set the cterm foreground color for the Normal highlight group to "color" and
* the bold attribute to "bold".
*/
static void
hl_set_ctermfg_normal_group(int color, int bold)
{
cterm_normal_fg_color = color + 1;
cterm_normal_fg_bold = bold;
#ifdef FEAT_GUI
// Don't do this if the GUI is used.
if (!gui.in_use && !gui.starting)
#endif
{
set_must_redraw(UPD_CLEAR);
if (termcap_active && color >= 0)
term_fg_color(color);
}
}
/*
* Set the cterm foreground color for the highlight group at 'idx' to 'color'.
* Returns TRUE if the foreground color is set.
*/
static void
highlight_set_ctermfg(int idx, int color, int is_normal_group)
{
HL_TABLE()[idx].sg_cterm_fg = color + 1;
if (is_normal_group)
{
cterm_normal_fg_color = color + 1;
cterm_normal_fg_bold = (HL_TABLE()[idx].sg_cterm & HL_BOLD);
#ifdef FEAT_GUI
// Don't do this if the GUI is used.
if (!gui.in_use && !gui.starting)
#endif
{
set_must_redraw(UPD_CLEAR);
if (termcap_active && color >= 0)
term_fg_color(color);
}
}
hl_set_ctermfg_normal_group(color,
(HL_TABLE()[idx].sg_cterm & HL_BOLD));
}
/*
* Set the cterm background color for the highlight group at 'idx' to 'color'.
* Returns TRUE if the background color is set.
* Set the cterm background color for the Normal highlight group to "color".
*/
static void
highlight_set_ctermbg(int idx, int color, int is_normal_group)
hl_set_ctermbg_normal_group(int color)
{
HL_TABLE()[idx].sg_cterm_bg = color + 1;
if (is_normal_group)
{
cterm_normal_bg_color = color + 1;
cterm_normal_bg_color = color + 1;
#ifdef FEAT_GUI
// Don't mess with 'background' if the GUI is used.
if (!gui.in_use && !gui.starting)
// Don't mess with 'background' if the GUI is used.
if (!gui.in_use && !gui.starting)
#endif
{
set_must_redraw(UPD_CLEAR);
if (color >= 0)
{
set_must_redraw(UPD_CLEAR);
if (color >= 0)
{
int dark = -1;
int dark = -1;
if (termcap_active)
term_bg_color(color);
if (t_colors < 16)
dark = (color == 0 || color == 4);
// Limit the heuristic to the standard 16 colors
else if (color < 16)
dark = (color < 7 || color == 8);
// Set the 'background' option if the value is
// wrong.
if (dark != -1
&& dark != (*p_bg == 'd')
&& !option_was_set((char_u *)"bg"))
{
set_option_value_give_err((char_u *)"bg",
0L, (char_u *)(dark ? "dark" : "light"), 0);
reset_option_was_set((char_u *)"bg");
}
if (termcap_active)
term_bg_color(color);
if (t_colors < 16)
dark = (color == 0 || color == 4);
// Limit the heuristic to the standard 16 colors
else if (color < 16)
dark = (color < 7 || color == 8);
// Set the 'background' option if the value is
// wrong.
if (dark != -1
&& dark != (*p_bg == 'd')
&& !option_was_set((char_u *)"bg"))
{
set_option_value_give_err((char_u *)"bg",
0L, (char_u *)(dark ? "dark" : "light"), 0);
reset_option_was_set((char_u *)"bg");
}
}
}
}
/*
* Set the cterm background color for the highlight group at 'idx' to 'color'.
*/
static void
highlight_set_ctermbg(int idx, int color, int is_normal_group)
{
HL_TABLE()[idx].sg_cterm_bg = color + 1;
if (is_normal_group)
hl_set_ctermbg_normal_group(color);
}
/*
* Set the cterm underline color for the Normal highlight group to "color".
*/
static void
hl_set_ctermul_normal_group(int color)
{
cterm_normal_ul_color = color + 1;
#ifdef FEAT_GUI
// Don't do this if the GUI is used.
if (!gui.in_use && !gui.starting)
#endif
{
set_must_redraw(UPD_CLEAR);
if (termcap_active && color >= 0)
term_ul_color(color);
}
}
/*
* Set the cterm underline color for the highlight group at 'idx' to 'color'.
* Returns TRUE if the underline color is set.
*/
static void
highlight_set_ctermul(int idx, int color, int is_normal_group)
{
HL_TABLE()[idx].sg_cterm_ul = color + 1;
if (is_normal_group)
{
cterm_normal_ul_color = color + 1;
#ifdef FEAT_GUI
// Don't do this if the GUI is used.
if (!gui.in_use && !gui.starting)
#endif
{
set_must_redraw(UPD_CLEAR);
if (termcap_active && color >= 0)
term_ul_color(color);
}
}
hl_set_ctermul_normal_group(color);
}
/*
@@ -1034,90 +1054,90 @@ highlight_set_cterm_color(
long i;
int off;
if (!init || !(HL_TABLE()[idx].sg_set & SG_CTERM))
if (init && (HL_TABLE()[idx].sg_set & SG_CTERM))
return FALSE;
if (!init)
HL_TABLE()[idx].sg_set |= SG_CTERM;
// When setting the foreground color, and previously the "bold"
// flag was set for a light color, reset it now
if (key[5] == 'F' && HL_TABLE()[idx].sg_cterm_bold)
{
if (!init)
HL_TABLE()[idx].sg_set |= SG_CTERM;
HL_TABLE()[idx].sg_cterm &= ~HL_BOLD;
HL_TABLE()[idx].sg_cterm_bold = FALSE;
}
// When setting the foreground color, and previously the "bold"
// flag was set for a light color, reset it now
if (key[5] == 'F' && HL_TABLE()[idx].sg_cterm_bold)
{
HL_TABLE()[idx].sg_cterm &= ~HL_BOLD;
HL_TABLE()[idx].sg_cterm_bold = FALSE;
}
if (VIM_ISDIGIT(*arg))
color = atoi((char *)arg);
else if (STRICMP(arg, "fg") == 0)
{
if (cterm_normal_fg_color)
color = cterm_normal_fg_color - 1;
else
{
emsg(_(e_fg_color_unknown));
return FALSE;
}
}
else if (STRICMP(arg, "bg") == 0)
{
if (cterm_normal_bg_color > 0)
color = cterm_normal_bg_color - 1;
else
{
emsg(_(e_bg_color_unknown));
return FALSE;
}
}
else if (STRICMP(arg, "ul") == 0)
{
if (cterm_normal_ul_color > 0)
color = cterm_normal_ul_color - 1;
else
{
emsg(_(e_ul_color_unknown));
return FALSE;
}
}
if (VIM_ISDIGIT(*arg))
color = atoi((char *)arg);
else if (STRICMP(arg, "fg") == 0)
{
if (cterm_normal_fg_color)
color = cterm_normal_fg_color - 1;
else
{
int bold = MAYBE;
emsg(_(e_fg_color_unknown));
return FALSE;
}
}
else if (STRICMP(arg, "bg") == 0)
{
if (cterm_normal_bg_color > 0)
color = cterm_normal_bg_color - 1;
else
{
emsg(_(e_bg_color_unknown));
return FALSE;
}
}
else if (STRICMP(arg, "ul") == 0)
{
if (cterm_normal_ul_color > 0)
color = cterm_normal_ul_color - 1;
else
{
emsg(_(e_ul_color_unknown));
return FALSE;
}
}
else
{
int bold = MAYBE;
// reduce calls to STRICMP a bit, it can be slow
off = TOUPPER_ASC(*arg);
for (i = ARRAY_LENGTH(color_names); --i >= 0; )
if (off == color_names[i][0]
&& STRICMP(arg + 1, color_names[i] + 1) == 0)
break;
if (i < 0)
{
semsg(_(e_color_name_or_number_not_recognized_str), key_start);
return FALSE;
}
color = lookup_color(i, key[5] == 'F', &bold);
// set/reset bold attribute to get light foreground
// colors (on some terminals, e.g. "linux")
if (bold == TRUE)
{
HL_TABLE()[idx].sg_cterm |= HL_BOLD;
HL_TABLE()[idx].sg_cterm_bold = TRUE;
}
else if (bold == FALSE)
HL_TABLE()[idx].sg_cterm &= ~HL_BOLD;
// reduce calls to STRICMP a bit, it can be slow
off = TOUPPER_ASC(*arg);
for (i = ARRAY_LENGTH(color_names); --i >= 0; )
if (off == color_names[i][0]
&& STRICMP(arg + 1, color_names[i] + 1) == 0)
break;
if (i < 0)
{
semsg(_(e_color_name_or_number_not_recognized_str), key_start);
return FALSE;
}
// Add one to the argument, to avoid zero. Zero is used for
// "NONE", then "color" is -1.
if (key[5] == 'F')
highlight_set_ctermfg(idx, color, is_normal_group);
else if (key[5] == 'B')
highlight_set_ctermbg(idx, color, is_normal_group);
else // ctermul
highlight_set_ctermul(idx, color, is_normal_group);
color = lookup_color(i, key[5] == 'F', &bold);
// set/reset bold attribute to get light foreground
// colors (on some terminals, e.g. "linux")
if (bold == TRUE)
{
HL_TABLE()[idx].sg_cterm |= HL_BOLD;
HL_TABLE()[idx].sg_cterm_bold = TRUE;
}
else if (bold == FALSE)
HL_TABLE()[idx].sg_cterm &= ~HL_BOLD;
}
// Add one to the argument, to avoid zero. Zero is used for
// "NONE", then "color" is -1.
if (key[5] == 'F')
highlight_set_ctermfg(idx, color, is_normal_group);
else if (key[5] == 'B')
highlight_set_ctermbg(idx, color, is_normal_group);
else // ctermul
highlight_set_ctermul(idx, color, is_normal_group);
return TRUE;
}
@@ -1142,51 +1162,51 @@ highlight_set_guifg(
char_u **namep;
int did_change = FALSE;
if (init && (HL_TABLE()[idx].sg_set & SG_GUI))
return FALSE;
namep = &HL_TABLE()[idx].sg_gui_fg_name;
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
{
if (!init)
HL_TABLE()[idx].sg_set |= SG_GUI;
if (!init)
HL_TABLE()[idx].sg_set |= SG_GUI;
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
// In GUI guifg colors are only used when recognized
i = color_name2handle(arg);
if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0 || !USE_24BIT)
{
HL_TABLE()[idx].sg_gui_fg = i;
// In GUI guifg colors are only used when recognized
i = color_name2handle(arg);
if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0 || !USE_24BIT)
{
HL_TABLE()[idx].sg_gui_fg = i;
# endif
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
# ifdef FEAT_GUI_X11
if (is_menu_group && gui.menu_fg_pixel != i)
{
gui.menu_fg_pixel = i;
*do_colors = TRUE;
}
if (is_scrollbar_group && gui.scroll_fg_pixel != i)
{
gui.scroll_fg_pixel = i;
*do_colors = TRUE;
}
if (is_menu_group && gui.menu_fg_pixel != i)
{
gui.menu_fg_pixel = i;
*do_colors = TRUE;
}
if (is_scrollbar_group && gui.scroll_fg_pixel != i)
{
gui.scroll_fg_pixel = i;
*do_colors = TRUE;
}
# ifdef FEAT_BEVAL_GUI
if (is_tooltip_group && gui.tooltip_fg_pixel != i)
{
gui.tooltip_fg_pixel = i;
*do_colors = TRUE;
}
if (is_tooltip_group && gui.tooltip_fg_pixel != i)
{
gui.tooltip_fg_pixel = i;
*do_colors = TRUE;
}
# endif
# endif
}
# endif
}
# endif
return did_change;
}
@@ -1211,51 +1231,51 @@ highlight_set_guibg(
char_u **namep;
int did_change = FALSE;
if (init && (HL_TABLE()[idx].sg_set & SG_GUI))
return FALSE;
namep = &HL_TABLE()[idx].sg_gui_bg_name;
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
{
if (!init)
HL_TABLE()[idx].sg_set |= SG_GUI;
if (!init)
HL_TABLE()[idx].sg_set |= SG_GUI;
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
// In GUI guibg colors are only used when recognized
i = color_name2handle(arg);
if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0 || !USE_24BIT)
{
HL_TABLE()[idx].sg_gui_bg = i;
// In GUI guibg colors are only used when recognized
i = color_name2handle(arg);
if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0 || !USE_24BIT)
{
HL_TABLE()[idx].sg_gui_bg = i;
# endif
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
# ifdef FEAT_GUI_X11
if (is_menu_group && gui.menu_bg_pixel != i)
{
gui.menu_bg_pixel = i;
*do_colors = TRUE;
}
if (is_scrollbar_group && gui.scroll_bg_pixel != i)
{
gui.scroll_bg_pixel = i;
*do_colors = TRUE;
}
if (is_menu_group && gui.menu_bg_pixel != i)
{
gui.menu_bg_pixel = i;
*do_colors = TRUE;
}
if (is_scrollbar_group && gui.scroll_bg_pixel != i)
{
gui.scroll_bg_pixel = i;
*do_colors = TRUE;
}
# ifdef FEAT_BEVAL_GUI
if (is_tooltip_group && gui.tooltip_bg_pixel != i)
{
gui.tooltip_bg_pixel = i;
*do_colors = TRUE;
}
if (is_tooltip_group && gui.tooltip_bg_pixel != i)
{
gui.tooltip_bg_pixel = i;
*do_colors = TRUE;
}
# endif
# endif
}
# endif
}
# endif
return did_change;
}
@@ -1273,32 +1293,32 @@ highlight_set_guisp(int idx, char_u *arg, int init)
int did_change = FALSE;
char_u **namep;
if (init && (HL_TABLE()[idx].sg_set & SG_GUI))
return FALSE;
namep = &HL_TABLE()[idx].sg_gui_sp_name;
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
{
if (!init)
HL_TABLE()[idx].sg_set |= SG_GUI;
if (!init)
HL_TABLE()[idx].sg_set |= SG_GUI;
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
// In GUI guisp colors are only used when recognized
i = color_name2handle(arg);
if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0 || !USE_24BIT)
// In GUI guisp colors are only used when recognized
i = color_name2handle(arg);
if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0 || !USE_24BIT)
{
HL_TABLE()[idx].sg_gui_sp = i;
# endif
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
HL_TABLE()[idx].sg_gui_sp = i;
# endif
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
# endif
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
}
# endif
return did_change;
}
@@ -1995,21 +2015,20 @@ set_group_colors(
int idx;
idx = syn_name2id(name) - 1;
if (idx >= 0)
{
gui_do_one_color(idx, do_menu, do_tooltip);
if (idx < 0)
return FALSE;
if (HL_TABLE()[idx].sg_gui_fg != INVALCOLOR)
*fgp = HL_TABLE()[idx].sg_gui_fg;
else if (use_norm)
*fgp = gui.def_norm_pixel;
if (HL_TABLE()[idx].sg_gui_bg != INVALCOLOR)
*bgp = HL_TABLE()[idx].sg_gui_bg;
else if (use_norm)
*bgp = gui.def_back_pixel;
return TRUE;
}
return FALSE;
gui_do_one_color(idx, do_menu, do_tooltip);
if (HL_TABLE()[idx].sg_gui_fg != INVALCOLOR)
*fgp = HL_TABLE()[idx].sg_gui_fg;
else if (use_norm)
*fgp = gui.def_norm_pixel;
if (HL_TABLE()[idx].sg_gui_bg != INVALCOLOR)
*bgp = HL_TABLE()[idx].sg_gui_bg;
else if (use_norm)
*bgp = gui.def_back_pixel;
return TRUE;
}
/*
@@ -2042,11 +2061,11 @@ hl_set_font_name(char_u *font_name)
int id;
id = syn_name2id((char_u *)"Normal");
if (id > 0)
{
vim_free(HL_TABLE()[id - 1].sg_font_name);
HL_TABLE()[id - 1].sg_font_name = vim_strsave(font_name);
}
if (id <= 0)
return;
vim_free(HL_TABLE()[id - 1].sg_font_name);
HL_TABLE()[id - 1].sg_font_name = vim_strsave(font_name);
}
/*
@@ -2059,15 +2078,15 @@ hl_set_bg_color_name(
{
int id;
if (name != NULL)
{
id = syn_name2id((char_u *)"Normal");
if (id > 0)
{
vim_free(HL_TABLE()[id - 1].sg_gui_bg_name);
HL_TABLE()[id - 1].sg_gui_bg_name = name;
}
}
if (name == NULL)
return;
id = syn_name2id((char_u *)"Normal");
if (id <= 0)
return;
vim_free(HL_TABLE()[id - 1].sg_gui_bg_name);
HL_TABLE()[id - 1].sg_gui_bg_name = name;
}
/*
@@ -2080,15 +2099,15 @@ hl_set_fg_color_name(
{
int id;
if (name != NULL)
{
id = syn_name2id((char_u *)"Normal");
if (id > 0)
{
vim_free(HL_TABLE()[id - 1].sg_gui_fg_name);
HL_TABLE()[id - 1].sg_gui_fg_name = name;
}
}
if (name == NULL)
return;
id = syn_name2id((char_u *)"Normal");
if (id <= 0)
return;
vim_free(HL_TABLE()[id - 1].sg_gui_fg_name);
HL_TABLE()[id - 1].sg_gui_fg_name = name;
}
/*
@@ -2973,41 +2992,42 @@ highlight_list_arg(
if (got_int)
return FALSE;
if (type == LIST_STRING ? (sarg != NULL) : (iarg != 0))
{
ts = buf;
if (type == LIST_INT)
sprintf((char *)buf, "%d", iarg - 1);
else if (type == LIST_STRING)
ts = sarg;
else // type == LIST_ATTR
{
buf[0] = NUL;
for (i = 0; hl_attr_table[i] != 0; ++i)
{
if (iarg & hl_attr_table[i])
{
if (buf[0] != NUL)
vim_strcat(buf, (char_u *)",", MAX_ATTR_LEN);
vim_strcat(buf, (char_u *)hl_name_table[i], MAX_ATTR_LEN);
iarg &= ~hl_attr_table[i]; // don't want "inverse"
}
}
}
(void)syn_list_header(didh,
(int)(vim_strsize(ts) + STRLEN(name) + 1), id);
didh = TRUE;
if (!got_int)
if (type == LIST_STRING ? (sarg == NULL) : (iarg == 0))
return didh;
ts = buf;
if (type == LIST_INT)
sprintf((char *)buf, "%d", iarg - 1);
else if (type == LIST_STRING)
ts = sarg;
else // type == LIST_ATTR
{
buf[0] = NUL;
for (i = 0; hl_attr_table[i] != 0; ++i)
{
if (*name != NUL)
if (iarg & hl_attr_table[i])
{
msg_puts_attr(name, HL_ATTR(HLF_D));
msg_puts_attr("=", HL_ATTR(HLF_D));
if (buf[0] != NUL)
vim_strcat(buf, (char_u *)",", MAX_ATTR_LEN);
vim_strcat(buf, (char_u *)hl_name_table[i], MAX_ATTR_LEN);
iarg &= ~hl_attr_table[i]; // don't want "inverse"
}
msg_outtrans(ts);
}
}
(void)syn_list_header(didh,
(int)(vim_strsize(ts) + STRLEN(name) + 1), id);
didh = TRUE;
if (!got_int)
{
if (*name != NUL)
{
msg_puts_attr(name, HL_ATTR(HLF_D));
msg_puts_attr("=", HL_ATTR(HLF_D));
}
msg_outtrans(ts);
}
return didh;
}
@@ -3380,11 +3400,11 @@ syn_namen2id(char_u *linep, int len)
int id = 0;
name = vim_strnsave(linep, len);
if (name != NULL)
{
id = syn_name2id(name);
vim_free(name);
}
if (name == NULL)
return 0;
id = syn_name2id(name);
vim_free(name);
return id;
}
@@ -3927,40 +3947,42 @@ set_context_in_highlight_cmd(expand_T *xp, char_u *arg)
include_link = 2;
include_default = 1;
if (*arg == NUL)
return;
// (part of) subcommand already typed
if (*arg != NUL)
p = skiptowhite(arg);
if (*p == NUL)
return;
// past "default" or group name
include_default = 0;
if (STRNCMP("default", arg, p - arg) == 0)
{
arg = skipwhite(p);
xp->xp_pattern = arg;
p = skiptowhite(arg);
if (*p != NUL) // past "default" or group name
}
if (*p == NUL)
return;
// past group name
include_link = 0;
if (arg[1] == 'i' && arg[0] == 'N')
highlight_list();
if (STRNCMP("link", arg, p - arg) == 0
|| STRNCMP("clear", arg, p - arg) == 0)
{
xp->xp_pattern = skipwhite(p);
p = skiptowhite(xp->xp_pattern);
if (*p != NUL) // past first group name
{
include_default = 0;
if (STRNCMP("default", arg, p - arg) == 0)
{
arg = skipwhite(p);
xp->xp_pattern = arg;
p = skiptowhite(arg);
}
if (*p != NUL) // past group name
{
include_link = 0;
if (arg[1] == 'i' && arg[0] == 'N')
highlight_list();
if (STRNCMP("link", arg, p - arg) == 0
|| STRNCMP("clear", arg, p - arg) == 0)
{
xp->xp_pattern = skipwhite(p);
p = skiptowhite(xp->xp_pattern);
if (*p != NUL) // past first group name
{
xp->xp_pattern = skipwhite(p);
p = skiptowhite(xp->xp_pattern);
}
}
if (*p != NUL) // past group name(s)
xp->xp_context = EXPAND_NOTHING;
}
xp->xp_pattern = skipwhite(p);
p = skiptowhite(xp->xp_pattern);
}
}
if (*p != NUL) // past group name(s)
xp->xp_context = EXPAND_NOTHING;
}
/*
+2
View File
@@ -695,6 +695,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1166,
/**/
1165,
/**/