patch 8.1.2120: some MB_ macros are more complicated than necessary

Problem:    Some MB_ macros are more complicated than necessary. (Dominique
            Pelle)
Solution:   Simplify the macros.  Expand inline.
This commit is contained in:
Bram Moolenaar
2019-10-06 22:00:13 +02:00
parent 524f3b19ae
commit 1614a14901
18 changed files with 44 additions and 44 deletions

View File

@@ -92,7 +92,7 @@ find_word_under_cursor(
lbuf = ml_get_buf(curwin->w_buffer, VIsual.lnum, FALSE); lbuf = ml_get_buf(curwin->w_buffer, VIsual.lnum, FALSE);
len = epos->col - spos->col; len = epos->col - spos->col;
if (*p_sel != 'e') if (*p_sel != 'e')
len += MB_PTR2LEN(lbuf + epos->col); len += mb_ptr2len(lbuf + epos->col);
lbuf = vim_strnsave(lbuf + spos->col, len); lbuf = vim_strnsave(lbuf + spos->col, len);
lnum = spos->lnum; lnum = spos->lnum;
col = spos->col; col = spos->col;

View File

@@ -744,7 +744,7 @@ diff_write_buffer(buf_T *buf, diffin_T *din)
// xdiff doesn't support ignoring case, fold-case the text. // xdiff doesn't support ignoring case, fold-case the text.
c = PTR2CHAR(s); c = PTR2CHAR(s);
c = enc_utf8 ? utf_fold(c) : MB_TOLOWER(c); c = enc_utf8 ? utf_fold(c) : MB_TOLOWER(c);
orig_len = MB_PTR2LEN(s); orig_len = mb_ptr2len(s);
if (mb_char2bytes(c, cbuf) != orig_len) if (mb_char2bytes(c, cbuf) != orig_len)
// TODO: handle byte length difference // TODO: handle byte length difference
mch_memmove(ptr + len, s, orig_len); mch_memmove(ptr + len, s, orig_len);

View File

@@ -6446,7 +6446,7 @@ do_string_sub(
if (zero_width == regmatch.startp[0]) if (zero_width == regmatch.startp[0])
{ {
/* avoid getting stuck on a match with an empty string */ /* avoid getting stuck on a match with an empty string */
i = MB_PTR2LEN(tail); i = mb_ptr2len(tail);
mch_memmove((char_u *)ga.ga_data + ga.ga_len, tail, mch_memmove((char_u *)ga.ga_data + ga.ga_len, tail,
(size_t)i); (size_t)i);
ga.ga_len += i; ga.ga_len += i;

View File

@@ -6454,7 +6454,7 @@ f_setcharsearch(typval_T *argvars, typval_T *rettv UNUSED)
} }
else else
set_last_csearch(PTR2CHAR(csearch), set_last_csearch(PTR2CHAR(csearch),
csearch, MB_PTR2LEN(csearch)); csearch, mb_ptr2len(csearch));
} }
di = dict_find(d, (char_u *)"forward", -1); di = dict_find(d, (char_u *)"forward", -1);

View File

@@ -2781,7 +2781,7 @@ redraw:
} }
else else
{ {
len = MB_PTR2LEN(p); len = mb_ptr2len(p);
msg_outtrans_len(p, len); msg_outtrans_len(p, len);
vcol += ptr2cells(p); vcol += ptr2cells(p);
p += len; p += len;

View File

@@ -2613,9 +2613,9 @@ vim_fnamencmp(char_u *x, char_u *y, size_t len)
&& !(cx == '/' && cy == '\\') && !(cx == '/' && cy == '\\')
&& !(cx == '\\' && cy == '/'))) && !(cx == '\\' && cy == '/')))
break; break;
len -= MB_PTR2LEN(px); len -= mb_ptr2len(px);
px += MB_PTR2LEN(px); px += mb_ptr2len(px);
py += MB_PTR2LEN(py); py += mb_ptr2len(py);
} }
if (len == 0) if (len == 0)
return 0; return 0;
@@ -3769,14 +3769,14 @@ pathcmp(const char *p, const char *q, int maxlen)
: c1 - c2; // no match : c1 - c2; // no match
} }
i += MB_PTR2LEN((char_u *)p + i); i += mb_ptr2len((char_u *)p + i);
j += MB_PTR2LEN((char_u *)q + j); j += mb_ptr2len((char_u *)q + j);
} }
if (s == NULL) // "i" or "j" ran into "maxlen" if (s == NULL) // "i" or "j" ran into "maxlen"
return 0; return 0;
c1 = PTR2CHAR((char_u *)s + i); c1 = PTR2CHAR((char_u *)s + i);
c2 = PTR2CHAR((char_u *)s + i + MB_PTR2LEN((char_u *)s + i)); c2 = PTR2CHAR((char_u *)s + i + mb_ptr2len((char_u *)s + i));
// ignore a trailing slash, but not "//" or ":/" // ignore a trailing slash, but not "//" or ":/"
if (c2 == NUL if (c2 == NUL
&& i > 0 && i > 0

View File

@@ -1337,8 +1337,8 @@ ff_wc_equal(char_u *s1, char_u *s2)
prev2 = prev1; prev2 = prev1;
prev1 = c1; prev1 = c1;
i += MB_PTR2LEN(s1 + i); i += mb_ptr2len(s1 + i);
j += MB_PTR2LEN(s2 + j); j += mb_ptr2len(s2 + j);
} }
return s1[i] == s2[j]; return s1[i] == s2[j];
} }

