patch 9.2.0444: Cannot set 'path' option via modeline
Commit:
https://github.com/vim/vim/commit/88fb739918a0d2ca4277e1e79b4fd5799e9b0128
Author: Christian Brabandt <
c...@256bit.org>
Date: Tue May 5 19:47:19 2026 +0000
patch 9.2.0444: Cannot set 'path' option via modeline
Problem: Cannot set 'path' option via modeline (zeertzjq, after v9.2.0435)
Solution: Revert the part that disallows setting 'path' via modeline.
closes: #20137
Signed-off-by: Christian Brabandt <
c...@256bit.org>
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index c4b2df144..2baf8a01a 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -6799,9 +6799,6 @@ A jump table for the options with a short description can be found at |Q_op|.
< Replace the ';' with a ':' or whatever separator is used. Note that
this doesn't work when $INCL contains a comma or white space.
- This option cannot be set from a |modeline| or in the |sandbox|, for
- security reasons.
-
*'perldll'*
'perldll' string (default depends on the build)
global
diff --git a/src/optiondefs.h b/src/optiondefs.h
index f712ab7a1..0a93b70f8 100644
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -1958,7 +1958,7 @@ static struct vimoption options[] =
(char_u *)&p_pm, PV_NONE,
did_set_backupext_or_patchmode, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
- {"path", "pa", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE|P_COMMA|P_NODUP,
+ {"path", "pa", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
(char_u *)&p_path, PV_PATH, NULL, NULL,
{
#if defined(AMIGA) || defined(MSWIN)
diff --git a/src/testdir/test_find_complete.vim b/src/testdir/test_find_complete.vim
index 8b8b71c30..db1860dc4 100644
--- a/src/testdir/test_find_complete.vim
+++ b/src/testdir/test_find_complete.vim
@@ -165,9 +165,15 @@ endfunc
func Test_find_completion_backtick_in_path()
CheckUnix
CheckExecutable id
+ set nomodelinestrict modeline
+ let lines =<< trim END
+ // vim: set path+=`id>Xrce_marker` :
+ END
+
+ call writefile(lines, 'Xpoc.c', 'D')
new Xpoc.c
- setl path+=`id>Xrce_marker`
+ call assert_match('`id>Xrce_marker`', &path)
" Triggering completion must not execute the backtick command.
call getcompletion('', 'file_in_path')
call assert_false(filereadable('Xrce_marker'))
@@ -176,6 +182,7 @@ func Test_find_completion_backtick_in_path()
bwipe!
call delete('Xrce_marker')
+ set modelinestrict& modeline&
endfunc
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_modeline.vim b/src/testdir/test_modeline.vim
index 6cbf87638..6884ab473 100644
--- a/src/testdir/test_modeline.vim
+++ b/src/testdir/test_modeline.vim
@@ -665,18 +665,4 @@ func Test_modeline_strict_cannot_be_set_from_modeline()
let &modeline = modeline
endfunc
-" Verify that backticks in 'path' set from a modeline are not executed
-func Test_path_modeline()
- let lines =<< trim END
- // vim: set path+=foobar :
- END
- call writefile(lines, 'Xpoc.c', 'D')
-
- set nomodelinestrict modeline
- call assert_fails('split Xpoc.c', 'E520:')
-
- bwipe!
- set modelinestrict& modeline&
-endfunc
-
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 61342e15f..a859c2ced 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 444,
/**/
443,
/**/