# HG changeset patch # User Bram Moolenaar # Date 1403712922 -7200 # Node ID ce284c205558d103326a4c3f22f181774690b3eb # Parent 458f55308d630034cce99cb1f70da234df0ddd3f updated for version 7.4.344 Problem: Unessecary initializations and other things related to matchaddpos(). Solution: Code cleanup. (Alexey Radkov) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -4391,17 +4391,17 @@ matchaddpos({group}, {pos}[, {priority}[ required, for example to highlight matching parentheses. The list {pos} can contain one of these items: - - A number. This while line will be highlighted. The first + - A number. This whole line will be highlighted. The first line has number 1. - A list with one number, e.g., [23]. The whole line with this number will be highlighted. - A list with two numbers, e.g., [23, 11]. The first number is - the line number, the second one the column number (first - column is 1). The character at this position will be - highlighted. + the line number, the second one is the column number (first + column is 1, the value must correspond to the byte index as + |col()| would return). The character at this position will + be highlighted. - A list with three numbers, e.g., [23, 11, 3]. As above, but - the third number gives the length of the highlight in screen - cells. + the third number gives the length of the highlight in bytes. The maximum number of positions is 8. diff --git a/src/screen.c b/src/screen.c --- a/src/screen.c +++ b/src/screen.c @@ -7531,7 +7531,7 @@ next_search_hl_pos(shl, lnum, posmatch, colnr_T mincol; /* minimal column for a match */ { int i; - int bot = -1; + int bot = -1; shl->lnum = 0; for (i = posmatch->cur; i < MAXPOSMATCH; i++) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -735,6 +735,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 344, +/**/ 343, /**/ 342, diff --git a/src/window.c b/src/window.c --- a/src/window.c +++ b/src/window.c @@ -6813,7 +6813,6 @@ match_add(wp, grp, pat, prio, id, pos_li m->id = id; m->priority = prio; m->pattern = pat == NULL ? NULL : vim_strsave(pat); - m->pos.cur = 0; m->hlg_id = hlg_id; m->match.regprog = regprog; m->match.rmm_ic = FALSE; @@ -6827,7 +6826,7 @@ match_add(wp, grp, pat, prio, id, pos_li listitem_T *li; int i; - for (i = 0, li = pos_list->lv_first; i < MAXPOSMATCH; + for (i = 0, li = pos_list->lv_first; li != NULL && i < MAXPOSMATCH; i++, li = li->li_next) { linenr_T lnum = 0; @@ -6837,11 +6836,6 @@ match_add(wp, grp, pat, prio, id, pos_li listitem_T *subli; int error = FALSE; - if (li == NULL) - { - m->pos.pos[i].lnum = 0; - break; - } if (li->li_tv.v_type == VAR_LIST) { subl = li->li_tv.vval.v_list; @@ -6853,12 +6847,12 @@ match_add(wp, grp, pat, prio, id, pos_li lnum = get_tv_number_chk(&subli->li_tv, &error); if (error == TRUE) goto fail; - m->pos.pos[i].lnum = lnum; if (lnum == 0) { --i; continue; } + m->pos.pos[i].lnum = lnum; subli = subli->li_next; if (subli != NULL) { @@ -6879,7 +6873,10 @@ match_add(wp, grp, pat, prio, id, pos_li else if (li->li_tv.v_type == VAR_NUMBER) { if (li->li_tv.vval.v_number == 0) + { + --i; continue; + } m->pos.pos[i].lnum = li->li_tv.vval.v_number; m->pos.pos[i].col = 0; m->pos.pos[i].len = 0;