View File

@@ -2254,7 +2254,7 @@ handle_mapping(
char_u *p2 = mb_unescape(&p1); char_u *p2 = mb_unescape(&p1);
if (has_mbyte && p2 != NULL if (has_mbyte && p2 != NULL
&& MB_BYTE2LEN(tb_c1) > MB_PTR2LEN(p2)) && MB_BYTE2LEN(tb_c1) > mb_ptr2len(p2))
mlen = 0; mlen = 0;
} }

View File

@@ -4392,7 +4392,7 @@ update_search_hl(
&& col >= shl->startcol && col >= shl->startcol
&& col < shl->endcol) && col < shl->endcol)
{ {
int next_col = col + MB_PTR2LEN(*line + col); int next_col = col + mb_ptr2len(*line + col);
if (shl->endcol < next_col) if (shl->endcol < next_col)
shl->endcol = next_col; shl->endcol = next_col;

View File

@@ -229,12 +229,10 @@
* MB_COPY_CHAR(f, t): copy one char from "f" to "t" and advance the pointers. * MB_COPY_CHAR(f, t): copy one char from "f" to "t" and advance the pointers.
* PTR2CHAR(): get character from pointer. * PTR2CHAR(): get character from pointer.
*/ */
/* Get the length of the character p points to, including composing chars */
#define MB_PTR2LEN(p) (has_mbyte ? (*mb_ptr2len)(p) : (*p == NUL ? 0 : 1))
/* Advance multi-byte pointer, skip over composing chars. */ /* Advance multi-byte pointer, skip over composing chars. */
#define MB_PTR_ADV(p) p += has_mbyte ? (*mb_ptr2len)(p) : (*p == NUL ? 0 : 1) #define MB_PTR_ADV(p) p += (*mb_ptr2len)(p)
/* Advance multi-byte pointer, do not skip over composing chars. */ /* Advance multi-byte pointer, do not skip over composing chars. */
#define MB_CPTR_ADV(p) p += enc_utf8 ? utf_ptr2len(p) : has_mbyte ? (*mb_ptr2len)(p) : (*p == NUL ? 0 : 1) #define MB_CPTR_ADV(p) p += enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p)
/* Backup multi-byte pointer. Only use with "p" > "s" ! */ /* Backup multi-byte pointer. Only use with "p" > "s" ! */
#define MB_PTR_BACK(s, p) p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1 #define MB_PTR_BACK(s, p) p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1
/* get length of multi-byte char, not including composing chars */ /* get length of multi-byte char, not including composing chars */

View File

@@ -3223,7 +3223,7 @@ do_addsub(
while (ptr[col] != NUL while (ptr[col] != NUL
&& !vim_isdigit(ptr[col]) && !vim_isdigit(ptr[col])
&& !(doalp && ASCII_ISALPHA(ptr[col]))) && !(doalp && ASCII_ISALPHA(ptr[col])))
col += MB_PTR2LEN(ptr + col); col += mb_ptr2len(ptr + col);
while (col > 0 while (col > 0
&& vim_isdigit(ptr[col - 1]) && vim_isdigit(ptr[col - 1])
@@ -3242,7 +3242,7 @@ do_addsub(
&& !vim_isdigit(ptr[col]) && !vim_isdigit(ptr[col])
&& !(doalp && ASCII_ISALPHA(ptr[col]))) && !(doalp && ASCII_ISALPHA(ptr[col])))
{ {
int mb_len = MB_PTR2LEN(ptr + col); int mb_len = mb_ptr2len(ptr + col);
col += mb_len; col += mb_len;
length -= mb_len; length -= mb_len;

View File

@@ -1654,7 +1654,7 @@ mch_print_text_out(char_u *p, int len)
/* This is wrong when printing spaces for a TAB. */ /* This is wrong when printing spaces for a TAB. */
if (p[len] != NUL) if (p[len] != NUL)
{ {
wlen = MB_PTR2LEN(p + len); wlen = mb_ptr2len(p + len);
wp = enc_to_utf16(p + len, &wlen); wp = enc_to_utf16(p + len, &wlen);
if (wp != NULL) if (wp != NULL)
{ {

View File

@@ -1151,7 +1151,7 @@ split_message(char_u *mesg, pumitem_T **array)
} }
} }
item->cells += ptr2cells(p); item->cells += ptr2cells(p);
p += MB_PTR2LEN(p); p += mb_ptr2len(p);
} }
item->bytelen = p - item->start; item->bytelen = p - item->start;
if (item->cells > max_cells) if (item->cells > max_cells)
@@ -1195,7 +1195,7 @@ split_message(char_u *mesg, pumitem_T **array)
{ {
cells = item->indent * 2; cells = item->indent * 2;
for (p = item->start + skip; p < item->start + item->bytelen; for (p = item->start + skip; p < item->start + item->bytelen;
p += MB_PTR2LEN(p)) p += mb_ptr2len(p))
if ((cells += ptr2cells(p)) > BALLOON_MIN_WIDTH) if ((cells += ptr2cells(p)) > BALLOON_MIN_WIDTH)
break; break;
thislen = p - (item->start + skip); thislen = p - (item->start + skip);

View File

@@ -2078,7 +2078,7 @@ findmatchlimit(
find_mps_values(&initc, &findc, &backwards, FALSE); find_mps_values(&initc, &findc, &backwards, FALSE);
if (findc) if (findc)
break; break;
pos.col += MB_PTR2LEN(linep + pos.col); pos.col += mb_ptr2len(linep + pos.col);
} }
if (!findc) if (!findc)
{ {
@@ -2657,14 +2657,14 @@ showmatch(
if (PTR2CHAR(p) == c && (curwin->w_p_rl ^ p_ri)) if (PTR2CHAR(p) == c && (curwin->w_p_rl ^ p_ri))
break; break;
#endif #endif
p += MB_PTR2LEN(p) + 1; p += mb_ptr2len(p) + 1;
if (PTR2CHAR(p) == c if (PTR2CHAR(p) == c
#ifdef FEAT_RIGHTLEFT #ifdef FEAT_RIGHTLEFT
&& !(curwin->w_p_rl ^ p_ri) && !(curwin->w_p_rl ^ p_ri)
#endif #endif
) )
break; break;
p += MB_PTR2LEN(p); p += mb_ptr2len(p);
if (*p == NUL) if (*p == NUL)
return; return;
} }
@@ -5633,7 +5633,7 @@ exit_matched:
&& action == ACTION_EXPAND && action == ACTION_EXPAND
&& !(compl_cont_status & CONT_SOL) && !(compl_cont_status & CONT_SOL)
&& *startp != NUL && *startp != NUL
&& *(p = startp + MB_PTR2LEN(startp)) != NUL) && *(p = startp + mb_ptr2len(startp)) != NUL)
goto search_line; goto search_line;
} }
line_breakcheck(); line_breakcheck();

View File

@@ -2621,7 +2621,7 @@ spell_iswordp(
if (has_mbyte) if (has_mbyte)
{ {
l = MB_PTR2LEN(p); l = mb_ptr2len(p);
s = p; s = p;
if (l == 1) if (l == 1)
{ {

View File

@@ -1782,7 +1782,7 @@ suggest_trie_walk(
{ {
int l; int l;
l = MB_PTR2LEN(fword + sp->ts_fidx); l = mb_ptr2len(fword + sp->ts_fidx);
if (fword_ends) if (fword_ends)
{ {
// Copy the skipped character to preword. // Copy the skipped character to preword.
@@ -1937,7 +1937,7 @@ suggest_trie_walk(
// Correct ts_fidx for the byte length of the // Correct ts_fidx for the byte length of the
// character (we didn't check that before). // character (we didn't check that before).
sp->ts_fidx = sp->ts_fcharstart sp->ts_fidx = sp->ts_fcharstart
+ MB_PTR2LEN( + mb_ptr2len(
fword + sp->ts_fcharstart); fword + sp->ts_fcharstart);
// For changing a composing character adjust // For changing a composing character adjust
// the score from SCORE_SUBST to // the score from SCORE_SUBST to
@@ -2053,7 +2053,7 @@ suggest_trie_walk(
if (has_mbyte) if (has_mbyte)
{ {
c = mb_ptr2char(fword + sp->ts_fidx); c = mb_ptr2char(fword + sp->ts_fidx);
stack[depth].ts_fidx += MB_PTR2LEN(fword + sp->ts_fidx); stack[depth].ts_fidx += mb_ptr2len(fword + sp->ts_fidx);
if (enc_utf8 && utf_iscomposing(c)) if (enc_utf8 && utf_iscomposing(c))
stack[depth].ts_score -= SCORE_DEL - SCORE_DELCOMP; stack[depth].ts_score -= SCORE_DEL - SCORE_DELCOMP;
else if (c == mb_ptr2char(fword + stack[depth].ts_fidx)) else if (c == mb_ptr2char(fword + stack[depth].ts_fidx))
@@ -2266,9 +2266,9 @@ suggest_trie_walk(
p = fword + sp->ts_fidx; p = fword + sp->ts_fidx;
if (has_mbyte) if (has_mbyte)
{ {
n = MB_PTR2LEN(p); n = mb_ptr2len(p);
c = mb_ptr2char(p + n); c = mb_ptr2char(p + n);
mch_memmove(p + MB_PTR2LEN(p + n), p, n); mch_memmove(p + mb_ptr2len(p + n), p, n);
mb_char2bytes(c, p); mb_char2bytes(c, p);
} }
else else
@@ -2354,11 +2354,11 @@ suggest_trie_walk(
p = fword + sp->ts_fidx; p = fword + sp->ts_fidx;
if (has_mbyte) if (has_mbyte)
{ {
n = MB_PTR2LEN(p); n = mb_ptr2len(p);
c2 = mb_ptr2char(p + n); c2 = mb_ptr2char(p + n);
fl = MB_PTR2LEN(p + n); fl = mb_ptr2len(p + n);
c = mb_ptr2char(p + n + fl); c = mb_ptr2char(p + n + fl);
tl = MB_PTR2LEN(p + n + fl); tl = mb_ptr2len(p + n + fl);
mch_memmove(p + fl + tl, p, n); mch_memmove(p + fl + tl, p, n);
mb_char2bytes(c, p); mb_char2bytes(c, p);
mb_char2bytes(c2, p + tl); mb_char2bytes(c2, p + tl);
@@ -2427,10 +2427,10 @@ suggest_trie_walk(
p = fword + sp->ts_fidx; p = fword + sp->ts_fidx;
if (has_mbyte) if (has_mbyte)
{ {
n = MB_PTR2LEN(p); n = mb_ptr2len(p);
n += MB_PTR2LEN(p + n); n += mb_ptr2len(p + n);
c = mb_ptr2char(p + n); c = mb_ptr2char(p + n);
tl = MB_PTR2LEN(p + n); tl = mb_ptr2len(p + n);
mch_memmove(p + tl, p, n); mch_memmove(p + tl, p, n);
mb_char2bytes(c, p); mb_char2bytes(c, p);
} }
@@ -2489,9 +2489,9 @@ suggest_trie_walk(
if (has_mbyte) if (has_mbyte)
{ {
c = mb_ptr2char(p); c = mb_ptr2char(p);
tl = MB_PTR2LEN(p); tl = mb_ptr2len(p);
n = MB_PTR2LEN(p + tl); n = mb_ptr2len(p + tl);
n += MB_PTR2LEN(p + tl + n); n += mb_ptr2len(p + tl + n);
mch_memmove(p, p + tl, n); mch_memmove(p, p + tl, n);
mb_char2bytes(c, p + n); mb_char2bytes(c, p + n);
} }

View File

@@ -5431,7 +5431,7 @@ f_term_scrape(typval_T *argvars, typval_T *rettv)
attrs = cellattr->attrs; attrs = cellattr->attrs;
fg = cellattr->fg; fg = cellattr->fg;
bg = cellattr->bg; bg = cellattr->bg;
len = MB_PTR2LEN(p); len = mb_ptr2len(p);
mch_memmove(mbs, p, len); mch_memmove(mbs, p, len);
mbs[len] = NUL; mbs[len] = NUL;
p += len; p += len;

View File

@@ -753,6 +753,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 */
/**/
2120,
/**/ /**/
2119, 2119,
/**/ /**/