mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 8.2.2524: cannot change the characters displayed in the foldcolumn
Problem: Cannot change the characters displayed in the foldcolumn. Solution: Add fields to 'fillchars'. (Yegappan Lakshmanan, Matthieu Coudron, closes #7860)
This commit is contained in:
@@ -3247,6 +3247,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
|||||||
stlnc:c ' ' or '=' statusline of the non-current windows
|
stlnc:c ' ' or '=' statusline of the non-current windows
|
||||||
vert:c '|' vertical separators |:vsplit|
|
vert:c '|' vertical separators |:vsplit|
|
||||||
fold:c '-' filling 'foldtext'
|
fold:c '-' filling 'foldtext'
|
||||||
|
foldopen:c '-' mark the beginning of a fold
|
||||||
|
foldclose:c '+' show a closed fold
|
||||||
|
foldsep:c '|' open fold middle character
|
||||||
diff:c '-' deleted lines of the 'diff' option
|
diff:c '-' deleted lines of the 'diff' option
|
||||||
eob:c '~' empty lines below the end of a buffer
|
eob:c '~' empty lines below the end of a buffer
|
||||||
|
|
||||||
|
@@ -1347,6 +1347,9 @@ EXTERN int fill_stl INIT(= ' ');
|
|||||||
EXTERN int fill_stlnc INIT(= ' ');
|
EXTERN int fill_stlnc INIT(= ' ');
|
||||||
EXTERN int fill_vert INIT(= ' ');
|
EXTERN int fill_vert INIT(= ' ');
|
||||||
EXTERN int fill_fold INIT(= '-');
|
EXTERN int fill_fold INIT(= '-');
|
||||||
|
EXTERN int fill_foldopen INIT(= '-');
|
||||||
|
EXTERN int fill_foldclosed INIT(= '+');
|
||||||
|
EXTERN int fill_foldsep INIT(= '|');
|
||||||
EXTERN int fill_diff INIT(= '-');
|
EXTERN int fill_diff INIT(= '-');
|
||||||
EXTERN int fill_eob INIT(= '~');
|
EXTERN int fill_eob INIT(= '~');
|
||||||
|
|
||||||
|
@@ -1989,7 +1989,7 @@ retnomove:
|
|||||||
count |= CURSOR_MOVED; // Cursor has moved
|
count |= CURSOR_MOVED; // Cursor has moved
|
||||||
|
|
||||||
# ifdef FEAT_FOLDING
|
# ifdef FEAT_FOLDING
|
||||||
if (mouse_char == '+')
|
if (mouse_char == fill_foldclosed)
|
||||||
count |= MOUSE_FOLD_OPEN;
|
count |= MOUSE_FOLD_OPEN;
|
||||||
else if (mouse_char != ' ')
|
else if (mouse_char != ' ')
|
||||||
count |= MOUSE_FOLD_CLOSE;
|
count |= MOUSE_FOLD_CLOSE;
|
||||||
|
24
src/screen.c
24
src/screen.c
@@ -272,9 +272,9 @@ fill_foldcolumn(
|
|||||||
{
|
{
|
||||||
if (win_foldinfo.fi_lnum == lnum
|
if (win_foldinfo.fi_lnum == lnum
|
||||||
&& first_level + i >= win_foldinfo.fi_low_level)
|
&& first_level + i >= win_foldinfo.fi_low_level)
|
||||||
p[i] = '-';
|
p[i] = fill_foldopen;
|
||||||
else if (first_level == 1)
|
else if (first_level == 1)
|
||||||
p[i] = '|';
|
p[i] = fill_foldsep;
|
||||||
else if (first_level + i <= 9)
|
else if (first_level + i <= 9)
|
||||||
p[i] = '0' + first_level + i;
|
p[i] = '0' + first_level + i;
|
||||||
else
|
else
|
||||||
@@ -284,7 +284,7 @@ fill_foldcolumn(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (closed)
|
if (closed)
|
||||||
p[i >= fdc ? i - 1 : i] = '+';
|
p[i >= fdc ? i - 1 : i] = fill_foldclosed;
|
||||||
}
|
}
|
||||||
#endif // FEAT_FOLDING
|
#endif // FEAT_FOLDING
|
||||||
|
|
||||||
@@ -4761,12 +4761,15 @@ set_chars_option(win_T *wp, char_u **varp)
|
|||||||
};
|
};
|
||||||
static struct charstab filltab[] =
|
static struct charstab filltab[] =
|
||||||
{
|
{
|
||||||
{&fill_stl, "stl"},
|
{&fill_stl, "stl"},
|
||||||
{&fill_stlnc, "stlnc"},
|
{&fill_stlnc, "stlnc"},
|
||||||
{&fill_vert, "vert"},
|
{&fill_vert, "vert"},
|
||||||
{&fill_fold, "fold"},
|
{&fill_fold, "fold"},
|
||||||
{&fill_diff, "diff"},
|
{&fill_foldopen, "foldopen"},
|
||||||
{&fill_eob, "eob"},
|
{&fill_foldclosed, "foldclose"},
|
||||||
|
{&fill_foldsep, "foldsep"},
|
||||||
|
{&fill_diff, "diff"},
|
||||||
|
{&fill_eob, "eob"},
|
||||||
};
|
};
|
||||||
static lcs_chars_T lcs_chars;
|
static lcs_chars_T lcs_chars;
|
||||||
struct charstab lcstab[] =
|
struct charstab lcstab[] =
|
||||||
@@ -4821,6 +4824,9 @@ set_chars_option(win_T *wp, char_u **varp)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
fill_diff = '-';
|
fill_diff = '-';
|
||||||
|
fill_foldopen = '-';
|
||||||
|
fill_foldclosed = '+';
|
||||||
|
fill_foldsep = '|';
|
||||||
fill_eob = '~';
|
fill_eob = '~';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -279,4 +279,58 @@ func Test_eob_fillchars()
|
|||||||
close
|
close
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for 'foldopen', 'foldclose' and 'foldsep' in 'fillchars'
|
||||||
|
func Test_fold_fillchars()
|
||||||
|
new
|
||||||
|
set fdc=2 foldenable foldmethod=manual
|
||||||
|
call setline(1, ['one', 'two', 'three', 'four', 'five'])
|
||||||
|
2,4fold
|
||||||
|
" First check for the default setting for a closed fold
|
||||||
|
let lines = ScreenLines([1, 3], 8)
|
||||||
|
let expected = [
|
||||||
|
\ ' one ',
|
||||||
|
\ '+ +-- 3',
|
||||||
|
\ ' five '
|
||||||
|
\ ]
|
||||||
|
call assert_equal(expected, lines)
|
||||||
|
normal 2Gzo
|
||||||
|
" check the characters for an open fold
|
||||||
|
let lines = ScreenLines([1, 5], 8)
|
||||||
|
let expected = [
|
||||||
|
\ ' one ',
|
||||||
|
\ '- two ',
|
||||||
|
\ '| three ',
|
||||||
|
\ '| four ',
|
||||||
|
\ ' five '
|
||||||
|
\ ]
|
||||||
|
call assert_equal(expected, lines)
|
||||||
|
|
||||||
|
" change the setting
|
||||||
|
set fillchars=vert:\|,fold:-,eob:~,foldopen:[,foldclose:],foldsep:-
|
||||||
|
|
||||||
|
" check the characters for an open fold
|
||||||
|
let lines = ScreenLines([1, 5], 8)
|
||||||
|
let expected = [
|
||||||
|
\ ' one ',
|
||||||
|
\ '[ two ',
|
||||||
|
\ '- three ',
|
||||||
|
\ '- four ',
|
||||||
|
\ ' five '
|
||||||
|
\ ]
|
||||||
|
call assert_equal(expected, lines)
|
||||||
|
|
||||||
|
" check the characters for a closed fold
|
||||||
|
normal 2Gzc
|
||||||
|
let lines = ScreenLines([1, 3], 8)
|
||||||
|
let expected = [
|
||||||
|
\ ' one ',
|
||||||
|
\ '] +-- 3',
|
||||||
|
\ ' five '
|
||||||
|
\ ]
|
||||||
|
call assert_equal(expected, lines)
|
||||||
|
|
||||||
|
%bw!
|
||||||
|
set fillchars& fdc& foldmethod& foldenable&
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2524,
|
||||||
/**/
|
/**/
|
||||||
2523,
|
2523,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user