forked from aniani/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 #8798)
This commit is contained in:
parent
9aecf79c45
commit
9dcd349ca8
@ -541,6 +541,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
|
version 3.0). Using "ex:" at the start of the line will be ignored (this
|
||||||
could be short for "example:").
|
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*
|
*modeline-local*
|
||||||
The options are set like with ":setlocal": The new value only applies to the
|
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
|
buffer and window that contain the file. Although it's possible to set global
|
||||||
|
@ -5446,12 +5446,12 @@ do_modelines(int flags)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
++entered;
|
++entered;
|
||||||
for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count && lnum <= nmlines;
|
for (lnum = 1; curbuf->b_p_ml && lnum <= curbuf->b_ml.ml_line_count && lnum <= nmlines;
|
||||||
++lnum)
|
++lnum)
|
||||||
if (chk_modeline(lnum, flags) == FAIL)
|
if (chk_modeline(lnum, flags) == FAIL)
|
||||||
nmlines = 0;
|
nmlines = 0;
|
||||||
|
|
||||||
for (lnum = curbuf->b_ml.ml_line_count; lnum > 0 && lnum > nmlines
|
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)
|
&& lnum > curbuf->b_ml.ml_line_count - nmlines; --lnum)
|
||||||
if (chk_modeline(lnum, flags) == FAIL)
|
if (chk_modeline(lnum, flags) == FAIL)
|
||||||
nmlines = 0;
|
nmlines = 0;
|
||||||
|
@ -360,4 +360,12 @@ func Test_modeline_diff_buffer()
|
|||||||
bw
|
bw
|
||||||
endfunc
|
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
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -755,6 +755,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 */
|
||||||
|
/**/
|
||||||
|
3384,
|
||||||
/**/
|
/**/
|
||||||
3383,
|
3383,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user