mirror of
https://github.com/zoriya/vim.git
synced 2025-12-20 14:15:18 +00:00
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:
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 */
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user