# HG changeset patch # User Bram Moolenaar # Date 1671465605 -3600 # Node ID 6d42026ad002e8abc9ce742a3e8b0ba7ad7cc27f # Parent 97e0789e6d1097576118c933522634d657d8c2b1 patch 9.0.1078: with the +vartabs feature indent folding may use wrong 'ts' Commit: https://github.com/vim/vim/commit/07146ad1d33ba0d36b324873e5c461931e6b025e Author: zeertzjq Date: Mon Dec 19 15:51:44 2022 +0000 patch 9.0.1078: with the +vartabs feature indent folding may use wrong 'ts' Problem: With the +vartabs feature indent folding may use wrong 'tabstop'. Solution: Use the "buf" argument instead of "curbuf". diff --git a/src/indent.c b/src/indent.c --- a/src/indent.c +++ b/src/indent.c @@ -420,7 +420,7 @@ get_indent_buf(buf_T *buf, linenr_T lnum { # ifdef FEAT_VARTABS return get_indent_str_vtab(ml_get_buf(buf, lnum, FALSE), - (int)curbuf->b_p_ts, buf->b_p_vts_array, FALSE); + (int)buf->b_p_ts, buf->b_p_vts_array, FALSE); # else return get_indent_str(ml_get_buf(buf, lnum, FALSE), (int)buf->b_p_ts, FALSE); # endif diff --git a/src/testdir/test_fold.vim b/src/testdir/test_fold.vim --- a/src/testdir/test_fold.vim +++ b/src/testdir/test_fold.vim @@ -157,6 +157,27 @@ func Test_indent_fold_max() bw! endfunc +func Test_indent_fold_tabstop() + call setline(1, ['0', ' 1', ' 1', "\t2", "\t2"]) + setlocal shiftwidth=4 + setlocal foldcolumn=1 + setlocal foldlevel=2 + setlocal foldmethod=indent + redraw + call assert_equal('2 2', ScreenLines(5, 10)[0]) + vsplit + windo diffthis + botright new + " This 'tabstop' value should not be used for folding in other buffers. + setlocal tabstop=4 + diffoff! + redraw + call assert_equal('2 2', ScreenLines(5, 10)[0]) + + bwipe! + bwipe! +endfunc + func Test_manual_fold_with_filter() CheckExecutable cat for type in ['manual', 'marker'] diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1078, +/**/ 1077, /**/ 1076,