aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/spell.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/spell.c')
-rw-r--r--src/nvim/spell.c48
1 files changed, 18 insertions, 30 deletions
diff --git a/src/nvim/spell.c b/src/nvim/spell.c
index 711f892d16..2f88c2d523 100644
--- a/src/nvim/spell.c
+++ b/src/nvim/spell.c
@@ -3335,7 +3335,6 @@ static int init_syl_tab(slang_T *slang)
char_u *p;
char_u *s;
int l;
- syl_item_T *syl;
ga_init(&slang->sl_syl_items, sizeof(syl_item_T), 4);
p = vim_strchr(slang->sl_syllable, '/');
@@ -3351,9 +3350,8 @@ static int init_syl_tab(slang_T *slang)
l = (int)(p - s);
if (l >= SY_MAXLEN)
return SP_FORMERROR;
- ga_grow(&slang->sl_syl_items, 1);
- syl = ((syl_item_T *)slang->sl_syl_items.ga_data)
- + slang->sl_syl_items.ga_len++;
+
+ syl_item_T *syl = GA_APPEND_VIA_PTR(syl_item_T, &slang->sl_syl_items);
STRLCPY(syl->sy_chars, s, l + 1);
syl->sy_len = l;
}
@@ -3835,10 +3833,10 @@ char_u *did_set_spelllang(win_T *wp)
}
if (region_mask != 0) {
- ga_grow(&ga, 1);
- LANGP_ENTRY(ga, ga.ga_len)->lp_slang = slang;
- LANGP_ENTRY(ga, ga.ga_len)->lp_region = region_mask;
- ++ga.ga_len;
+ langp_T *p = GA_APPEND_VIA_PTR(langp_T, &ga);
+ p->lp_slang = slang;
+ p->lp_region = region_mask;
+
use_midword(slang, wp);
if (slang->sl_nobreak)
nobreak = TRUE;
@@ -3896,7 +3894,6 @@ char_u *did_set_spelllang(win_T *wp)
slang->sl_nobreak = TRUE;
}
if (slang != NULL) {
- ga_grow(&ga, 1);
region_mask = REGION_ALL;
if (use_region != NULL && !dont_use_region) {
// find region in sl_regions
@@ -3909,11 +3906,12 @@ char_u *did_set_spelllang(win_T *wp)
}
if (region_mask != 0) {
- LANGP_ENTRY(ga, ga.ga_len)->lp_slang = slang;
- LANGP_ENTRY(ga, ga.ga_len)->lp_sallang = NULL;
- LANGP_ENTRY(ga, ga.ga_len)->lp_replang = NULL;
- LANGP_ENTRY(ga, ga.ga_len)->lp_region = region_mask;
- ++ga.ga_len;
+ langp_T *p = GA_APPEND_VIA_PTR(langp_T, &ga);
+ p->lp_slang = slang;
+ p->lp_sallang = NULL;
+ p->lp_replang = NULL;
+ p->lp_region = region_mask;
+
use_midword(slang, wp);
}
}
@@ -4851,16 +4849,11 @@ static afffile_T *spell_read_aff(spellinfo_T *spin, char_u *fname)
break;
}
if (idx < 0) {
- ga_grow(&spin->si_prefcond, 1);
// Not found, add a new condition.
- idx = spin->si_prefcond.ga_len++;
- pp = ((char_u **)spin->si_prefcond.ga_data)
- + idx;
- if (aff_entry->ae_cond == NULL)
- *pp = NULL;
- else
- *pp = getroom_save(spin,
- aff_entry->ae_cond);
+ idx = spin->si_prefcond.ga_len;
+ pp = GA_APPEND_VIA_PTR(char_u *, &spin->si_prefcond);
+ *pp = (aff_entry->ae_cond == NULL) ?
+ NULL : getroom_save(spin, aff_entry->ae_cond);
}
// Add the prefix to the prefix tree.
@@ -5328,16 +5321,13 @@ static int str_equal(char_u *s1, char_u *s2)
// They are stored case-folded.
static void add_fromto(spellinfo_T *spin, garray_T *gap, char_u *from, char_u *to)
{
- fromto_T *ftp;
char_u word[MAXWLEN];
- ga_grow(gap, 1);
- ftp = ((fromto_T *)gap->ga_data) + gap->ga_len;
+ fromto_T *ftp = GA_APPEND_VIA_PTR(fromto_T, gap);
(void)spell_casefold(from, (int)STRLEN(from), word, MAXWLEN);
ftp->ft_from = getroom_save(spin, word);
(void)spell_casefold(to, (int)STRLEN(to), word, MAXWLEN);
ftp->ft_to = getroom_save(spin, word);
- ++gap->ga_len;
}
// Convert a boolean argument in a SAL line to TRUE or FALSE;
@@ -11503,9 +11493,8 @@ add_suggestion (
}
if (i < 0) {
- ga_grow(gap, 1);
// Add a suggestion.
- stp = &SUG(*gap, gap->ga_len);
+ stp = GA_APPEND_VIA_PTR(suggest_T, gap);
stp->st_word = vim_strnsave(goodword, goodlen);
stp->st_wordlen = goodlen;
stp->st_score = score;
@@ -11513,7 +11502,6 @@ add_suggestion (
stp->st_had_bonus = had_bonus;
stp->st_orglen = badlen;
stp->st_slang = slang;
- ++gap->ga_len;
// If we have too many suggestions now, sort the list and keep
// the best suggestions.