patch 9.1.1819: Cannot configure the inner foldlevel indicator
Commit:
https://github.com/vim/vim/commit/1a691afd2717732c6f42dfe3278a9540db0d8110
Author: Maria José Solano <[email protected]>
Date: Fri Oct 3 08:24:31 2025 +0000
patch 9.1.1819: Cannot configure the inner foldlevel indicator
Problem: Cannot configure the inner foldlevel indicator for the
foldcolumn
Solution: Add "foldinner" suboption value to the 'fillchar' option
(Maria José Solano).
closes: #18365
Signed-off-by: Maria José Solano <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt
index d138e0d93..40cff059c 100644
--- a/runtime/doc/fold.txt
+++ b/runtime/doc/fold.txt
@@ -1,4 +1,4 @@
-*fold.txt* For Vim version 9.1. Last change: 2025 Jul 15
+*fold.txt* For Vim version 9.1. Last change: 2025 Oct 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -595,7 +595,8 @@ A closed fold is indicated with a '+'.
These characters can be changed with the 'fillchars' option.
Where the fold column is too narrow to display all nested folds, digits are
-shown to indicate the nesting level.
+shown to indicate the nesting level. To override this behavior you can use
+the "foldinner" character of the 'fillchars' option.
The mouse can also be used to open and close folds by clicking in the
fold column:
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index d0e587b4f..0b86c4190 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -3853,6 +3853,9 @@ A jump table for the options with a short description can
be found at |Q_op|.
foldopen '-' mark the beginning of a fold
foldclose '+' show a closed fold
foldsep '|' open fold middle character
+ foldinner none character to show instead of the
+ numeric foldlevel when it would be
+ repeated in a narrow 'foldcolumn'
diff '-' deleted lines of the 'diff' option
eob '~' empty lines below the end of a buffer
lastline '@' 'display' contains lastline/truncate
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index 910a03614..6ae6d0118 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -1,4 +1,4 @@
-*version9.txt* For Vim version 9.1. Last change: 2025 Sep 29
+*version9.txt* For Vim version 9.1. Last change: 2025 Oct 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -322,6 +322,8 @@ Improvements in 'fillchars':
"eob" in 'fillchars'.
- Support for using multibyte items with the "stl", "stlnc", "foldopen",
"foldclose" and "foldsep" items in the 'fillchars' option.
+- Support for configuring the character used inside a fold level region using
+ "foldinner" in 'fillchars'.
Support for the XChaCha20 encryption method. 'cryptmethod'
@@ -41702,7 +41704,9 @@ Options: ~
- new option values for 'fillchars':
"trunc" - configure truncation indicator, 'pummaxwidth'
"truncrl" - like "trunc" but in 'rl' mode, 'pummaxwidth'
- "tpl_vert" - separators for the 'tabpanel'
+ "tpl_vert" - vertical separators for the 'tabpanel'
+ "foldinner" - character used inside the 'foldcolumn' for nested
+ fold levels
- 'grepformat' is now a |global-local| option.
- adjust for GTK3 dropping some mouse cursors 'mouseshape'
- 'nrformats' accepts the new "blank" suboption, to determine a signed or
diff --git a/src/screen.c b/src/screen.c
index 3e3c86f37..122c2b950 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -287,6 +287,8 @@ fill_foldcolumn(
symbol = wp->w_fill_chars.foldopen;
else if (first_level == 1)
symbol = wp->w_fill_chars.foldsep;
+ else if (wp->w_fill_chars.foldinner != NUL)
+ symbol = wp->w_fill_chars.foldinner;
else if (first_level + i <= 9)
symbol = '0' + first_level + i;
else
@@ -4738,6 +4740,7 @@ static struct charstab filltab[] =
CHARSTAB_ENTRY(&fill_chars.foldopen, "foldopen"),
CHARSTAB_ENTRY(&fill_chars.foldclosed, "foldclose"),
CHARSTAB_ENTRY(&fill_chars.foldsep, "foldsep"),
+ CHARSTAB_ENTRY(&fill_chars.foldinner, "foldinner"),
CHARSTAB_ENTRY(&fill_chars.diff, "diff"),
CHARSTAB_ENTRY(&fill_chars.eob, "eob"),
CHARSTAB_ENTRY(&fill_chars.lastline, "lastline"),
@@ -4856,6 +4859,7 @@ set_chars_option(win_T *wp, char_u *value, int
is_listchars, int apply,
fill_chars.foldopen = '-';
fill_chars.foldclosed = '+';
fill_chars.foldsep = '|';
+ fill_chars.foldinner = NUL;
fill_chars.diff = '-';
fill_chars.eob = '~';
fill_chars.lastline = '@';
diff --git a/src/structs.h b/src/structs.h
index f39f5d3a6..8d90fa8dd 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -3913,6 +3913,7 @@ typedef struct
int foldopen;
int foldclosed;
int foldsep;
+ int foldinner;
int diff;
int eob;
int lastline;
diff --git a/src/testdir/test_display.vim b/src/testdir/test_display.vim
index ed8495984..6bcc8a241 100644
--- a/src/testdir/test_display.vim
+++ b/src/testdir/test_display.vim
@@ -340,6 +340,32 @@ func Test_fold_fillchars()
\ ]
call assert_equal(expected, lines)
+ " check setting foldinner
+ set fdc=1 foldmethod=indent foldlevel=10
+ call setline(1, ['one', ' two', ' two', ' three', '
three', 'four'])
+ let lines = ScreenLines([1, 6], 22)
+ let expected = [
+ \ ' one ',
+ \ '[ two ',
+ \ '- two ',
+ \ '[ three',
+ \ '2 three',
+ \ ' four ',
+ \ ]
+ call assert_equal(expected, lines)
+
+ set fillchars+=foldinner:\
+ let lines = ScreenLines([1, 6], 22)
+ let expected = [
+ \ ' one ',
+ \ '[ two ',
+ \ '- two ',
+ \ '[ three',
+ \ ' three',
+ \ ' four ',
+ \ ]
+ call assert_equal(expected, lines)
+
%bw!
set fillchars& fdc& foldmethod& foldenable&
endfunc
diff --git a/src/version.c b/src/version.c
index 0565a8216..431536543 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1819,
/**/
1818,
/**/
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1v4bAy-008xvt-Un%40256bit.org.