diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ex_docmd.c | 12 | ||||
-rw-r--r-- | src/spell.c | 22 |
2 files changed, 26 insertions, 8 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index fa777b3c8..0f5360f71 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -10051,16 +10051,16 @@ ex_filetype(eap) { if (*arg == 'o' || !filetype_detect) { - cmd_runtime((char_u *)FILETYPE_FILE, TRUE); + source_runtime((char_u *)FILETYPE_FILE, TRUE); filetype_detect = TRUE; if (plugin) { - cmd_runtime((char_u *)FTPLUGIN_FILE, TRUE); + source_runtime((char_u *)FTPLUGIN_FILE, TRUE); filetype_plugin = TRUE; } if (indent) { - cmd_runtime((char_u *)INDENT_FILE, TRUE); + source_runtime((char_u *)INDENT_FILE, TRUE); filetype_indent = TRUE; } } @@ -10076,18 +10076,18 @@ ex_filetype(eap) { if (plugin) { - cmd_runtime((char_u *)FTPLUGOF_FILE, TRUE); + source_runtime((char_u *)FTPLUGOF_FILE, TRUE); filetype_plugin = FALSE; } if (indent) { - cmd_runtime((char_u *)INDOFF_FILE, TRUE); + source_runtime((char_u *)INDOFF_FILE, TRUE); filetype_indent = FALSE; } } else { - cmd_runtime((char_u *)FTOFF_FILE, TRUE); + source_runtime((char_u *)FTOFF_FILE, TRUE); filetype_detect = FALSE; } } diff --git a/src/spell.c b/src/spell.c index 7513d0a73..10390ece6 100644 --- a/src/spell.c +++ b/src/spell.c @@ -474,8 +474,10 @@ typedef struct suggest_S #define SCORE_REP 87 /* REP replacement */ #define SCORE_SUBST 93 /* substitute a character */ #define SCORE_SIMILAR 33 /* substitute a similar character */ +#define SCORE_SUBCOMP 33 /* substitute a composing character */ #define SCORE_DEL 94 /* delete a character */ #define SCORE_DELDUP 64 /* delete a duplicated character */ +#define SCORE_DELCOMP 28 /* delete a composing character */ #define SCORE_INS 96 /* insert a character */ #define SCORE_INSDUP 66 /* insert a duplicate character */ #define SCORE_INSCOMP 30 /* insert a composing character */ @@ -7740,9 +7742,23 @@ suggest_try_change(su) + MB_BYTE2LEN( fword[sp->ts_fcharstart]); + /* For changing a composing character + * adjust the score from SCORE_SUBST to + * SCORE_SUBCOMP. */ + if (enc_utf8 + && utf_iscomposing( + mb_ptr2char(tword + + sp->ts_twordlen + - sp->ts_tcharlen)) + && utf_iscomposing( + mb_ptr2char(fword + + sp->ts_fcharstart))) + sp->ts_score -= + SCORE_SUBST - SCORE_SUBCOMP; + /* For a similar character adjust score * from SCORE_SUBST to SCORE_SIMILAR. */ - if (lp->lp_slang->sl_has_map + else if (lp->lp_slang->sl_has_map && similar_chars(lp->lp_slang, mb_ptr2char(tword + sp->ts_twordlen @@ -7825,7 +7841,9 @@ suggest_try_change(su) { c = mb_ptr2char(fword + sp->ts_fidx); stack[depth].ts_fidx += MB_BYTE2LEN(fword[sp->ts_fidx]); - if (c == mb_ptr2char(fword + stack[depth].ts_fidx)) + if (enc_utf8 && utf_iscomposing(c)) + stack[depth].ts_score -= SCORE_DEL - SCORE_DELCOMP; + else if (c == mb_ptr2char(fword + stack[depth].ts_fidx)) stack[depth].ts_score -= SCORE_DEL - SCORE_DELDUP; } else |