summaryrefslogtreecommitdiffstats
path: root/src/spell.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/spell.c')
-rw-r--r--src/spell.c177
1 files changed, 6 insertions, 171 deletions
diff --git a/src/spell.c b/src/spell.c
index 8d0eddce0c..59e73682b5 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -224,12 +224,8 @@ typedef struct matchinf_S
affixID/condition */
int mi_prefcnt; /* number of entries at mi_prefarridx */
int mi_prefixlen; /* byte length of prefix */
-#ifdef FEAT_MBYTE
int mi_cprefixlen; /* byte length of prefix in original
case */
-#else
-# define mi_cprefixlen mi_prefixlen /* it's the same value */
-#endif
/* for when checking a compound word */
int mi_compoff; /* start of following word offset */
@@ -249,9 +245,7 @@ typedef struct matchinf_S
static int spell_iswordp(char_u *p, win_T *wp);
-#ifdef FEAT_MBYTE
static int spell_mb_isword_class(int cl, win_T *wp);
-#endif
/*
* For finding suggestions: At each node in the tree these states are tried:
@@ -295,12 +289,10 @@ typedef struct trystate_S
char_u ts_prefixdepth; /* stack depth for end of prefix or
* PFD_PREFIXTREE or PFD_NOPREFIX */
char_u ts_flags; /* TSF_ flags */
-#ifdef FEAT_MBYTE
char_u ts_tcharlen; /* number of bytes in tword character */
char_u ts_tcharidx; /* current byte index in tword character */
char_u ts_isdiff; /* DIFF_ values */
char_u ts_fcharstart; /* index in fword where badword char started */
-#endif
char_u ts_prewordlen; /* length of word in "preword[]" */
char_u ts_splitoff; /* index in "tword" after last split */
char_u ts_splitfidx; /* "ts_fidx" at word split */
@@ -358,9 +350,7 @@ static void suggest_try_special(suginfo_T *su);
static void suggest_try_change(suginfo_T *su);
static void suggest_trie_walk(suginfo_T *su, langp_T *lp, char_u *fword, int soundfold);
static void go_deeper(trystate_T *stack, int depth, int score_add);
-#ifdef FEAT_MBYTE
static int nofold_len(char_u *fword, int flen, char_u *word);
-#endif
static void find_keepcap_word(slang_T *slang, char_u *fword, char_u *kword);
static void score_comp_sal(suginfo_T *su);
static void score_combine(suginfo_T *su);
@@ -380,15 +370,11 @@ static void rescore_one(suginfo_T *su, suggest_T *stp);
static int cleanup_suggestions(garray_T *gap, int maxscore, int keep);
static void spell_soundfold_sofo(slang_T *slang, char_u *inword, char_u *res);
static void spell_soundfold_sal(slang_T *slang, char_u *inword, char_u *res);
-#ifdef FEAT_MBYTE
static void spell_soundfold_wsal(slang_T *slang, char_u *inword, char_u *res);
-#endif
static int soundalike_score(char_u *goodsound, char_u *badsound);
static int spell_edit_score(slang_T *slang, char_u *badword, char_u *goodword);
static int spell_edit_score_limit(slang_T *slang, char_u *badword, char_u *goodword, int limit);
-#ifdef FEAT_MBYTE
static int spell_edit_score_limit_w(slang_T *slang, char_u *badword, char_u *goodword, int limit);
-#endif
static void dump_word(slang_T *slang, char_u *word, char_u *pat, int *dir, int round, int flags, linenr_T lnum);
static linenr_T dump_prefixes(slang_T *slang, char_u *word, char_u *pat, int *dir, int round, int flags, linenr_T startlnum);
@@ -565,10 +551,8 @@ spell_check(
*capcol = (int)(regmatch.endp[0] - ptr);
}
-#ifdef FEAT_MBYTE
if (has_mbyte)
return (*mb_ptr2len)(ptr);
-#endif
return 1;
}
else if (mi.mi_end == ptr)
@@ -646,9 +630,7 @@ find_word(matchinf_T *mip, int mode)
int c;
char_u *ptr;
idx_T lo, hi, m;
-#ifdef FEAT_MBYTE
char_u *s;
-#endif
char_u *p;
int res = SP_BAD;
slang_T *slang = mip->mi_lp->lp_slang;
@@ -794,10 +776,8 @@ find_word(matchinf_T *mip, int mode)
arridx = endidx[endidxcnt];
wlen = endlen[endidxcnt];
-#ifdef FEAT_MBYTE
if ((*mb_head_off)(ptr, ptr + wlen) > 0)
continue; /* not at first byte of character */
-#endif
if (spell_iswordp(ptr + wlen, mip->mi_win))
{
if (slang->sl_compprog == NULL && !slang->sl_nobreak)
@@ -810,7 +790,6 @@ find_word(matchinf_T *mip, int mode)
* has been found we try compound flags. */
prefix_found = FALSE;
-#ifdef FEAT_MBYTE
if (mode != FIND_KEEPWORD && has_mbyte)
{
/* Compute byte length in original word, length may change
@@ -824,7 +803,6 @@ find_word(matchinf_T *mip, int mode)
wlen = (int)(p - mip->mi_word);
}
}
-#endif
/* Check flags and region. For FIND_PREFIX check the condition and
* prefix ID.
@@ -896,7 +874,6 @@ find_word(matchinf_T *mip, int mode)
if (((unsigned)flags >> 24) == 0
|| wlen - mip->mi_compoff < slang->sl_compminlen)
continue;
-#ifdef FEAT_MBYTE
/* For multi-byte chars check character length against
* COMPOUNDMIN. */
if (has_mbyte
@@ -904,7 +881,6 @@ find_word(matchinf_T *mip, int mode)
&& mb_charlen_len(mip->mi_word + mip->mi_compoff,
wlen - mip->mi_compoff) < slang->sl_compminlen)
continue;
-#endif
/* Limit the number of compound words to COMPOUNDWORDMAX if no
* maximum for syllables is specified. */
@@ -938,7 +914,6 @@ find_word(matchinf_T *mip, int mode)
/* Need to check the caps type of the appended compound
* word. */
-#ifdef FEAT_MBYTE
if (has_mbyte && STRNCMP(ptr, mip->mi_word,
mip->mi_compoff) != 0)
{
@@ -948,7 +923,6 @@ find_word(matchinf_T *mip, int mode)
MB_PTR_ADV(p);
}
else
-#endif
p = mip->mi_word + mip->mi_compoff;
capflags = captype(p, mip->mi_word + wlen);
if (capflags == WF_KEEPCAP || (capflags == WF_ALLCAP
@@ -1020,7 +994,6 @@ find_word(matchinf_T *mip, int mode)
/* Find following word in case-folded tree. */
mip->mi_compoff = endlen[endidxcnt];
-#ifdef FEAT_MBYTE
if (has_mbyte && mode == FIND_KEEPWORD)
{
/* Compute byte length in case-folded word from "wlen":
@@ -1035,7 +1008,6 @@ find_word(matchinf_T *mip, int mode)
mip->mi_compoff = (int)(p - mip->mi_fword);
}
}
-#endif
#if 0 /* Disabled, see below */
c = mip->mi_compoff;
#endif
@@ -1186,15 +1158,12 @@ match_checkcompoundpattern(
static int
can_compound(slang_T *slang, char_u *word, char_u *flags)
{
-#ifdef FEAT_MBYTE
char_u uflags[MAXWLEN * 2];
int i;
-#endif
char_u *p;
if (slang->sl_compprog == NULL)
return FALSE;
-#ifdef FEAT_MBYTE
if (enc_utf8)
{
/* Need to convert the single byte flags to utf8 characters. */
@@ -1205,7 +1174,6 @@ can_compound(slang_T *slang, char_u *word, char_u *flags)
p = uflags;
}
else
-#endif
p = flags;
if (!vim_regexec_prog(&slang->sl_compprog, FALSE, p, 0))
return FALSE;
@@ -1434,7 +1402,6 @@ find_prefix(matchinf_T *mip, int mode)
/* Skip over the previously found word(s). */
mip->mi_prefixlen += mip->mi_compoff;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
/* Case-folded length may differ from original length. */
@@ -1443,7 +1410,6 @@ find_prefix(matchinf_T *mip, int mode)
}
else
mip->mi_cprefixlen = mip->mi_prefixlen;
-#endif
find_word(mip, FIND_PREFIX);
@@ -1912,10 +1878,8 @@ spell_load_lang(char_u *lang)
spell_enc(void)
{
-#ifdef FEAT_MBYTE
if (STRLEN(p_enc) < 60 && STRCMP(p_enc, "iso-8859-15") != 0)
return p_enc;
-#endif
return (char_u *)"latin1";
}
@@ -2015,11 +1979,9 @@ slang_clear(slang_T *lp)
vim_free(smp->sm_lead);
/* Don't free sm_oneof and sm_rules, they point into sm_lead. */
vim_free(smp->sm_to);
-#ifdef FEAT_MBYTE
vim_free(smp->sm_lead_w);
vim_free(smp->sm_oneof_w);
vim_free(smp->sm_to_w);
-#endif
}
ga_clear(gap);
@@ -2046,9 +2008,7 @@ slang_clear(slang_T *lp)
hash_clear_all(&lp->sl_wordcount, WC_KEY_OFF);
hash_init(&lp->sl_wordcount);
-#ifdef FEAT_MBYTE
hash_clear_all(&lp->sl_map_hash, 0);
-#endif
/* Clear info from .sug file. */
slang_clear_sug(lp);
@@ -2284,13 +2244,8 @@ count_syllables(slang_T *slang, char_u *word)
else
{
/* No recognized syllable item, at least a syllable char then? */
-#ifdef FEAT_MBYTE
c = mb_ptr2char(p);
len = (*mb_ptr2len)(p);
-#else
- c = *p;
- len = 1;
-#endif
if (vim_strchr(slang->sl_syllable, c) == NULL)
skip = FALSE; /* No, search for next syllable */
else if (!skip)
@@ -2352,9 +2307,7 @@ did_set_spelllang(win_T *wp)
if (spl_copy == NULL)
goto theend;
-#ifdef FEAT_MBYTE
wp->w_s->b_cjk = 0;
-#endif
/* Loop over comma separated language names. */
for (splp = spl_copy; *splp != NUL; )
@@ -2366,9 +2319,7 @@ did_set_spelllang(win_T *wp)
if (STRCMP(lang, "cjk") == 0)
{
-#ifdef FEAT_MBYTE
wp->w_s->b_cjk = 1;
-#endif
continue;
}
@@ -2633,9 +2584,7 @@ theend:
clear_midword(win_T *wp)
{
vim_memset(wp->w_s->b_spell_ismw, 0, 256);
-#ifdef FEAT_MBYTE
VIM_CLEAR(wp->w_s->b_spell_ismw_mb);
-#endif
}
/*
@@ -2651,7 +2600,6 @@ use_midword(slang_T *lp, win_T *wp)
return;
for (p = lp->sl_midword; *p != NUL; )
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
int c, l, n;
@@ -2679,7 +2627,6 @@ use_midword(slang_T *lp, win_T *wp)
p += l;
}
else
-#endif
wp->w_s->b_spell_ismw[*p++] = TRUE;
}
@@ -2725,11 +2672,9 @@ captype(
for (p = word; !spell_iswordp_nmw(p, curwin); MB_PTR_ADV(p))
if (end == NULL ? *p == NUL : p >= end)
return 0; /* only non-word characters, illegal word */
-#ifdef FEAT_MBYTE
if (has_mbyte)
c = mb_ptr2char_adv(&p);
else
-#endif
c = *p++;
firstcap = allcap = SPELL_ISUPPER(c);
@@ -2825,7 +2770,6 @@ spell_delete_wordlist(void)
}
}
-#if defined(FEAT_MBYTE) || defined(EXITFREE) || defined(PROTO)
/*
* Free all languages.
*/
@@ -2851,9 +2795,7 @@ spell_free_all(void)
VIM_CLEAR(repl_to);
VIM_CLEAR(repl_from);
}
-#endif
-#if defined(FEAT_MBYTE) || defined(PROTO)
/*
* Clear all spelling tables and reload them.
* Used after 'encoding' is set and when ":mkspell" was used.
@@ -2884,7 +2826,6 @@ spell_reload(void)
}
}
}
-#endif
/*
* Opposite of offset2bytes().
@@ -3016,7 +2957,6 @@ init_spell_chartab(void)
did_set_spelltab = FALSE;
clear_spell_chartab(&spelltab);
-#ifdef FEAT_MBYTE
if (enc_dbcs)
{
/* DBCS: assume double-wide characters are word characters. */
@@ -3041,7 +2981,6 @@ init_spell_chartab(void)
}
}
else
-#endif
{
/* Rough guess: use locale-dependent library functions. */
for (i = 128; i < 256; ++i)
@@ -3073,7 +3012,6 @@ spell_iswordp(
char_u *p,
win_T *wp) /* buffer used */
{
-#ifdef FEAT_MBYTE
char_u *s;
int l;
int c;
@@ -3102,7 +3040,6 @@ spell_iswordp(
return spell_mb_isword_class(mb_get_class(s), wp);
return spelltab.st_isw[c];
}
-#endif
return spelltab.st_isw[wp->w_s->b_spell_ismw[*p] ? p[1] : p[0]];
}
@@ -3114,7 +3051,6 @@ spell_iswordp(
int
spell_iswordp_nmw(char_u *p, win_T *wp)
{
-#ifdef FEAT_MBYTE
int c;
if (has_mbyte)
@@ -3124,11 +3060,9 @@ spell_iswordp_nmw(char_u *p, win_T *wp)
return spell_mb_isword_class(mb_get_class(p), wp);
return spelltab.st_isw[c];
}
-#endif
return spelltab.st_isw[*p];
}
-#ifdef FEAT_MBYTE
/*
* Return TRUE if word class indicates a word character.
* Only for characters above 255.
@@ -3171,7 +3105,6 @@ spell_iswordp_w(int *p, win_T *wp)
}
return spelltab.st_isw[*s];
}
-#endif
/*
* Case-fold "str[len]" into "buf[buflen]". The result is NUL terminated.
@@ -3194,7 +3127,6 @@ spell_casefold(
return FAIL; /* result will not fit */
}
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
int outi = 0;
@@ -3215,7 +3147,6 @@ spell_casefold(
buf[outi] = NUL;
}
else
-#endif
{
/* Be quick for non-multibyte encodings. */
for (i = 0; i < len; ++i)
@@ -4072,21 +4003,17 @@ onecap_copy(
int l;
p = word;
-#ifdef FEAT_MBYTE
if (has_mbyte)
c = mb_cptr2char_adv(&p);
else
-#endif
c = *p++;
if (upper)
c = SPELL_TOUPPER(c);
else
c = SPELL_TOFOLD(c);
-#ifdef FEAT_MBYTE
if (has_mbyte)
l = mb_char2bytes(c, wcopy);
else
-#endif
{
l = 1;
wcopy[0] = c;
@@ -4108,14 +4035,11 @@ allcap_copy(char_u *word, char_u *wcopy)
d = wcopy;
for (s = word; *s != NUL; )
{
-#ifdef FEAT_MBYTE
if (has_mbyte)
c = mb_cptr2char_adv(&s);
else
-#endif
c = *s++;
-#ifdef FEAT_MBYTE
/* We only change 0xdf to SS when we are certain latin1 is used. It
* would cause weird errors in other 8-bit encodings. */
if (enc_latin1like && c == 0xdf)
@@ -4126,10 +4050,8 @@ allcap_copy(char_u *word, char_u *wcopy)
*d++ = c;
}
else
-#endif
c = SPELL_TOUPPER(c);
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
if (d - wcopy >= MAXWLEN - MB_MAXBYTES)
@@ -4137,7 +4059,6 @@ allcap_copy(char_u *word, char_u *wcopy)
d += mb_char2bytes(c, d);
}
else
-#endif
{
if (d - wcopy >= MAXWLEN - 1)
break;
@@ -4434,11 +4355,9 @@ suggest_trie_walk(
{
/* Set su->su_badflags to the caps type at this position.
* Use the caps type until here for the prefix itself. */
-#ifdef FEAT_MBYTE
if (has_mbyte)
n = nofold_len(fword, sp->ts_fidx, su->su_badptr);
else
-#endif
n = sp->ts_fidx;
flags = badword_captype(su->su_badptr, su->su_badptr + n);
su->su_badflags = badword_captype(su->su_badptr + n,
@@ -4568,7 +4487,6 @@ suggest_trie_walk(
|| sp->ts_twordlen - sp->ts_splitoff
< slang->sl_compminlen)
break;
-#ifdef FEAT_MBYTE
/* For multi-byte chars check character length against
* COMPOUNDMIN. */
if (has_mbyte
@@ -4576,7 +4494,6 @@ suggest_trie_walk(
&& mb_charlen(tword + sp->ts_splitoff)
< slang->sl_compminlen)
break;
-#endif
compflags[sp->ts_complen] = ((unsigned)flags >> 24);
compflags[sp->ts_complen + 1] = NUL;
@@ -4625,12 +4542,7 @@ suggest_trie_walk(
* allcap and it's only one char long use onecap. */
c = su->su_badflags;
if ((c & WF_ALLCAP)
-#ifdef FEAT_MBYTE
- && su->su_badlen == (*mb_ptr2len)(su->su_badptr)
-#else
- && su->su_badlen == 1
-#endif
- )
+ && su->su_badlen == (*mb_ptr2len)(su->su_badptr))
c = WF_ONECAP;
c |= flags;
@@ -4752,11 +4664,8 @@ suggest_trie_walk(
* Try word split and/or compounding.
*/
if ((sp->ts_fidx >= sp->ts_fidxtry || fword_ends)
-#ifdef FEAT_MBYTE
/* Don't split halfway a character. */
- && (!has_mbyte || sp->ts_tcharlen == 0)
-#endif
- )
+ && (!has_mbyte || sp->ts_tcharlen == 0))
{
int try_compound;
int try_split;
@@ -4789,12 +4698,10 @@ suggest_trie_walk(
&& ((unsigned)flags >> 24) != 0
&& sp->ts_twordlen - sp->ts_splitoff
>= slang->sl_compminlen
-#ifdef FEAT_MBYTE
&& (!has_mbyte
|| slang->sl_compminlen == 0
|| mb_charlen(tword + sp->ts_splitoff)
>= slang->sl_compminlen)
-#endif
&& (slang->sl_compsylmax < MAXWLEN
|| sp->ts_complen + 1 - sp->ts_compsplit
< slang->sl_compmax)
@@ -4921,11 +4828,9 @@ suggest_trie_walk(
/* set su->su_badflags to the caps type at this
* position */
-#ifdef FEAT_MBYTE
if (has_mbyte)
n = nofold_len(fword, sp->ts_fidx, su->su_badptr);
else
-#endif
n = sp->ts_fidx;
su->su_badflags = badword_captype(su->su_badptr + n,
su->su_badptr + su->su_badlen);
@@ -4963,11 +4868,7 @@ suggest_trie_walk(
case STATE_ENDNUL:
/* Past the NUL bytes in the node. */
su->su_badflags = sp->ts_save_badflags;
- if (fword[sp->ts_fidx] == NUL
-#ifdef FEAT_MBYTE
- && sp->ts_tcharlen == 0
-#endif
- )
+ if (fword[sp->ts_fidx] == NUL && sp->ts_tcharlen == 0)
{
/* The badword ends, can't use STATE_PLAIN. */
PROF_STORE(sp->ts_state)
@@ -5005,10 +4906,7 @@ suggest_trie_walk(
* just deleted this byte, accepting it is always cheaper than
* delete + substitute. */
if (c == fword[sp->ts_fidx]
-#ifdef FEAT_MBYTE
- || (sp->ts_tcharlen > 0 && sp->ts_isdiff != DIFF_NONE)
-#endif
- )
+ || (sp->ts_tcharlen > 0 && sp->ts_isdiff != DIFF_NONE))
newscore = 0;
else
newscore = SCORE_SUBST;
@@ -5034,7 +4932,6 @@ suggest_trie_walk(
++sp->ts_fidx;
tword[sp->ts_twordlen++] = c;
sp->ts_arridx = idxs[arridx];
-#ifdef FEAT_MBYTE
if (newscore == SCORE_SUBST)
sp->ts_isdiff = DIFF_YES;
if (has_mbyte)
@@ -5122,7 +5019,6 @@ suggest_trie_walk(
}
}
else
-#endif
{
/* If we found a similar char adjust the score.
* We do this after calling go_deeper() because
@@ -5139,7 +5035,6 @@ suggest_trie_walk(
break;
case STATE_DEL:
-#ifdef FEAT_MBYTE
/* When past the first byte of a multi-byte char don't try
* delete/insert/swap a character. */
if (has_mbyte && sp->ts_tcharlen > 0)
@@ -5148,7 +5043,6 @@ suggest_trie_walk(
sp->ts_state = STATE_FINAL;
break;
}
-#endif
/*
* Try skipping one character in the bad word (delete it).
*/
@@ -5181,7 +5075,6 @@ suggest_trie_walk(
* score if the same character is following "nn" -> "n". It's
* a bit illogical for soundfold tree but it does give better
* results. */
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
c = mb_ptr2char(fword + sp->ts_fidx);
@@ -5192,7 +5085,6 @@ suggest_trie_walk(
stack[depth].ts_score -= SCORE_DEL - SCORE_DELDUP;
}
else
-#endif
{
++stack[depth].ts_fidx;
if (fword[sp->ts_fidx] == fword[sp->ts_fidx + 1])
@@ -5274,7 +5166,6 @@ suggest_trie_walk(
sp = &stack[depth];
tword[sp->ts_twordlen++] = c;
sp->ts_arridx = idxs[n];
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
fl = MB_BYTE2LEN(c);
@@ -5291,7 +5182,6 @@ suggest_trie_walk(
else
fl = 1;
if (fl == 1)
-#endif
{
/* If the previous character was the same, thus doubling a
* character, give a bonus to the score. Also for
@@ -5329,7 +5219,6 @@ suggest_trie_walk(
break;
}
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
n = MB_CPTR2LEN(p);
@@ -5342,7 +5231,6 @@ suggest_trie_walk(
c2 = mb_ptr2char(p + n);
}
else
-#endif
{
if (p[1] == NUL)
c2 = NUL;
@@ -5379,7 +5267,6 @@ suggest_trie_walk(
PROF_STORE(sp->ts_state)
sp->ts_state = STATE_UNSWAP;
++depth;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
fl = mb_char2len(c2);
@@ -5388,7 +5275,6 @@ suggest_trie_walk(
stack[depth].ts_fidxtry = sp->ts_fidx + n + fl;
}
else
-#endif
{
p[0] = c2;
p[1] = c;
@@ -5406,7 +5292,6 @@ suggest_trie_walk(
case STATE_UNSWAP:
/* Undo the STATE_SWAP swap: "21" -> "12". */
p = fword + sp->ts_fidx;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
n = MB_PTR2LEN(p);
@@ -5415,7 +5300,6 @@ suggest_trie_walk(
mb_char2bytes(c, p);
}
else
-#endif
{
c = *p;
*p = p[1];
@@ -5427,7 +5311,6 @@ suggest_trie_walk(
/* Swap two bytes, skipping one: "123" -> "321". We change
* "fword" here, it's changed back afterwards at STATE_UNSWAP3. */
p = fword + sp->ts_fidx;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
n = MB_CPTR2LEN(p);
@@ -5440,7 +5323,6 @@ suggest_trie_walk(
c3 = mb_ptr2char(p + n + fl);
}
else
-#endif
{
c = *p;
c2 = p[1];
@@ -5473,7 +5355,6 @@ suggest_trie_walk(
PROF_STORE(sp->ts_state)
sp->ts_state = STATE_UNSWAP3;
++depth;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
tl = mb_char2len(c3);
@@ -5483,7 +5364,6 @@ suggest_trie_walk(
stack[depth].ts_fidxtry = sp->ts_fidx + n + fl + tl;
}
else
-#endif
{
p[0] = p[2];
p[2] = c;
@@ -5500,7 +5380,6 @@ suggest_trie_walk(
case STATE_UNSWAP3:
/* Undo STATE_SWAP3: "321" -> "123" */
p = fword + sp->ts_fidx;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
n = MB_PTR2LEN(p);
@@ -5514,7 +5393,6 @@ suggest_trie_walk(
p = p + tl;
}
else
-#endif
{
c = *p;
*p = p[2];
@@ -5546,7 +5424,6 @@ suggest_trie_walk(
sp->ts_state = STATE_UNROT3L;
++depth;
p = fword + sp->ts_fidx;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
n = MB_CPTR2LEN(p);
@@ -5558,7 +5435,6 @@ suggest_trie_walk(
stack[depth].ts_fidxtry = sp->ts_fidx + n + fl;
}
else
-#endif
{
c = *p;
*p = p[1];
@@ -5577,7 +5453,6 @@ suggest_trie_walk(
case STATE_UNROT3L:
/* Undo ROT3L: "231" -> "123" */
p = fword + sp->ts_fidx;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
n = MB_PTR2LEN(p);
@@ -5588,7 +5463,6 @@ suggest_trie_walk(
mb_char2bytes(c, p);
}
else
-#endif
{
c = p[2];
p[2] = p[1];
@@ -5611,7 +5485,6 @@ suggest_trie_walk(
sp->ts_state = STATE_UNROT3R;
++depth;
p = fword + sp->ts_fidx;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
n = MB_CPTR2LEN(p);
@@ -5623,7 +5496,6 @@ suggest_trie_walk(
stack[depth].ts_fidxtry = sp->ts_fidx + n + tl;
}
else
-#endif
{
c = p[2];
p[2] = p[1];
@@ -5642,7 +5514,6 @@ suggest_trie_walk(
case STATE_UNROT3R:
/* Undo ROT3R: "312" -> "123" */
p = fword + sp->ts_fidx;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
c = mb_ptr2char(p);
@@ -5653,7 +5524,6 @@ suggest_trie_walk(
mb_char2bytes(c, p + n);
}
else
-#endif
{
c = *p;
*p = p[1];
@@ -5738,9 +5608,7 @@ suggest_trie_walk(
}
mch_memmove(p, ftp->ft_to, tl);
stack[depth].ts_fidxtry = sp->ts_fidx + tl;
-#ifdef FEAT_MBYTE
stack[depth].ts_tcharlen = 0;
-#endif
break;
}
}
@@ -5809,7 +5677,6 @@ go_deeper(trystate_T *stack, int depth, int score_add)
stack[depth + 1].ts_flags = 0;
}
-#ifdef FEAT_MBYTE
/*
* Case-folding may change the number of bytes: Count nr of chars in
* fword[flen] and return the byte length of that many chars in "word".
@@ -5826,7 +5693,6 @@ nofold_len(char_u *fword, int flen, char_u *word)
--i;
return (int)(p - word);
}
-#endif
/*
* "fword" is a good word with case folded. Find the matching keep-case
@@ -5905,14 +5771,12 @@ find_keepcap_word(slang_T *slang, char_u *fword, char_u *kword)
* round[depth] == 1: Try using the folded-case character.
* round[depth] == 2: Try using the upper-case character.
*/
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
flen = MB_CPTR2LEN(fword + fwordidx[depth]);
ulen = MB_CPTR2LEN(uword + uwordidx[depth]);
}
else
-#endif
ulen = flen = 1;
if (round[depth] == 1)
{
@@ -6627,7 +6491,6 @@ make_case_word(char_u *fword, char_u *cword, int flags)
similar_chars(slang_T *slang, int c1, int c2)
{
int m1, m2;
-#ifdef FEAT_MBYTE
char_u buf[MB_MAXBYTES + 1];
hashitem_T *hi;
@@ -6641,13 +6504,11 @@ similar_chars(slang_T *slang, int c1, int c2)
m1 = mb_ptr2char(hi->hi_key + STRLEN(hi->hi_key) + 1);
}
else
-#endif
m1 = slang->sl_map_array[c1];
if (m1 == 0)
return FALSE;
-#ifdef FEAT_MBYTE
if (c2 >= 256)
{
buf[mb_char2bytes(c2, buf)] = 0;
@@ -6658,7 +6519,6 @@ similar_chars(slang_T *slang, int c1, int c2)
m2 = mb_ptr2char(hi->hi_key + STRLEN(hi->hi_key) + 1);
}
else
-#endif
m2 = slang->sl_map_array[c2];
return m1 == m2;
@@ -6700,15 +6560,12 @@ add_suggestion(
break;
MB_PTR_BACK(goodword, pgood);
MB_PTR_BACK(su->su_badptr, pbad);
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
if (mb_ptr2char(pgood) != mb_ptr2char(pbad))
break;
}
- else
-#endif
- if (*pgood != *pbad)
+ else if (*pgood != *pbad)
break;
}
@@ -7028,11 +6885,9 @@ spell_soundfold(
word = fword;
}
-#ifdef FEAT_MBYTE
if (has_mbyte)
spell_soundfold_wsal(slang, word, res);
else
-#endif
spell_soundfold_sal(slang, word, res);
}
}
@@ -7048,7 +6903,6 @@ spell_soundfold_sofo(slang_T *slang, char_u *inword, char_u *res)
int ri = 0;
int c;
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
int prevc = 0;
@@ -7095,7 +6949,6 @@ spell_soundfold_sofo(slang_T *slang, char_u *inword, char_u *res)
}
}
else
-#endif
{
/* The sl_sal_first[] table contains the translation. */
for (s = inword; (c = *s) != NUL; ++s)
@@ -7385,7 +7238,6 @@ spell_soundfold_sal(slang_T *slang, char_u *inword, char_u *res)
res[reslen] = NUL;
}
-#ifdef FEAT_MBYTE
/*
* Turn "inword" into its sound-a-like equivalent in "res[MAXWLEN]".
* Multi-byte version of spell_soundfold().
@@ -7698,7 +7550,6 @@ spell_soundfold_wsal(slang_T *slang, char_u *inword, char_u *res)
}
res[l] = NUL;
}
-#endif
/*
* Compute a score for two sound-a-like words.
@@ -7953,7 +7804,6 @@ spell_edit_score(
int t;
int bc, gc;
int pbc, pgc;
-#ifdef FEAT_MBYTE
char_u *p;
int wbadword[MAXWLEN];
int wgoodword[MAXWLEN];
@@ -7970,7 +7820,6 @@ spell_edit_score(
wgoodword[goodlen++] = 0;
}
else
-#endif
{
badlen = (int)STRLEN(badword) + 1;
goodlen = (int)STRLEN(goodword) + 1;
@@ -7992,14 +7841,12 @@ spell_edit_score(
CNT(i, 0) = CNT(i - 1, 0) + SCORE_DEL;
for (j = 1; j <= goodlen; ++j)
{
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
bc = wbadword[i - 1];
gc = wgoodword[j - 1];
}
else
-#endif
{
bc = badword[i - 1];
gc = goodword[j - 1];
@@ -8024,14 +7871,12 @@ spell_edit_score(
if (i > 1 && j > 1)
{
-#ifdef FEAT_MBYTE
if (has_mbyte)
{
pbc = wbadword[i - 2];
pgc = wgoodword[j - 2];
}
else
-#endif
{
pbc = badword[i - 2];
pgc = goodword[j - 2];
@@ -8090,12 +7935,10 @@ spell_edit_score_limit(
int minscore;
int round;
-#ifdef FEAT_MBYTE
/* Multi-byte characters require a bit more work, use a different function
* to avoid testing "has_mbyte" quite often. */
if (has_mbyte)
return spell_edit_score_limit_w(slang, badword, goodword, limit);
-#endif
/*
* The idea is to go from start to end over the words. So long as
@@ -8250,7 +8093,6 @@ pop:
return minscore;
}
-#ifdef FEAT_MBYTE
/*
* Multi-byte version of spell_edit_score_limit().
* Keep it in sync with the above!
@@ -8439,7 +8281,6 @@ pop:
return SCORE_MAXMAX;
return minscore;
}
-#endif
/*
* ":spellinfo"
@@ -8554,13 +8395,7 @@ spell_dump_compl(
n = captype(pat, NULL);
if (n == WF_ONECAP)
dumpflags |= DUMPFLAG_ONECAP;
- else if (n == WF_ALLCAP
-#ifdef FEAT_MBYTE
- && (int)STRLEN(pat) > mb_ptr2len(pat)
-#else
- && (int)STRLEN(pat) > 1
-#endif
- )
+ else if (n == WF_ALLCAP && (int)STRLEN(pat) > mb_ptr2len(pat))
dumpflags |= DUMPFLAG_ALLCAP;
}
}