changeset 18251:c8a53c0daeed v8.1.2120

patch 8.1.2120: some MB_ macros are more complicated than necessary Commit: https://github.com/vim/vim/commit/1614a14901558ca091329315d14a7d5e1b53aa47 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Oct 6 22:00:13 2019 +0200 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.
author Bram Moolenaar <Bram@vim.org>
date Sun, 06 Oct 2019 22:15:04 +0200
parents f1d9d3f76c98
children 76ccaf609364
files src/beval.c src/diff.c src/eval.c src/evalfunc.c src/ex_getln.c src/filepath.c src/findfile.c src/getchar.c src/highlight.c src/macros.h src/ops.c src/os_mswin.c src/popupmenu.c src/search.c src/spell.c src/spellsuggest.c src/terminal.c src/version.c
diffstat 18 files changed, 44 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/src/beval.c
+++ b/src/beval.c
@@ -92,7 +92,7 @@ find_word_under_cursor(
 			lbuf = ml_get_buf(curwin->w_buffer, VIsual.lnum, FALSE);
 			len = epos->col - spos->col;
 			if (*p_sel != 'e')
-			    len += MB_PTR2LEN(lbuf + epos->col);
+			    len += mb_ptr2len(lbuf + epos->col);
 			lbuf = vim_strnsave(lbuf + spos->col, len);
 			lnum = spos->lnum;
 			col = spos->col;
--- a/src/diff.c
+++ b/src/diff.c
@@ -744,7 +744,7 @@ diff_write_buffer(buf_T *buf, diffin_T *
 		// xdiff doesn't support ignoring case, fold-case the text.
 		c = PTR2CHAR(s);
 		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)
 		    // TODO: handle byte length difference
 		    mch_memmove(ptr + len, s, orig_len);
--- a/src/eval.c
+++ b/src/eval.c
@@ -6446,7 +6446,7 @@ do_string_sub(
 		if (zero_width == regmatch.startp[0])
 		{
 		    /* 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,
 								   (size_t)i);
 		    ga.ga_len += i;
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -6454,7 +6454,7 @@ f_setcharsearch(typval_T *argvars, typva
 	    }
 	    else
 		set_last_csearch(PTR2CHAR(csearch),
-						csearch, MB_PTR2LEN(csearch));
+						csearch, mb_ptr2len(csearch));
 	}
 
 	di = dict_find(d, (char_u *)"forward", -1);
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2781,7 +2781,7 @@ redraw:
 		    }
 		    else
 		    {
-			len = MB_PTR2LEN(p);
+			len = mb_ptr2len(p);
 			msg_outtrans_len(p, len);
 			vcol += ptr2cells(p);
 			p += len;
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -2613,9 +2613,9 @@ vim_fnamencmp(char_u *x, char_u *y, size
 		&& !(cx == '/' && cy == '\\')
 		&& !(cx == '\\' && cy == '/')))
 	    break;
-	len -= MB_PTR2LEN(px);
-	px += MB_PTR2LEN(px);
-	py += MB_PTR2LEN(py);
+	len -= mb_ptr2len(px);
+	px += mb_ptr2len(px);
+	py += mb_ptr2len(py);
     }
     if (len == 0)
 	return 0;
@@ -3769,14 +3769,14 @@ pathcmp(const char *p, const char *q, in
 		    : c1 - c2;  // no match
 	}
 
-	i += MB_PTR2LEN((char_u *)p + i);
-	j += MB_PTR2LEN((char_u *)q + j);
+	i += mb_ptr2len((char_u *)p + i);
+	j += mb_ptr2len((char_u *)q + j);
     }
     if (s == NULL)	// "i" or "j" ran into "maxlen"
 	return 0;
 
     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 ":/"
     if (c2 == NUL
 	    && i > 0
--- a/src/findfile.c
+++ b/src/findfile.c
@@ -1337,8 +1337,8 @@ ff_wc_equal(char_u *s1, char_u *s2)
 	prev2 = prev1;
 	prev1 = c1;
 
-	i += MB_PTR2LEN(s1 + i);
-	j += MB_PTR2LEN(s2 + j);
+	i += mb_ptr2len(s1 + i);
+	j += mb_ptr2len(s2 + j);
     }
     return s1[i] == s2[j];
 }
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2254,7 +2254,7 @@ handle_mapping(
 		    char_u *p2 = mb_unescape(&p1);
 
 		    if (has_mbyte && p2 != NULL
-					&& MB_BYTE2LEN(tb_c1) > MB_PTR2LEN(p2))
+					&& MB_BYTE2LEN(tb_c1) > mb_ptr2len(p2))
 			mlen = 0;
 		}
 
--- a/src/highlight.c
+++ b/src/highlight.c
@@ -4392,7 +4392,7 @@ update_search_hl(
 		    && col >= shl->startcol
 		    && col < shl->endcol)
 	    {
-		int next_col = col + MB_PTR2LEN(*line + col);
+		int next_col = col + mb_ptr2len(*line + col);
 
 		if (shl->endcol < next_col)
 		    shl->endcol = next_col;
--- a/src/macros.h
+++ b/src/macros.h
@@ -229,12 +229,10 @@
  * MB_COPY_CHAR(f, t): copy one char from "f" to "t" and advance the pointers.
  * 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. */
-#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. */
-#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" ! */
 #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 */
--- a/src/ops.c
+++ b/src/ops.c
@@ -3223,7 +3223,7 @@ do_addsub(
 	    while (ptr[col] != NUL
 		    && !vim_isdigit(ptr[col])
 		    && !(doalp && ASCII_ISALPHA(ptr[col])))
-		col += MB_PTR2LEN(ptr + col);
+		col += mb_ptr2len(ptr + col);
 
 	    while (col > 0
 		    && vim_isdigit(ptr[col - 1])
@@ -3242,7 +3242,7 @@ do_addsub(
 		&& !vim_isdigit(ptr[col])
 		&& !(doalp && ASCII_ISALPHA(ptr[col])))
 	{
-	    int mb_len = MB_PTR2LEN(ptr + col);
+	    int mb_len = mb_ptr2len(ptr + col);
 
 	    col += mb_len;
 	    length -= mb_len;
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -1654,7 +1654,7 @@ mch_print_text_out(char_u *p, int len)
     /* This is wrong when printing spaces for a TAB. */
     if (p[len] != NUL)
     {
-	wlen = MB_PTR2LEN(p + len);
+	wlen = mb_ptr2len(p + len);
 	wp = enc_to_utf16(p + len, &wlen);
 	if (wp != NULL)
 	{
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -1151,7 +1151,7 @@ split_message(char_u *mesg, pumitem_T **
 		}
 	    }
 	    item->cells += ptr2cells(p);
-	    p += MB_PTR2LEN(p);
+	    p += mb_ptr2len(p);
 	}
 	item->bytelen = p - item->start;
 	if (item->cells > max_cells)
@@ -1195,7 +1195,7 @@ split_message(char_u *mesg, pumitem_T **
 	    {
 		cells = item->indent * 2;
 		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)
 			break;
 		thislen = p - (item->start + skip);
--- a/src/search.c
+++ b/src/search.c
@@ -2078,7 +2078,7 @@ findmatchlimit(
 		    find_mps_values(&initc, &findc, &backwards, FALSE);
 		    if (findc)
 			break;
-		    pos.col += MB_PTR2LEN(linep + pos.col);
+		    pos.col += mb_ptr2len(linep + pos.col);
 		}
 		if (!findc)
 		{
@@ -2657,14 +2657,14 @@ showmatch(
 	if (PTR2CHAR(p) == c && (curwin->w_p_rl ^ p_ri))
 	    break;
 #endif
-	p += MB_PTR2LEN(p) + 1;
+	p += mb_ptr2len(p) + 1;
 	if (PTR2CHAR(p) == c
 #ifdef FEAT_RIGHTLEFT
 		&& !(curwin->w_p_rl ^ p_ri)
 #endif
 	   )
 	    break;
-	p += MB_PTR2LEN(p);
+	p += mb_ptr2len(p);
 	if (*p == NUL)
 	    return;
     }
@@ -5633,7 +5633,7 @@ exit_matched:
 		    && action == ACTION_EXPAND
 		    && !(compl_cont_status & CONT_SOL)
 		    && *startp != NUL
-		    && *(p = startp + MB_PTR2LEN(startp)) != NUL)
+		    && *(p = startp + mb_ptr2len(startp)) != NUL)
 		goto search_line;
 	}
 	line_breakcheck();
--- a/src/spell.c
+++ b/src/spell.c
@@ -2621,7 +2621,7 @@ spell_iswordp(
 
     if (has_mbyte)
     {
-	l = MB_PTR2LEN(p);
+	l = mb_ptr2len(p);
 	s = p;
 	if (l == 1)
 	{
--- a/src/spellsuggest.c
+++ b/src/spellsuggest.c
@@ -1782,7 +1782,7 @@ suggest_trie_walk(
 			{
 			    int	    l;
 
-			    l = MB_PTR2LEN(fword + sp->ts_fidx);
+			    l = mb_ptr2len(fword + sp->ts_fidx);
 			    if (fword_ends)
 			    {
 				// Copy the skipped character to preword.
@@ -1937,7 +1937,7 @@ suggest_trie_walk(
 				// Correct ts_fidx for the byte length of the
 				// character (we didn't check that before).
 				sp->ts_fidx = sp->ts_fcharstart
-					    + MB_PTR2LEN(
+					    + mb_ptr2len(
 						    fword + sp->ts_fcharstart);
 				// For changing a composing character adjust
 				// the score from SCORE_SUBST to
@@ -2053,7 +2053,7 @@ suggest_trie_walk(
 		if (has_mbyte)
 		{
 		    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))
 			stack[depth].ts_score -= SCORE_DEL - SCORE_DELCOMP;
 		    else if (c == mb_ptr2char(fword + stack[depth].ts_fidx))
@@ -2266,9 +2266,9 @@ suggest_trie_walk(
 	    p = fword + sp->ts_fidx;
 	    if (has_mbyte)
 	    {
-		n = MB_PTR2LEN(p);
+		n = mb_ptr2len(p);
 		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);
 	    }
 	    else
@@ -2354,11 +2354,11 @@ suggest_trie_walk(
 	    p = fword + sp->ts_fidx;
 	    if (has_mbyte)
 	    {
-		n = MB_PTR2LEN(p);
+		n = mb_ptr2len(p);
 		c2 = mb_ptr2char(p + n);
-		fl = MB_PTR2LEN(p + n);
+		fl = mb_ptr2len(p + n);
 		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);
 		mb_char2bytes(c, p);
 		mb_char2bytes(c2, p + tl);
@@ -2427,10 +2427,10 @@ suggest_trie_walk(
 	    p = fword + sp->ts_fidx;
 	    if (has_mbyte)
 	    {
-		n = MB_PTR2LEN(p);
-		n += MB_PTR2LEN(p + n);
+		n = mb_ptr2len(p);
+		n += mb_ptr2len(p + n);
 		c = mb_ptr2char(p + n);
-		tl = MB_PTR2LEN(p + n);
+		tl = mb_ptr2len(p + n);
 		mch_memmove(p + tl, p, n);
 		mb_char2bytes(c, p);
 	    }
@@ -2489,9 +2489,9 @@ suggest_trie_walk(
 	    if (has_mbyte)
 	    {
 		c = mb_ptr2char(p);
-		tl = MB_PTR2LEN(p);
-		n = MB_PTR2LEN(p + tl);
-		n += MB_PTR2LEN(p + tl + n);
+		tl = mb_ptr2len(p);
+		n = mb_ptr2len(p + tl);
+		n += mb_ptr2len(p + tl + n);
 		mch_memmove(p, p + tl, n);
 		mb_char2bytes(c, p + n);
 	    }
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -5431,7 +5431,7 @@ f_term_scrape(typval_T *argvars, typval_
 	    attrs = cellattr->attrs;
 	    fg = cellattr->fg;
 	    bg = cellattr->bg;
-	    len = MB_PTR2LEN(p);
+	    len = mb_ptr2len(p);
 	    mch_memmove(mbs, p, len);
 	    mbs[len] = NUL;
 	    p += len;
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2120,
+/**/
     2119,
 /**/
     2118,