mirror of
https://github.com/neovim/neovim.git
synced 2025-09-27 21:48:35 +00:00
eval: Move remaining get_tv_string* functions to eval/typval.c
This commit is contained in:
@@ -2309,10 +2309,11 @@ int captype(char_u *word, char_u *end)
|
||||
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
|
||||
if (has_mbyte)
|
||||
c = mb_ptr2char_adv(&p);
|
||||
else
|
||||
if (has_mbyte) {
|
||||
c = mb_ptr2char_adv((const char_u **)&p);
|
||||
} else {
|
||||
c = *p++;
|
||||
}
|
||||
firstcap = allcap = SPELL_ISUPPER(c);
|
||||
|
||||
// Need to check all letters to find a word with mixed upper/lower.
|
||||
@@ -2607,14 +2608,15 @@ static bool spell_iswordp(char_u *p, win_T *wp)
|
||||
|
||||
// Returns true if "p" points to a word character.
|
||||
// Unlike spell_iswordp() this doesn't check for "midword" characters.
|
||||
bool spell_iswordp_nmw(char_u *p, win_T *wp)
|
||||
bool spell_iswordp_nmw(const char_u *p, win_T *wp)
|
||||
{
|
||||
int c;
|
||||
|
||||
if (has_mbyte) {
|
||||
c = mb_ptr2char(p);
|
||||
if (c > 255)
|
||||
if (c > 255) {
|
||||
return spell_mb_isword_class(mb_get_class(p), wp);
|
||||
}
|
||||
return spelltab.st_isw[c];
|
||||
}
|
||||
return spelltab.st_isw[*p];
|
||||
@@ -2675,7 +2677,7 @@ int spell_casefold(char_u *str, int len, char_u *buf, int buflen)
|
||||
buf[outi] = NUL;
|
||||
return FAIL;
|
||||
}
|
||||
c = mb_cptr2char_adv(&p);
|
||||
c = mb_cptr2char_adv((const char_u **)&p);
|
||||
outi += mb_char2bytes(SPELL_TOFOLD(c), buf + outi);
|
||||
}
|
||||
buf[outi] = NUL;
|
||||
@@ -2937,7 +2939,7 @@ void spell_suggest(int count)
|
||||
|
||||
// For redo we use a change-word command.
|
||||
ResetRedobuff();
|
||||
AppendToRedobuff((char_u *)"ciw");
|
||||
AppendToRedobuff("ciw");
|
||||
AppendToRedobuffLit(p + c,
|
||||
stp->st_wordlen + sug.su_badlen - stp->st_orglen);
|
||||
AppendCharToRedobuff(ESC);
|
||||
@@ -3406,17 +3408,19 @@ void onecap_copy(char_u *word, char_u *wcopy, bool upper)
|
||||
int l;
|
||||
|
||||
p = word;
|
||||
if (has_mbyte)
|
||||
c = mb_cptr2char_adv(&p);
|
||||
else
|
||||
if (has_mbyte) {
|
||||
c = mb_cptr2char_adv((const char_u **)&p);
|
||||
} else {
|
||||
c = *p++;
|
||||
if (upper)
|
||||
}
|
||||
if (upper) {
|
||||
c = SPELL_TOUPPER(c);
|
||||
else
|
||||
} else {
|
||||
c = SPELL_TOFOLD(c);
|
||||
if (has_mbyte)
|
||||
}
|
||||
if (has_mbyte) {
|
||||
l = mb_char2bytes(c, wcopy);
|
||||
else {
|
||||
} else {
|
||||
l = 1;
|
||||
wcopy[0] = c;
|
||||
}
|
||||
@@ -3433,10 +3437,11 @@ static void allcap_copy(char_u *word, char_u *wcopy)
|
||||
|
||||
d = wcopy;
|
||||
for (s = word; *s != NUL; ) {
|
||||
if (has_mbyte)
|
||||
c = mb_cptr2char_adv(&s);
|
||||
else
|
||||
if (has_mbyte) {
|
||||
c = mb_cptr2char_adv((const char_u **)&s);
|
||||
} else {
|
||||
c = *s++;
|
||||
}
|
||||
|
||||
if (c == 0xdf) {
|
||||
c = 'S';
|
||||
@@ -5938,12 +5943,12 @@ static void spell_soundfold_sofo(slang_T *slang, char_u *inword, char_u *res)
|
||||
// The sl_sal_first[] table contains the translation for chars up to
|
||||
// 255, sl_sal the rest.
|
||||
for (s = inword; *s != NUL; ) {
|
||||
c = mb_cptr2char_adv(&s);
|
||||
if (enc_utf8 ? utf_class(c) == 0 : ascii_iswhite(c))
|
||||
c = mb_cptr2char_adv((const char_u **)&s);
|
||||
if (enc_utf8 ? utf_class(c) == 0 : ascii_iswhite(c)) {
|
||||
c = ' ';
|
||||
else if (c < 256)
|
||||
} else if (c < 256) {
|
||||
c = slang->sl_sal_first[c];
|
||||
else {
|
||||
} else {
|
||||
ip = ((int **)slang->sl_sal.ga_data)[c & 0xff];
|
||||
if (ip == NULL) // empty list, can't match
|
||||
c = NUL;
|
||||
@@ -6228,9 +6233,7 @@ static void spell_soundfold_wsal(slang_T *slang, char_u *inword, char_u *res)
|
||||
int word[MAXWLEN];
|
||||
int wres[MAXWLEN];
|
||||
int l;
|
||||
char_u *s;
|
||||
int *ws;
|
||||
char_u *t;
|
||||
int *pf;
|
||||
int i, j, z;
|
||||
int reslen;
|
||||
@@ -6250,9 +6253,9 @@ static void spell_soundfold_wsal(slang_T *slang, char_u *inword, char_u *res)
|
||||
// Remove accents, if wanted. We actually remove all non-word characters.
|
||||
// But keep white space.
|
||||
wordlen = 0;
|
||||
for (s = inword; *s != NUL; ) {
|
||||
t = s;
|
||||
c = mb_cptr2char_adv(&s);
|
||||
for (const char_u *s = inword; *s != NUL; ) {
|
||||
const char_u *t = s;
|
||||
c = mb_cptr2char_adv((const char_u **)&s);
|
||||
if (slang->sl_rem_accents) {
|
||||
if (enc_utf8 ? utf_class(c) == 0 : ascii_iswhite(c)) {
|
||||
if (did_white)
|
||||
@@ -6261,8 +6264,9 @@ static void spell_soundfold_wsal(slang_T *slang, char_u *inword, char_u *res)
|
||||
did_white = true;
|
||||
} else {
|
||||
did_white = false;
|
||||
if (!spell_iswordp_nmw(t, curwin))
|
||||
if (!spell_iswordp_nmw(t, curwin)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
word[wordlen++] = c;
|
||||
@@ -6309,7 +6313,7 @@ static void spell_soundfold_wsal(slang_T *slang, char_u *inword, char_u *res)
|
||||
continue;
|
||||
++k;
|
||||
}
|
||||
s = smp[n].sm_rules;
|
||||
char_u *s = smp[n].sm_rules;
|
||||
pri = 5; // default priority
|
||||
|
||||
p0 = *s;
|
||||
@@ -6708,25 +6712,30 @@ soundalike_score (
|
||||
// support multi-byte characters.
|
||||
static int spell_edit_score(slang_T *slang, char_u *badword, char_u *goodword)
|
||||
{
|
||||
int *cnt;
|
||||
int badlen, goodlen; // lengths including NUL
|
||||
int *cnt;
|
||||
int j, i;
|
||||
int t;
|
||||
int bc, gc;
|
||||
int pbc, pgc;
|
||||
char_u *p;
|
||||
int wbadword[MAXWLEN];
|
||||
int wgoodword[MAXWLEN];
|
||||
const bool l_has_mbyte = has_mbyte;
|
||||
|
||||
// Lengths with NUL.
|
||||
int badlen;
|
||||
int goodlen;
|
||||
if (l_has_mbyte) {
|
||||
// Get the characters from the multi-byte strings and put them in an
|
||||
// int array for easy access.
|
||||
for (p = badword, badlen = 0; *p != NUL; )
|
||||
badlen = 0;
|
||||
for (const char_u *p = badword; *p != NUL; ) {
|
||||
wbadword[badlen++] = mb_cptr2char_adv(&p);
|
||||
}
|
||||
wbadword[badlen++] = 0;
|
||||
for (p = goodword, goodlen = 0; *p != NUL; )
|
||||
goodlen = 0;
|
||||
for (const char_u *p = goodword; *p != NUL; ) {
|
||||
wgoodword[goodlen++] = mb_cptr2char_adv(&p);
|
||||
}
|
||||
wgoodword[goodlen++] = 0;
|
||||
} else {
|
||||
badlen = (int)STRLEN(badword) + 1;
|
||||
@@ -6960,19 +6969,20 @@ static int spell_edit_score_limit_w(slang_T *slang, char_u *badword, char_u *goo
|
||||
int score_off;
|
||||
int minscore;
|
||||
int round;
|
||||
char_u *p;
|
||||
int wbadword[MAXWLEN];
|
||||
int wgoodword[MAXWLEN];
|
||||
|
||||
// Get the characters from the multi-byte strings and put them in an
|
||||
// int array for easy access.
|
||||
bi = 0;
|
||||
for (p = badword; *p != NUL; )
|
||||
for (const char_u *p = badword; *p != NUL; ) {
|
||||
wbadword[bi++] = mb_cptr2char_adv(&p);
|
||||
}
|
||||
wbadword[bi++] = 0;
|
||||
gi = 0;
|
||||
for (p = goodword; *p != NUL; )
|
||||
for (const char_u *p = goodword; *p != NUL; ) {
|
||||
wgoodword[gi++] = mb_cptr2char_adv(&p);
|
||||
}
|
||||
wgoodword[gi++] = 0;
|
||||
|
||||
// The idea is to go from start to end over the words. So long as
|
||||
|
Reference in New Issue
Block a user