diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-05-03 17:19:33 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-05-03 17:19:33 +0200 |
commit | 5125874951669944a5f6a4163d6e5d437ae6321e (patch) | |
tree | b1589f391fac9218027328452aa6582ba28bbea4 | |
parent | a38b2b737e244eb2e4f199e070b05f86f4d433d4 (diff) | |
download | vim-git-5125874951669944a5f6a4163d6e5d437ae6321e.tar.gz |
patch 8.2.0690: line number of option set by modeline is wrongv8.2.0690
Problem: Line number of option set by modeline is wrong.
Solution: Do not double the line number. (Ozaki Kiichi, closes #6035)
-rw-r--r-- | src/option.c | 4 | ||||
-rw-r--r-- | src/testdir/test_modeline.vim | 56 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 61 insertions, 1 deletions
diff --git a/src/option.c b/src/option.c index 3f97c3cd1..8574f7f7c 100644 --- a/src/option.c +++ b/src/option.c @@ -2460,7 +2460,9 @@ set_option_sctx_idx(int opt_idx, int opt_flags, sctx_T script_ctx) int indir = (int)options[opt_idx].indir; sctx_T new_script_ctx = script_ctx; - new_script_ctx.sc_lnum += SOURCING_LNUM; + // Modeline already has the line number set. + if (!(opt_flags & OPT_MODELINE)) + new_script_ctx.sc_lnum += SOURCING_LNUM; // Remember where the option was set. For local options need to do that // in the buffer or window structure. diff --git a/src/testdir/test_modeline.vim b/src/testdir/test_modeline.vim index 05a146019..546c30c66 100644 --- a/src/testdir/test_modeline.vim +++ b/src/testdir/test_modeline.vim @@ -279,3 +279,59 @@ func Test_modeline_fails_modelineexpr() call s:modeline_fails('tabline', 'tabline=Something()', 'E992:') call s:modeline_fails('titlestring', 'titlestring=Something()', 'E992:') endfunc + +func Test_modeline_setoption_verbose() + let modeline = &modeline + set modeline + + let lines =<< trim END + 1 vim:ts=2 + 2 two + 3 three + 4 four + 5 five + 6 six + 7 seven + 8 eight + END + call writefile(lines, 'Xmodeline') + edit Xmodeline + let info = split(execute('verbose set tabstop?'), "\n") + call assert_match('^\s*Last set from modeline line 1$', info[-1]) + bwipe! + + let lines =<< trim END + 1 one + 2 two + 3 three + 4 vim:ts=4 + 5 five + 6 six + 7 seven + 8 eight + END + call writefile(lines, 'Xmodeline') + edit Xmodeline + let info = split(execute('verbose set tabstop?'), "\n") + call assert_match('^\s*Last set from modeline line 4$', info[-1]) + bwipe! + + let lines =<< trim END + 1 one + 2 two + 3 three + 4 four + 5 five + 6 six + 7 seven + 8 vim:ts=8 + END + call writefile(lines, 'Xmodeline') + edit Xmodeline + let info = split(execute('verbose set tabstop?'), "\n") + call assert_match('^\s*Last set from modeline line 8$', info[-1]) + bwipe! + + let &modeline = modeline + call delete('Xmodeline') +endfunc diff --git a/src/version.c b/src/version.c index c08337200..6dc86b964 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 690, +/**/ 689, /**/ 688, |