comparison src/testdir/test_modeline.vim @ 15066:40d9218b2b12 v8.1.0544

patch 8.1.0544: setting 'filetype' in a modeline causes an error commit https://github.com/vim/vim/commit/916a818cea5ba05a5f2117407674461b8bee6832 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Nov 25 02:18:29 2018 +0100 patch 8.1.0544: setting 'filetype' in a modeline causes an error Problem: Setting 'filetype' in a modeline causes an error (Hirohito Higashi). Solution: Don't add the P_INSECURE flag when setting 'filetype' from a modeline. Also for 'syntax'.
author Bram Moolenaar <Bram@vim.org>
date Sun, 25 Nov 2018 02:30:10 +0100
parents 85467d180844
children aabaf1499d05
comparison
equal deleted inserted replaced
15065:1916cdaefb0e 15066:40d9218b2b12
4 " This was reading allocated memory in the past. 4 " This was reading allocated memory in the past.
5 call writefile(['vi:0', 'nothing'], 'Xmodeline') 5 call writefile(['vi:0', 'nothing'], 'Xmodeline')
6 let modeline = &modeline 6 let modeline = &modeline
7 set modeline 7 set modeline
8 call assert_fails('split Xmodeline', 'E518:') 8 call assert_fails('split Xmodeline', 'E518:')
9
9 let &modeline = modeline 10 let &modeline = modeline
10 bwipe! 11 bwipe!
11 call delete('Xmodeline') 12 call delete('Xmodeline')
12 endfunc 13 endfunc
14
15 func Test_modeline_filetype()
16 call writefile(['vim: set ft=c :', 'nothing'], 'Xmodeline_filetype')
17 let modeline = &modeline
18 set modeline
19 filetype plugin on
20 split Xmodeline_filetype
21 call assert_equal("c", &filetype)
22 call assert_equal(1, b:did_ftplugin)
23 call assert_equal("ccomplete#Complete", &ofu)
24
25 bwipe!
26 call delete('Xmodeline_filetype')
27 let &modeline = modeline
28 filetype plugin off
29 endfunc
30
31 func Test_modeline_syntax()
32 call writefile(['vim: set syn=c :', 'nothing'], 'Xmodeline_syntax')
33 let modeline = &modeline
34 set modeline
35 syntax enable
36 split Xmodeline_syntax
37 call assert_equal("c", &syntax)
38 call assert_equal("c", b:current_syntax)
39
40 bwipe!
41 call delete('Xmodeline_syntax')
42 let &modeline = modeline
43 syntax off
44 endfunc
45
46 func Test_modeline_keymap()
47 call writefile(['vim: set keymap=greek :', 'nothing'], 'Xmodeline_keymap')
48 let modeline = &modeline
49 set modeline
50 split Xmodeline_keymap
51 call assert_equal("greek", &keymap)
52 call assert_match('greek\|grk', b:keymap_name)
53
54 bwipe!
55 call delete('Xmodeline_keymap')
56 let &modeline = modeline
57 set keymap= iminsert=0 imsearch=-1
58 endfunc
59
60 func s:modeline_fails(what, text)
61 let fname = "Xmodeline_fails_" . a:what
62 call writefile(['vim: set ' . a:text . ' :', 'nothing'], fname)
63 let modeline = &modeline
64 set modeline
65 filetype plugin on
66 syntax enable
67 call assert_fails('split ' . fname, 'E474:')
68 call assert_equal("", &filetype)
69 call assert_equal("", &syntax)
70
71 bwipe!
72 call delete(fname)
73 let &modeline = modeline
74 filetype plugin off
75 syntax off
76 endfunc
77
78 func Test_modeline_filetype_fails()
79 call s:modeline_fails('filetype', 'ft=evil$CMD')
80 endfunc
81
82 func Test_modeline_syntax_fails()
83 call s:modeline_fails('syntax', 'syn=evil$CMD')
84 endfunc
85
86 func Test_modeline_keymap_fails()
87 call s:modeline_fails('keymap', 'keymap=evil$CMD')
88 endfunc