view src/proto/spell.pro @ 33713:9aa03e12b2b5 v9.0.2090

patch 9.0.2090: complete_info() skips entries with 'noselect' Commit: https://github.com/vim/vim/commit/57f9ce1a0977da13e5923214086795ffa2d28ce1 Author: Christian Brabandt <cb@256bit.org> Date: Sat Nov 4 09:58:14 2023 +0100 patch 9.0.2090: complete_info() skips entries with 'noselect' Problem: complete_info() skips entries with 'noselect' Solution: Check, if first entry is at original text state Unfortunately, Commit daef8c74375141974d61b85199b383017644978c introduced a regression, that when ':set completeopt+=noselect' is set and no completion item has been selected yet, it did not fill the complete_info['items'] list. This happened, because the current match item did not have the CP_ORIGINAL_TEXT flag set and then the cp->prev pointer did point to the original flag item, which caused the following while loop to not being run but being skipped instead. So when the 'noselect' is set, only start with to the previous selection item, if the initial completion item has the CP_ORIGINAL_TEXT flag set, else use the 2nd previous item instead. fixes: #13451 closes: #13452 Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sat, 04 Nov 2023 10:15:04 +0100
parents 695b50472e85
children ffa6ed03a9f2
line wrap: on
line source

/* spell.c */
int spell_check(win_T *wp, char_u *ptr, hlf_T *attrp, int *capcol, int docount);
int match_checkcompoundpattern(char_u *ptr, int wlen, garray_T *gap);
int can_compound(slang_T *slang, char_u *word, char_u *flags);
int match_compoundrule(slang_T *slang, char_u *compflags);
int valid_word_prefix(int totprefcnt, int arridx, int flags, char_u *word, slang_T *slang, int cond_req);
int spell_valid_case(int wordflags, int treeflags);
int spell_check_window(win_T *wp);
int spell_move_to(win_T *wp, int dir, int allwords, int curline, hlf_T *attrp);
void spell_cat_line(char_u *buf, char_u *line, int maxlen);
char_u *spell_enc(void);
slang_T *slang_alloc(char_u *lang);
void slang_free(slang_T *lp);
void slang_clear(slang_T *lp);
void slang_clear_sug(slang_T *lp);
void count_common_word(slang_T *lp, char_u *word, int len, int count);
int byte_in_str(char_u *str, int n);
int init_syl_tab(slang_T *slang);
char *parse_spelllang(win_T *wp);
int captype(char_u *word, char_u *end);
void spell_delete_wordlist(void);
void spell_free_all(void);
void spell_reload(void);
buf_T *open_spellbuf(void);
void close_spellbuf(buf_T *buf);
void clear_spell_chartab(spelltab_T *sp);
void init_spell_chartab(void);
int spell_iswordp(char_u *p, win_T *wp);
int spell_iswordp_nmw(char_u *p, win_T *wp);
int spell_casefold(win_T *wp, char_u *str, int len, char_u *buf, int buflen);
int check_need_cap(win_T *wp, linenr_T lnum, colnr_T col);
void ex_spellrepall(exarg_T *eap);
void onecap_copy(char_u *word, char_u *wcopy, int upper);
void allcap_copy(char_u *word, char_u *wcopy);
int nofold_len(char_u *fword, int flen, char_u *word);
void make_case_word(char_u *fword, char_u *cword, int flags);
char_u *eval_soundfold(char_u *word);
void spell_soundfold(slang_T *slang, char_u *inword, int folded, char_u *res);
void ex_spellinfo(exarg_T *eap);
void ex_spelldump(exarg_T *eap);
void spell_dump_compl(char_u *pat, int ic, int *dir, int dumpflags_arg);
char_u *spell_to_word_end(char_u *start, win_T *win);
int spell_word_start(int startcol);
void spell_expand_check_cap(colnr_T col);
int expand_spelling(linenr_T lnum, char_u *pat, char_u ***matchp);
int valid_spelllang(char_u *val);
int valid_spellfile(char_u *val);
char *did_set_spell_option(int is_spellfile);
char *compile_cap_prog(synblock_T *synblock);
/* vim: set ft=c : */