mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.2.3384: cannot disable modeline for an individual file
Problem: Cannot disable modeline for an individual file.
Solution: Recognize "nomodeline" in a modeline. (Hu Jialun, closes vim/vim#8798)
9dcd349ca8
Cherry-pick missing modeline for test_modeline.vim (heh) from v8.2.1432.
This commit is contained in:
parent
e8e2f73c3a
commit
b3a97c56b6
@ -435,6 +435,15 @@ chance that a normal word like "lex:" is caught. There is one exception:
|
||||
version 3.0). Using "ex:" at the start of the line will be ignored (this
|
||||
could be short for "example:").
|
||||
|
||||
If the modeline is disabled within a modeline, subsequent modelines will be
|
||||
ignored. This is to allow turning off modeline on a per-file basis. This is
|
||||
useful when a line looks like a modeline but isn't. For example, it would be
|
||||
good to start a YAML file containing strings like "vim:" with
|
||||
# vim: nomodeline ~
|
||||
so as to avoid modeline misdetection. Following options on the same line
|
||||
after modeline deactivation, if any, are still evaluated (but you would
|
||||
normally not have any).
|
||||
|
||||
*modeline-local*
|
||||
The options are set like with ":setlocal": The new value only applies to the
|
||||
buffer and window that contain the file. Although it's possible to set global
|
||||
|
@ -5261,15 +5261,16 @@ void do_modelines(int flags)
|
||||
}
|
||||
|
||||
entered++;
|
||||
for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count && lnum <= nmlines;
|
||||
lnum++) {
|
||||
for (lnum = 1; curbuf->b_p_ml && lnum <= curbuf->b_ml.ml_line_count
|
||||
&& lnum <= nmlines; lnum++) {
|
||||
if (chk_modeline(lnum, flags) == FAIL) {
|
||||
nmlines = 0;
|
||||
}
|
||||
}
|
||||
|
||||
for (lnum = curbuf->b_ml.ml_line_count; lnum > 0 && lnum > nmlines
|
||||
&& lnum > curbuf->b_ml.ml_line_count - nmlines; lnum--) {
|
||||
for (lnum = curbuf->b_ml.ml_line_count; curbuf->b_p_ml && lnum > 0
|
||||
&& lnum > nmlines && lnum > curbuf->b_ml.ml_line_count - nmlines;
|
||||
lnum--) {
|
||||
if (chk_modeline(lnum, flags) == FAIL) {
|
||||
nmlines = 0;
|
||||
}
|
||||
|
@ -280,3 +280,13 @@ 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_disable()
|
||||
set modeline
|
||||
call writefile(['vim: sw=2', 'vim: nomodeline', 'vim: sw=3'], 'Xmodeline_disable')
|
||||
edit Xmodeline_disable
|
||||
call assert_equal(2, &sw)
|
||||
call delete('Xmodeline_disable')
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
Loading…
Reference in New Issue
Block a user