diff options
author | Matthieu Coudron <mattator@gmail.com> | 2020-01-14 19:50:30 +0100 |
---|---|---|
committer | Matthieu Coudron <mattator@gmail.com> | 2020-02-29 20:27:22 +0100 |
commit | 1a2be57da3f7e33af4e4eb3e0d36569feea71253 (patch) | |
tree | e38b97171e9539644e2be9eb36f02f17be2d13ee /src/nvim/window.c | |
parent | 49cd750d6a72efc0571a89d7a874bbb01081227f (diff) | |
download | rneovim-1a2be57da3f7e33af4e4eb3e0d36569feea71253.tar.gz rneovim-1a2be57da3f7e33af4e4eb3e0d36569feea71253.tar.bz2 rneovim-1a2be57da3f7e33af4e4eb3e0d36569feea71253.zip |
foldcolumn: allow auto:X
Similar to signcolumn, allow foldcolumn to adapt itself to the number of
folds.
Regression:
vim supports a maximum fdc of 12, this limits it to 9.
Diffstat (limited to 'src/nvim/window.c')
-rw-r--r-- | src/nvim/window.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c index 8181883426..df0033a203 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -618,7 +618,6 @@ void win_set_minimal_style(win_T *wp) wp->w_p_cuc = false; wp->w_p_spell = false; wp->w_p_list = false; - wp->w_p_fdc = 0; // Hide EOB region: use " " fillchar and cleared highlighting if (wp->w_p_fcs_chars.eob != ' ') { @@ -642,6 +641,12 @@ void win_set_minimal_style(win_T *wp) wp->w_p_scl = (char_u *)xstrdup("auto"); } + // foldcolumn: use 'auto' + if (wp->w_p_fdc[0] != '0') { + xfree(wp->w_p_fdc); + wp->w_p_fdc = (char_u *)xstrdup("0"); + } + // colorcolumn: cleared if (wp->w_p_cc != NULL && *wp->w_p_cc != NUL) { xfree(wp->w_p_cc); @@ -689,6 +694,24 @@ void win_check_anchored_floats(win_T *win) } } +/// Return the number of requested fold columns, based on current +/// folds signs and on user configuration. +int win_fdccol_count(win_T *wp) +{ + const char *fdc = (const char *)wp->w_p_fdc; + + // auto:<NUM> + if (strncmp(fdc, "auto:", 5) == 0) { + int needed_fdccols; + needed_fdccols = getDeepestNesting(wp); + int maximum = fdc[5] - '0'; + return MIN(maximum, needed_fdccols); + } else { + return fdc[0] - '0'; + } +} + + static void ui_ext_win_position(win_T *wp) { if (!wp->w_floating) { |