mirror of
https://github.com/vim/vim.git
synced 2025-09-27 04:14:06 -04:00
patch 8.1.0138: negative value of 'softtabstop' not used correctly
Problem: Negative value of 'softtabstop' not used correctly. Solution: Use get_sts_value(). (Tom Ryder)
This commit is contained in:
@@ -2288,6 +2288,7 @@ test_arglist \
|
|||||||
test_syn_attr \
|
test_syn_attr \
|
||||||
test_syntax \
|
test_syntax \
|
||||||
test_system \
|
test_system \
|
||||||
|
test_tab \
|
||||||
test_tabline \
|
test_tabline \
|
||||||
test_tabpage \
|
test_tabpage \
|
||||||
test_tagcase \
|
test_tagcase \
|
||||||
|
@@ -9373,7 +9373,7 @@ ins_bs(
|
|||||||
if (p_sta && in_indent)
|
if (p_sta && in_indent)
|
||||||
want_vcol = (want_vcol / curbuf->b_p_sw) * curbuf->b_p_sw;
|
want_vcol = (want_vcol / curbuf->b_p_sw) * curbuf->b_p_sw;
|
||||||
else
|
else
|
||||||
want_vcol = tabstop_start(want_vcol, curbuf->b_p_sts,
|
want_vcol = tabstop_start(want_vcol, get_sts_value(),
|
||||||
curbuf->b_p_vsts_array);
|
curbuf->b_p_vsts_array);
|
||||||
#else
|
#else
|
||||||
want_vcol = (want_vcol / ts) * ts;
|
want_vcol = (want_vcol / ts) * ts;
|
||||||
@@ -10203,9 +10203,9 @@ ins_tab(void)
|
|||||||
temp = (int)curbuf->b_p_sw;
|
temp = (int)curbuf->b_p_sw;
|
||||||
temp -= get_nolist_virtcol() % temp;
|
temp -= get_nolist_virtcol() % temp;
|
||||||
}
|
}
|
||||||
else if (tabstop_count(curbuf->b_p_vsts_array) > 0 || curbuf->b_p_sts > 0)
|
else if (tabstop_count(curbuf->b_p_vsts_array) > 0 || curbuf->b_p_sts != 0)
|
||||||
/* use 'softtabstop' when set */
|
/* use 'softtabstop' when set */
|
||||||
temp = tabstop_padding(get_nolist_virtcol(), curbuf->b_p_sts,
|
temp = tabstop_padding(get_nolist_virtcol(), get_sts_value(),
|
||||||
curbuf->b_p_vsts_array);
|
curbuf->b_p_vsts_array);
|
||||||
else /* otherwise use 'tabstop' */
|
else /* otherwise use 'tabstop' */
|
||||||
temp = tabstop_padding(get_nolist_virtcol(), curbuf->b_p_ts,
|
temp = tabstop_padding(get_nolist_virtcol(), curbuf->b_p_ts,
|
||||||
|
@@ -13016,7 +13016,7 @@ get_sw_value(buf_T *buf)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the effective softtabstop value for the current buffer, using the
|
* Return the effective softtabstop value for the current buffer, using the
|
||||||
* 'tabstop' value when 'softtabstop' is negative.
|
* 'shiftwidth' value when 'softtabstop' is negative.
|
||||||
*/
|
*/
|
||||||
long
|
long
|
||||||
get_sts_value(void)
|
get_sts_value(void)
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
" Various tests for inserting a Tab.
|
||||||
|
|
||||||
" Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
|
" Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
|
||||||
" Also test that dv_ works correctly
|
" Also test that dv_ works correctly
|
||||||
@@ -43,3 +44,38 @@ func Test_smarttab()
|
|||||||
enew!
|
enew!
|
||||||
set expandtab& smartindent& copyindent& ts& sw& sts&
|
set expandtab& smartindent& copyindent& ts& sw& sts&
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_softtabstop()
|
||||||
|
new
|
||||||
|
set sts=0 sw=0
|
||||||
|
exe "normal ix\<Tab>x\<Esc>"
|
||||||
|
call assert_equal("x\tx", getline(1))
|
||||||
|
|
||||||
|
call setline(1, '')
|
||||||
|
set sts=4
|
||||||
|
exe "normal ix\<Tab>x\<Esc>"
|
||||||
|
call assert_equal("x x", getline(1))
|
||||||
|
|
||||||
|
call setline(1, '')
|
||||||
|
set sts=-1 sw=4
|
||||||
|
exe "normal ix\<Tab>x\<Esc>"
|
||||||
|
call assert_equal("x x", getline(1))
|
||||||
|
|
||||||
|
call setline(1, 'x ')
|
||||||
|
set sts=0 sw=0 backspace=start
|
||||||
|
exe "normal A\<BS>x\<Esc>"
|
||||||
|
call assert_equal("x x", getline(1))
|
||||||
|
|
||||||
|
call setline(1, 'x ')
|
||||||
|
set sts=4
|
||||||
|
exe "normal A\<BS>x\<Esc>"
|
||||||
|
call assert_equal("x x", getline(1))
|
||||||
|
|
||||||
|
call setline(1, 'x ')
|
||||||
|
set sts=-1 sw=4
|
||||||
|
exe "normal A\<BS>x\<Esc>"
|
||||||
|
call assert_equal("x x", getline(1))
|
||||||
|
|
||||||
|
set sts=0 sw=0 backspace&
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
@@ -789,6 +789,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 */
|
||||||
|
/**/
|
||||||
|
138,
|
||||||
/**/
|
/**/
|
||||||
137,
|
137,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user