diff options
author | Bram Moolenaar <Bram@vim.org> | 2005-08-10 21:07:57 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2005-08-10 21:07:57 +0000 |
commit | 0fa313a71870ccc2ba63da25a7abea850f5b3d02 (patch) | |
tree | fc949b566e1d78f6eea570aab55c52b7d6a6b052 | |
parent | c388fbf9d99a8950c8c9a01466cfb8baa104ee8c (diff) |
updated for version 7.0127v7.0127
47 files changed, 637 insertions, 464 deletions
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 1ae2ded975..68c220a023 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.0aa. Last change: 2005 Aug 09 +*todo.txt* For Vim version 7.0aa. Last change: 2005 Aug 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,18 +30,8 @@ be worked on, but only if you sponsor Vim development. See |sponsor|. *known-bugs* -------------------- Known bugs and current work ----------------------- -Spell checking: code for pre-compressing tree. (Olaf Seibert) -Any problems with the reference counting? - -spell checking for Yiddish: (Raphael Finkel) -- use ~/tmp/yiddish.uspell.dat -- suggestions are not displayed with 'rightleft' -- suggestions don't have composing characters -- out-of-mem error when using suggestion? - -Spell suggestion for "WOrd" should be "Word" instead of "word". - Spell checking: default value for 'spellcapcheck' in spell file? +For Hebrew and Yiddish it should be empty. When 'insertmode' is set, CTRL-L no longer moves the cursor left. What compatibility problems does this cause? diff --git a/runtime/spell/main.aap b/runtime/spell/main.aap index 34768b6607..44d19906bc 100644 --- a/runtime/spell/main.aap +++ b/runtime/spell/main.aap @@ -1,7 +1,7 @@ # "aap": generate all the .spl files # "aap diff" create all the diff files -LANG = de en fr he it nl pl +LANG = de en fr he it nl pl yi diff: $*LANG/diff :print done diff --git a/runtime/spell/yi/main.aap b/runtime/spell/yi/main.aap new file mode 100644 index 0000000000..a426684d4e --- /dev/null +++ b/runtime/spell/yi/main.aap @@ -0,0 +1,33 @@ +# Aap recipe for Hebrew Vim spell files. + +# Use a freshly compiled Vim if it exists. +@if os.path.exists('../../../src/vim'): + VIM = ../../../src/vim +@else: + :progsearch VIM vim + +SPELLDIR = .. +FILE = wordlist.utf8.txt + +all: $SPELLDIR/yi.utf-8.spl ../README_yi.txt + +$SPELLDIR/yi.utf-8.spl : $VIM $FILE + :sys $VIM -u NONE -e -c "set enc=utf-8" + -c "mkspell! $(SPELLDIR)/yi $FILE" -c q + +../README_yi.txt : README.txt + :copy $source $target + +# +# Fetch the word list when needed. +# +URLDIR = http://www.cs.uky.edu/~raphael/yiddish +:attr {fetch = $URLDIR/%file%} $FILE + + +# There is no diff file, the word list is used as-is +diff: + :print No diff file. + + +# vim: set sts=4 sw=4 : diff --git a/src/buffer.c b/src/buffer.c index 09ca27db82..1fb95fdd74 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -3346,7 +3346,7 @@ build_stl_str_hl(wp, out, outlen, fmt, fillchar, maxwidth, hl) while (l >= item[groupitem[groupdepth]].maxwid) { l -= ptr2cells(t + n); - n += (*mb_ptr2len_check)(t + n); + n += (*mb_ptr2len)(t + n); } } else @@ -3708,7 +3708,7 @@ build_stl_str_hl(wp, out, outlen, fmt, fillchar, maxwidth, hl) if (has_mbyte) { l -= ptr2cells(t); - t += (*mb_ptr2len_check)(t); + t += (*mb_ptr2len)(t); } else #endif @@ -3836,7 +3836,7 @@ build_stl_str_hl(wp, out, outlen, fmt, fillchar, maxwidth, hl) width += ptr2cells(s); if (width >= maxwidth) break; - s += (*mb_ptr2len_check)(s); + s += (*mb_ptr2len)(s); } /* Fill up for half a double-wide character. */ while (++width < maxwidth) @@ -3861,7 +3861,7 @@ build_stl_str_hl(wp, out, outlen, fmt, fillchar, maxwidth, hl) while (width >= maxwidth) { width -= ptr2cells(s + n); - n += (*mb_ptr2len_check)(s + n); + n += (*mb_ptr2len)(s + n); } } else diff --git a/src/charset.c b/src/charset.c index 7ea9bbb8f6..c14bef03e1 100644 --- a/src/charset.c +++ b/src/charset.c @@ -296,7 +296,7 @@ trans_characters(buf, bufsize) { # ifdef FEAT_MBYTE /* Assume a multi-byte character doesn't need translation. */ - if (has_mbyte && (trs_len = (*mb_ptr2len_check)(buf)) > 1) + if (has_mbyte && (trs_len = (*mb_ptr2len)(buf)) > 1) len -= trs_len; else # endif @@ -342,7 +342,7 @@ transstr(s) p = s; while (*p != NUL) { - if ((l = (*mb_ptr2len_check)(p)) > 1) + if ((l = (*mb_ptr2len)(p)) > 1) { c = (*mb_ptr2char)(p); p += l; @@ -375,7 +375,7 @@ transstr(s) while (*p != NUL) { #ifdef FEAT_MBYTE - if (has_mbyte && (l = (*mb_ptr2len_check)(p)) > 1) + if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1) { c = (*mb_ptr2char)(p); if (vim_isprintc(c)) @@ -488,7 +488,7 @@ str_foldcase(str, orglen, buf, buflen) } } /* skip to next multi-byte char */ - i += (*mb_ptr2len_check)(STR_PTR(i)); + i += (*mb_ptr2len)(STR_PTR(i)); } else #endif @@ -772,7 +772,7 @@ vim_strnsize(s, len) #ifdef FEAT_MBYTE if (has_mbyte) { - int l = (*mb_ptr2len_check)(s); + int l = (*mb_ptr2len)(s); size += ptr2cells(s); s += l; diff --git a/src/diff.c b/src/diff.c index 3265986951..f2af8e2744 100644 --- a/src/diff.c +++ b/src/diff.c @@ -1513,8 +1513,8 @@ diff_cmp(s1, s2) else { #ifdef FEAT_MBYTE - l = (*mb_ptr2len_check)(p1); - if (l != (*mb_ptr2len_check)(p2)) + l = (*mb_ptr2len)(p1); + if (l != (*mb_ptr2len)(p2)) break; if (l > 1) { diff --git a/src/edit.c b/src/edit.c index 1396c10d7b..41214b837b 100644 --- a/src/edit.c +++ b/src/edit.c @@ -444,7 +444,7 @@ edit(cmdchar, startln, count) #ifdef FEAT_MBYTE else if (has_mbyte) { - i = (*mb_ptr2len_check)(ptr); + i = (*mb_ptr2len)(ptr); if (ptr[i] == NUL) curwin->w_cursor.col += i; } @@ -1561,7 +1561,7 @@ change_indent(type, amount, round, replaced) last_vcol = vcol; #ifdef FEAT_MBYTE if (has_mbyte && new_cursor_col >= 0) - new_cursor_col += (*mb_ptr2len_check)(ptr + new_cursor_col); + new_cursor_col += (*mb_ptr2len)(ptr + new_cursor_col); else #endif ++new_cursor_col; @@ -2153,7 +2153,7 @@ ins_compl_dictionaries(dict, pat, dir, flags, thesaurus) * with single-byte non-word characters. */ while (*ptr != NUL) { - int l = (*mb_ptr2len_check)(ptr); + int l = (*mb_ptr2len)(ptr); if (l < 2 && !vim_iswordc(*ptr)) break; @@ -2203,7 +2203,7 @@ find_word_start(ptr) #ifdef FEAT_MBYTE if (has_mbyte) while (*ptr != NUL && *ptr != '\n' && mb_get_class(ptr) <= 1) - ptr += (*mb_ptr2len_check)(ptr); + ptr += (*mb_ptr2len)(ptr); else #endif while (*ptr != NUL && *ptr != '\n' && !vim_iswordc(*ptr)) @@ -2228,7 +2228,7 @@ find_word_end(ptr) if (start_class > 1) while (*ptr != NUL) { - ptr += (*mb_ptr2len_check)(ptr); + ptr += (*mb_ptr2len)(ptr); if (mb_get_class(ptr) != start_class) break; } @@ -3756,7 +3756,7 @@ quote_meta(dest, src, len) { int i, mb_len; - mb_len = (*mb_ptr2len_check)(src) - 1; + mb_len = (*mb_ptr2len)(src) - 1; if (mb_len > 0 && len >= mb_len) for (i = 0; i < mb_len; ++i) { @@ -4166,7 +4166,7 @@ insertchar(c, flags, second_indent) #ifdef FEAT_MBYTE if (has_mbyte) foundcol = curwin->w_cursor.col - + (*mb_ptr2len_check)(ml_get_cursor()); + + (*mb_ptr2len)(ml_get_cursor()); else #endif foundcol = curwin->w_cursor.col + 1; @@ -5053,7 +5053,7 @@ oneright() ptr = ml_get_cursor(); #ifdef FEAT_MBYTE - if (has_mbyte && (l = (*mb_ptr2len_check)(ptr)) > 1) + if (has_mbyte && (l = (*mb_ptr2len)(ptr)) > 1) { /* The character under the cursor is a multi-byte character, move * several bytes right, but don't end up on the NUL. */ @@ -5633,7 +5633,7 @@ replace_do_bs() { vcol += chartabsize(p + i, vcol); #ifdef FEAT_MBYTE - i += (*mb_ptr2len_check)(p) - 1; + i += (*mb_ptr2len)(p) - 1; #endif } vcol -= start_vcol; @@ -7288,7 +7288,7 @@ ins_right() { #ifdef FEAT_MBYTE if (has_mbyte) - curwin->w_cursor.col += (*mb_ptr2len_check)(ml_get_cursor()); + curwin->w_cursor.col += (*mb_ptr2len)(ml_get_cursor()); else #endif ++curwin->w_cursor.col; diff --git a/src/eval.c b/src/eval.c index 6919bf1ff1..80d46a95b6 100644 --- a/src/eval.c +++ b/src/eval.c @@ -7712,7 +7712,7 @@ f_byteidx(argvars, rettv) { if (*t == NUL) /* EOL reached */ return; - t += mb_ptr2len_check(t); + t += (*mb_ptr2len)(t); } rettv->vval.v_number = t - str; #else @@ -7865,7 +7865,7 @@ f_col(argvars, rettv) # ifdef FEAT_MBYTE int l; - if (*p != NUL && p[(l = (*mb_ptr2len_check)(p))] == NUL) + if (*p != NUL && p[(l = (*mb_ptr2len)(p))] == NUL) col += l; # else if (*p != NUL && p[1] == NUL) @@ -11582,7 +11582,7 @@ find_some_match(argvars, rettv, type) else { #ifdef FEAT_MBYTE - str = regmatch.startp[0] + mb_ptr2len_check(regmatch.startp[0]); + str = regmatch.startp[0] + (*mb_ptr2len)(regmatch.startp[0]); #else str = regmatch.startp[0] + 1; #endif @@ -13892,7 +13892,7 @@ f_split(argvars, rettv) { /* Don't get stuck at the same match. */ #ifdef FEAT_MBYTE - col = mb_ptr2len_check(regmatch.endp[0]); + col = (*mb_ptr2len)(regmatch.endp[0]); #else col = 1; #endif @@ -14509,13 +14509,13 @@ f_tolower(argvars, rettv) c = utf_ptr2char(p); lc = utf_tolower(c); - l = utf_ptr2len_check(p); + l = utf_ptr2len(p); /* TODO: reallocate string when byte count changes. */ if (utf_char2len(lc) == l) utf_char2bytes(lc, p); p += l; } - else if (has_mbyte && (l = (*mb_ptr2len_check)(p)) > 1) + else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1) p += l; /* skip multi-byte character */ else #endif @@ -14594,18 +14594,18 @@ error: #ifdef FEAT_MBYTE if (has_mbyte) { - inlen = mb_ptr2len_check(instr); + inlen = (*mb_ptr2len)(instr); cpstr = instr; cplen = inlen; idx = 0; for (p = fromstr; *p != NUL; p += fromlen) { - fromlen = mb_ptr2len_check(p); + fromlen = (*mb_ptr2len)(p); if (fromlen == inlen && STRNCMP(instr, p, inlen) == 0) { for (p = tostr; *p != NUL; p += tolen) { - tolen = mb_ptr2len_check(p); + tolen = (*mb_ptr2len)(p); if (idx-- == 0) { cplen = tolen; @@ -14628,7 +14628,7 @@ error: first = FALSE; for (p = tostr; *p != NUL; p += tolen) { - tolen = mb_ptr2len_check(p); + tolen = (*mb_ptr2len)(p); --idx; } if (idx != 0) @@ -16539,7 +16539,7 @@ ex_echo(eap) #ifdef FEAT_MBYTE if (has_mbyte) { - int i = (*mb_ptr2len_check)(p); + int i = (*mb_ptr2len)(p); (void)msg_outtrans_len_attr(p, i, echo_attr); p += i - 1; diff --git a/src/ex_cmds.c b/src/ex_cmds.c index a58f91a6df..4b7d6fd46a 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -596,7 +596,7 @@ ex_retab(eap) vcol += chartabsize(ptr + col, (colnr_T)vcol); #ifdef FEAT_MBYTE if (has_mbyte) - col += (*mb_ptr2len_check)(ptr + col); + col += (*mb_ptr2len)(ptr + col); else #endif ++col; @@ -4643,7 +4643,7 @@ do_sub(eap) } #ifdef FEAT_MBYTE else if (has_mbyte) - p1 += (*mb_ptr2len_check)(p1) - 1; + p1 += (*mb_ptr2len)(p1) - 1; #endif } @@ -5715,7 +5715,7 @@ fix_help_buffer() int l; this_utf = TRUE; - l = utf_ptr2len_check(s); + l = utf_ptr2len(s); if (l == 1) this_utf = FALSE; s += l - 1; @@ -6010,7 +6010,7 @@ helptags_one(dir, ext, tagfname) int l; this_utf8 = TRUE; - l = utf_ptr2len_check(s); + l = utf_ptr2len(s); if (l == 1) { /* Illegal UTF-8 byte sequence. */ @@ -6333,7 +6333,7 @@ ex_sign(eap) if (has_mbyte) { cells = 0; - for (s = arg; s < p; s += (*mb_ptr2len_check)(s)) + for (s = arg; s < p; s += (*mb_ptr2len)(s)) { if (!vim_isprintc((*mb_ptr2char)(s))) break; diff --git a/src/ex_docmd.c b/src/ex_docmd.c index bb0758224d..fa777b3c85 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -8324,7 +8324,7 @@ ex_normal(eap) if (*p == CSI) /* leadbyte CSI */ len += 2; # endif - for (l = (*mb_ptr2len_check)(p) - 1; l > 0; --l) + for (l = (*mb_ptr2len)(p) - 1; l > 0; --l) if (*++p == K_SPECIAL /* trailbyte K_SPECIAL or CSI */ # ifdef FEAT_GUI || *p == CSI @@ -8348,7 +8348,7 @@ ex_normal(eap) arg[len++] = (int)KE_CSI; } # endif - for (l = (*mb_ptr2len_check)(p) - 1; l > 0; --l) + for (l = (*mb_ptr2len)(p) - 1; l > 0; --l) { arg[len++] = *++p; if (*p == K_SPECIAL) @@ -9772,7 +9772,7 @@ ses_put_fname(fd, name, flagp) { int l; - if (has_mbyte && (l = (*mb_ptr2len_check)(name)) > 1) + if (has_mbyte && (l = (*mb_ptr2len)(name)) > 1) { /* copy a multibyte char */ while (--l >= 0) diff --git a/src/ex_getln.c b/src/ex_getln.c index a876508c0b..3c5ad94c1d 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -881,7 +881,7 @@ getcmdline(firstc, count, indent) while (p > ccline.cmdbuff && mb_get_class(p) == i) p = mb_prevptr(ccline.cmdbuff, p); if (mb_get_class(p) != i) - p += (*mb_ptr2len_check)(p); + p += (*mb_ptr2len)(p); } } else @@ -1115,7 +1115,7 @@ getcmdline(firstc, count, indent) ccline.cmdspos += i; #ifdef FEAT_MBYTE if (has_mbyte) - ccline.cmdpos += (*mb_ptr2len_check)(ccline.cmdbuff + ccline.cmdpos += (*mb_ptr2len)(ccline.cmdbuff + ccline.cmdpos); else #endif @@ -1241,7 +1241,7 @@ getcmdline(firstc, count, indent) { /* Count ">" for double-wide char that doesn't fit. */ correct_cmdspos(ccline.cmdpos, i); - ccline.cmdpos += (*mb_ptr2len_check)(ccline.cmdbuff + ccline.cmdpos += (*mb_ptr2len)(ccline.cmdbuff + ccline.cmdpos) - 1; } #endif @@ -1861,7 +1861,7 @@ set_cmdspos_cursor() } #ifdef FEAT_MBYTE if (has_mbyte) - i += (*mb_ptr2len_check)(ccline.cmdbuff + i) - 1; + i += (*mb_ptr2len)(ccline.cmdbuff + i) - 1; #endif } } @@ -1876,7 +1876,7 @@ correct_cmdspos(idx, cells) int idx; int cells; { - if ((*mb_ptr2len_check)(ccline.cmdbuff + idx) > 1 + if ((*mb_ptr2len)(ccline.cmdbuff + idx) > 1 && (*mb_ptr2cells)(ccline.cmdbuff + idx) > 1 && ccline.cmdspos % Columns + cells > Columns) ccline.cmdspos++; @@ -2184,7 +2184,7 @@ cmdline_getvcol_cursor() int i = 0; for (col = 0; i < ccline.cmdpos; ++col) - i += (*mb_ptr2len_check)(ccline.cmdbuff + i); + i += (*mb_ptr2len)(ccline.cmdbuff + i); return col; } @@ -2225,7 +2225,7 @@ redrawcmd_preedit() && cmdpos < ccline.cmdlen; ++col) { cmdspos += (*mb_ptr2cells)(ccline.cmdbuff + cmdpos); - cmdpos += (*mb_ptr2len_check)(ccline.cmdbuff + cmdpos); + cmdpos += (*mb_ptr2len)(ccline.cmdbuff + cmdpos); } } else @@ -2251,7 +2251,7 @@ redrawcmd_preedit() # ifdef FEAT_MBYTE if (has_mbyte) - char_len = (*mb_ptr2len_check)(ccline.cmdbuff + cmdpos); + char_len = (*mb_ptr2len)(ccline.cmdbuff + cmdpos); else # endif char_len = 1; @@ -2339,7 +2339,7 @@ draw_cmdline(start, len) msg_putchar('*'); # ifdef FEAT_MBYTE if (has_mbyte) - i += (*mb_ptr2len_check)(ccline.cmdbuff + start + i) - 1; + i += (*mb_ptr2len)(ccline.cmdbuff + start + i) - 1; # endif } else @@ -2378,7 +2378,7 @@ draw_cmdline(start, len) { p = ccline.cmdbuff + j; u8c = utfc_ptr2char_len(p, &u8c_c1, &u8c_c2, start + len - j); - mb_l = utfc_ptr2len_check_len(p, start + len - j); + mb_l = utfc_ptr2len_len(p, start + len - j); if (ARABIC_CHAR(u8c)) { /* Do Arabic shaping. */ @@ -2511,12 +2511,12 @@ put_on_cmdline(str, len, redraw) { /* Count nr of characters in the new string. */ m = 0; - for (i = 0; i < len; i += (*mb_ptr2len_check)(str + i)) + for (i = 0; i < len; i += (*mb_ptr2len)(str + i)) ++m; /* Count nr of bytes in cmdline that are overwritten by these * characters. */ for (i = ccline.cmdpos; i < ccline.cmdlen && m > 0; - i += (*mb_ptr2len_check)(ccline.cmdbuff + i)) + i += (*mb_ptr2len)(ccline.cmdbuff + i)) --m; if (i < ccline.cmdlen) { @@ -2619,7 +2619,7 @@ put_on_cmdline(str, len, redraw) #ifdef FEAT_MBYTE if (has_mbyte) { - c = (*mb_ptr2len_check)(ccline.cmdbuff + ccline.cmdpos) - 1; + c = (*mb_ptr2len)(ccline.cmdbuff + ccline.cmdpos) - 1; if (c > len - i - 1) c = len - i - 1; ccline.cmdpos += c; diff --git a/src/fileio.c b/src/fileio.c index 7c4c9ac17c..bb25ce7da4 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1402,7 +1402,7 @@ retry: p = ptr; for (flen = from_size; flen > 0; flen -= l) { - l = utf_ptr2len_check_len(p, flen); + l = utf_ptr2len_len(p, flen); if (l > flen) /* incomplete char */ { if (l > CONV_RESTLEN) @@ -1467,7 +1467,7 @@ retry: p = ptr; for (flen = from_size; flen > 0; flen -= l) { - l = utf_ptr2len_check_len(p, flen); + l = utf_ptr2len_len(p, flen); u8c = utf_ptr2char(p); ucsp[needed * 2] = (u8c & 0xff); ucsp[needed * 2 + 1] = (u8c >> 8); @@ -1726,7 +1726,7 @@ retry: { if (*p >= 0x80) { - len = utf_ptr2len_check(p); + len = utf_ptr2len(p); /* A length of 1 means it's an illegal byte. Accept * an incomplete character at the end though, the next * read() will get the next bytes, we'll check it @@ -4614,7 +4614,7 @@ buf_write_bytes(ip) if (l > len) l = len; mch_memmove(ip->bw_rest + ip->bw_restlen, buf, (size_t)l); - n = utf_ptr2len_check_len(ip->bw_rest, ip->bw_restlen + l); + n = utf_ptr2len_len(ip->bw_rest, ip->bw_restlen + l); if (n > ip->bw_restlen + len) { /* We have an incomplete byte sequence at the end to @@ -4644,7 +4644,7 @@ buf_write_bytes(ip) } else { - n = utf_ptr2len_check_len(buf + wlen, len - wlen); + n = utf_ptr2len_len(buf + wlen, len - wlen); if (n > len - wlen) { /* We have an incomplete byte sequence at the end to @@ -4711,7 +4711,7 @@ buf_write_bytes(ip) * The buffer has been allocated to be big enough. */ while (fromlen > 0) { - n = utf_ptr2len_check_len(from, fromlen); + n = utf_ptr2len_len(from, fromlen); if (n > (int)fromlen) /* incomplete byte sequence */ break; u8c = utf_ptr2char(from); @@ -6599,7 +6599,7 @@ forward_slash(fname) for (p = fname; *p != NUL; ++p) # ifdef FEAT_MBYTE /* The Big5 encoding can have '\' in the trail byte. */ - if (enc_dbcs != 0 && (*mb_ptr2len_check)(p) > 1) + if (enc_dbcs != 0 && (*mb_ptr2len)(p) > 1) ++p; else # endif @@ -8908,7 +8908,7 @@ file_pat_to_reg_pat(pat, pat_end, allow_dirs, no_bslash) default: size++; # ifdef FEAT_MBYTE - if (enc_dbcs != 0 && (*mb_ptr2len_check)(p) > 1) + if (enc_dbcs != 0 && (*mb_ptr2len)(p) > 1) { ++p; ++size; @@ -9045,7 +9045,7 @@ file_pat_to_reg_pat(pat, pat_end, allow_dirs, no_bslash) break; default: # ifdef FEAT_MBYTE - if (enc_dbcs != 0 && (*mb_ptr2len_check)(p) > 1) + if (enc_dbcs != 0 && (*mb_ptr2len)(p) > 1) reg_pat[i++] = *p++; else # endif diff --git a/src/fold.c b/src/fold.c index cccc17e562..6731e6386a 100644 --- a/src/fold.c +++ b/src/fold.c @@ -1954,7 +1954,7 @@ get_foldtext(wp, lnum, lnume, foldinfo, buf) # ifdef FEAT_MBYTE int len; - if (has_mbyte && (len = (*mb_ptr2len_check)(p)) > 1) + if (has_mbyte && (len = (*mb_ptr2len)(p)) > 1) { if (!vim_isprintc((*mb_ptr2char)(p))) break; diff --git a/src/getchar.c b/src/getchar.c index 8f2df02dc7..085fc4dc68 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -562,14 +562,8 @@ AppendToRedobuffLit(s) /* Handle a special or multibyte character. */ #ifdef FEAT_MBYTE if (has_mbyte) - { - c = (*mb_ptr2char)(s); - if (enc_utf8) - /* Handle composing chars as well. */ - s += utf_ptr2len_check(s); - else - s += (*mb_ptr2len_check)(s); - } + /* Handle composing chars separately. */ + c = mb_cptr2char_adv(&s); else #endif c = *s++; @@ -2025,7 +2019,7 @@ vgetorpeek(advance) * multi-byte char. Happens when mapping * <M-a> and then changing 'encoding'. */ if (has_mbyte && MB_BYTE2LEN(c1) - > (*mb_ptr2len_check)(mp->m_keys)) + > (*mb_ptr2len)(mp->m_keys)) mlen = 0; #endif /* @@ -2413,7 +2407,7 @@ vgetorpeek(advance) (colnr_T)vcol); #ifdef FEAT_MBYTE if (has_mbyte) - col += (*mb_ptr2len_check)(ptr + col); + col += (*mb_ptr2len)(ptr + col); else #endif ++col; @@ -3105,7 +3099,7 @@ do_map(maptype, arg, mode, abbrev) first = vim_iswordp(keys); last = first; - p = keys + mb_ptr2len_check(keys); + p = keys + (*mb_ptr2len)(keys); n = 1; while (p < keys + len) { @@ -3113,7 +3107,7 @@ do_map(maptype, arg, mode, abbrev) last = vim_iswordp(p); /* type of last char */ if (same == -1 && last != first) same = n - 1; /* count of same char type */ - p += mb_ptr2len_check(p); + p += (*mb_ptr2len)(p); } if (last && n > 2 && same >= 0 && same < n - 1) { @@ -4045,7 +4039,7 @@ check_abbr(c, ptr, col, mincol) p = mb_prevptr(ptr, p); if (vim_isspace(*p) || (!vim_abbr && is_id != vim_iswordp(p))) { - p += (*mb_ptr2len_check)(p); + p += (*mb_ptr2len)(p); break; } ++clen; diff --git a/src/globals.h b/src/globals.h index 971e3bd51a..60eff1f3c6 100644 --- a/src/globals.h +++ b/src/globals.h @@ -717,8 +717,11 @@ EXTERN vimconv_T output_conv; /* type of output conversion */ * (DBCS). * The value is set in mb_init(); */ -EXTERN int (*mb_ptr2len_check) __ARGS((char_u *p)) INIT(= latin_ptr2len_check); +/* length of char in bytes, including following composing chars */ +EXTERN int (*mb_ptr2len) __ARGS((char_u *p)) INIT(= latin_ptr2len); +/* byte length of char */ EXTERN int (*mb_char2len) __ARGS((int c)) INIT(= latin_char2len); +/* convert char to bytes, return the length */ EXTERN int (*mb_char2b |