syntax: factor out helper to compute the syntax-based foldlevel

This commit is contained in:
Brad King 2020-04-06 16:08:48 -04:00
parent 721f69c4af
commit ae5651942e
1 changed files with 12 additions and 5 deletions

View File

@ -5763,6 +5763,17 @@ int syn_get_stack_item(int i)
return CUR_STATE(i).si_id;
}
static int syn_cur_foldlevel(void)
{
int level = 0;
for (int i = 0; i < current_state.ga_len; i++) {
if (CUR_STATE(i).si_flags & HL_FOLD) {
level++;
}
}
return level;
}
/*
* Function called to get folding level for line "lnum" in window "wp".
*/
@ -5776,11 +5787,7 @@ int syn_get_foldlevel(win_T *wp, long lnum)
&& !wp->w_s->b_syn_slow) {
syntax_start(wp, lnum);
for (int i = 0; i < current_state.ga_len; ++i) {
if (CUR_STATE(i).si_flags & HL_FOLD) {
++level;
}
}
level = syn_cur_foldlevel();
}
if (level > wp->w_p_fdn) {
level = wp->w_p_fdn;