19cf4b500SBram Moolenaar" Tests for parsing the modeline.
29cf4b500SBram Moolenaar
36d91bcb4SBram Moolenaarsource check.vim
46d91bcb4SBram Moolenaar
5cd96eef3SBram Moolenaarfunc Test_modeline_invalid()
69691f82fSBram Moolenaar  " This was reading allocated memory in the past.
79cf4b500SBram Moolenaar  call writefile(['vi:0', 'nothing'], 'Xmodeline')
89691f82fSBram Moolenaar  let modeline = &modeline
99691f82fSBram Moolenaar  set modeline
109cf4b500SBram Moolenaar  call assert_fails('split Xmodeline', 'E518:')
11916a818cSBram Moolenaar
12e74331dbSBram Moolenaar  " Missing end colon (ignored).
13e74331dbSBram Moolenaar  call writefile(['// vim: set ts=2'], 'Xmodeline')
14e74331dbSBram Moolenaar  edit Xmodeline_version
15e74331dbSBram Moolenaar  call assert_equal(8, &ts)
16e74331dbSBram Moolenaar  bwipe!
17e74331dbSBram Moolenaar
18e74331dbSBram Moolenaar  " Missing colon at beginning (ignored).
19e74331dbSBram Moolenaar  call writefile(['// vim set ts=2:'], 'Xmodeline')
20e74331dbSBram Moolenaar  edit Xmodeline_version
21e74331dbSBram Moolenaar  call assert_equal(8, &ts)
22e74331dbSBram Moolenaar  bwipe!
23e74331dbSBram Moolenaar
24e74331dbSBram Moolenaar  " Missing space after vim (ignored).
25e74331dbSBram Moolenaar  call writefile(['// vim:ts=2:'], 'Xmodeline')
26e74331dbSBram Moolenaar  edit Xmodeline_version
27e74331dbSBram Moolenaar  call assert_equal(8, &ts)
28e74331dbSBram Moolenaar  bwipe!
29e74331dbSBram Moolenaar
309691f82fSBram Moolenaar  let &modeline = modeline
319cf4b500SBram Moolenaar  bwipe!
327624af02SBram Moolenaar  call delete('Xmodeline')
339cf4b500SBram Moolenaarendfunc
34916a818cSBram Moolenaar
35916a818cSBram Moolenaarfunc Test_modeline_filetype()
36916a818cSBram Moolenaar  call writefile(['vim: set ft=c :', 'nothing'], 'Xmodeline_filetype')
37916a818cSBram Moolenaar  let modeline = &modeline
38916a818cSBram Moolenaar  set modeline
39916a818cSBram Moolenaar  filetype plugin on
40916a818cSBram Moolenaar  split Xmodeline_filetype
41916a818cSBram Moolenaar  call assert_equal("c", &filetype)
42916a818cSBram Moolenaar  call assert_equal(1, b:did_ftplugin)
43916a818cSBram Moolenaar  call assert_equal("ccomplete#Complete", &ofu)
44916a818cSBram Moolenaar
45916a818cSBram Moolenaar  bwipe!
46916a818cSBram Moolenaar  call delete('Xmodeline_filetype')
47916a818cSBram Moolenaar  let &modeline = modeline
48916a818cSBram Moolenaar  filetype plugin off
49916a818cSBram Moolenaarendfunc
50916a818cSBram Moolenaar
51916a818cSBram Moolenaarfunc Test_modeline_syntax()
52916a818cSBram Moolenaar  call writefile(['vim: set syn=c :', 'nothing'], 'Xmodeline_syntax')
53916a818cSBram Moolenaar  let modeline = &modeline
54916a818cSBram Moolenaar  set modeline
55916a818cSBram Moolenaar  syntax enable
56916a818cSBram Moolenaar  split Xmodeline_syntax
57916a818cSBram Moolenaar  call assert_equal("c", &syntax)
58916a818cSBram Moolenaar  call assert_equal("c", b:current_syntax)
59916a818cSBram Moolenaar
60916a818cSBram Moolenaar  bwipe!
61916a818cSBram Moolenaar  call delete('Xmodeline_syntax')
62916a818cSBram Moolenaar  let &modeline = modeline
63916a818cSBram Moolenaar  syntax off
64916a818cSBram Moolenaarendfunc
65916a818cSBram Moolenaar
66916a818cSBram Moolenaarfunc Test_modeline_keymap()
676d91bcb4SBram Moolenaar  CheckFeature keymap
68916a818cSBram Moolenaar  call writefile(['vim: set keymap=greek :', 'nothing'], 'Xmodeline_keymap')
69916a818cSBram Moolenaar  let modeline = &modeline
70916a818cSBram Moolenaar  set modeline
71916a818cSBram Moolenaar  split Xmodeline_keymap
72916a818cSBram Moolenaar  call assert_equal("greek", &keymap)
73916a818cSBram Moolenaar  call assert_match('greek\|grk', b:keymap_name)
74916a818cSBram Moolenaar
75916a818cSBram Moolenaar  bwipe!
76916a818cSBram Moolenaar  call delete('Xmodeline_keymap')
77916a818cSBram Moolenaar  let &modeline = modeline
78916a818cSBram Moolenaar  set keymap= iminsert=0 imsearch=-1
79916a818cSBram Moolenaarendfunc
80916a818cSBram Moolenaar
81e74331dbSBram Moolenaarfunc Test_modeline_version()
82e74331dbSBram Moolenaar  let modeline = &modeline
83e74331dbSBram Moolenaar  set modeline
84e74331dbSBram Moolenaar
85e74331dbSBram Moolenaar  " Test with vim:{vers}: (version {vers} or later).
86e74331dbSBram Moolenaar  call writefile(['// vim' .. v:version .. ': ts=2:'], 'Xmodeline_version')
87e74331dbSBram Moolenaar  edit Xmodeline_version
88e74331dbSBram Moolenaar  call assert_equal(2, &ts)
89e74331dbSBram Moolenaar  bwipe!
90e74331dbSBram Moolenaar
91e74331dbSBram Moolenaar  call writefile(['// vim' .. (v:version - 100) .. ': ts=2:'], 'Xmodeline_version')
92e74331dbSBram Moolenaar  edit Xmodeline_version
93e74331dbSBram Moolenaar  call assert_equal(2, &ts)
94e74331dbSBram Moolenaar  bwipe!
95e74331dbSBram Moolenaar
96e74331dbSBram Moolenaar  call writefile(['// vim' .. (v:version + 100) .. ': ts=2:'], 'Xmodeline_version')
97e74331dbSBram Moolenaar  edit Xmodeline_version
98e74331dbSBram Moolenaar  call assert_equal(8, &ts)
99e74331dbSBram Moolenaar  bw!
100e74331dbSBram Moolenaar
101e74331dbSBram Moolenaar  " Test with vim>{vers}: (version after {vers}).
102e74331dbSBram Moolenaar  call writefile(['// vim>' .. v:version .. ': ts=2:'], 'Xmodeline_version')
103e74331dbSBram Moolenaar  edit Xmodeline_version
104e74331dbSBram Moolenaar  call assert_equal(8, &ts)
105e74331dbSBram Moolenaar  bwipe!
106e74331dbSBram Moolenaar
107e74331dbSBram Moolenaar  call writefile(['// vim>' .. (v:version - 100) .. ': ts=2:'], 'Xmodeline_version')
108e74331dbSBram Moolenaar  edit Xmodeline_version
109e74331dbSBram Moolenaar  call assert_equal(2, &ts)
110e74331dbSBram Moolenaar  bwipe!
111e74331dbSBram Moolenaar
112e74331dbSBram Moolenaar  call writefile(['// vim>' .. (v:version + 100) .. ': ts=2:'], 'Xmodeline_version')
113e74331dbSBram Moolenaar  edit Xmodeline_version
114e74331dbSBram Moolenaar  call assert_equal(8, &ts)
115e74331dbSBram Moolenaar  bwipe!
116e74331dbSBram Moolenaar
117e74331dbSBram Moolenaar  " Test with vim<{vers}: (version before {vers}).
118e74331dbSBram Moolenaar  call writefile(['// vim<' .. v:version .. ': ts=2:'], 'Xmodeline_version')
119e74331dbSBram Moolenaar  edit Xmodeline_version
120e74331dbSBram Moolenaar  call assert_equal(8, &ts)
121e74331dbSBram Moolenaar  bwipe!
122e74331dbSBram Moolenaar
123e74331dbSBram Moolenaar  call writefile(['// vim<' .. (v:version - 100) .. ': ts=2:'], 'Xmodeline_version')
124e74331dbSBram Moolenaar  edit Xmodeline_version
125e74331dbSBram Moolenaar  call assert_equal(8, &ts)
126e74331dbSBram Moolenaar  bwipe!
127e74331dbSBram Moolenaar
128e74331dbSBram Moolenaar  call writefile(['// vim<' .. (v:version + 100) .. ': ts=2:'], 'Xmodeline_version')
129e74331dbSBram Moolenaar  edit Xmodeline_version
130e74331dbSBram Moolenaar  call assert_equal(2, &ts)
131e74331dbSBram Moolenaar  bwipe!
132e74331dbSBram Moolenaar
133e74331dbSBram Moolenaar  " Test with vim={vers}: (version {vers} only).
134e74331dbSBram Moolenaar  call writefile(['// vim=' .. v:version .. ': ts=2:'], 'Xmodeline_version')
135e74331dbSBram Moolenaar  edit Xmodeline_version
136e74331dbSBram Moolenaar  call assert_equal(2, &ts)
137e74331dbSBram Moolenaar  bwipe!
138e74331dbSBram Moolenaar
139e74331dbSBram Moolenaar  call writefile(['// vim=' .. (v:version - 100) .. ': ts=2:'], 'Xmodeline_version')
140e74331dbSBram Moolenaar  edit Xmodeline_version
141e74331dbSBram Moolenaar  call assert_equal(8, &ts)
142e74331dbSBram Moolenaar  bwipe!
143e74331dbSBram Moolenaar
144e74331dbSBram Moolenaar  call writefile(['// vim=' .. (v:version + 100) .. ': ts=2:'], 'Xmodeline_version')
145e74331dbSBram Moolenaar  edit Xmodeline_version
146e74331dbSBram Moolenaar  call assert_equal(8, &ts)
147e74331dbSBram Moolenaar  bwipe!
148e74331dbSBram Moolenaar
149e74331dbSBram Moolenaar  let &modeline = modeline
150e74331dbSBram Moolenaar  call delete('Xmodeline_version')
151e74331dbSBram Moolenaarendfunc
152e74331dbSBram Moolenaar
153e74331dbSBram Moolenaarfunc Test_modeline_colon()
154e74331dbSBram Moolenaar  let modeline = &modeline
155e74331dbSBram Moolenaar  set modeline
156e74331dbSBram Moolenaar
157e74331dbSBram Moolenaar  call writefile(['// vim: set showbreak=\: ts=2: sw=2'], 'Xmodeline_colon')
158e74331dbSBram Moolenaar  edit Xmodeline_colon
159e74331dbSBram Moolenaar
160e74331dbSBram Moolenaar  " backlash colon should become colon.
161e74331dbSBram Moolenaar  call assert_equal(':', &showbreak)
162e74331dbSBram Moolenaar
163e74331dbSBram Moolenaar  " 'ts' should be set.
164e74331dbSBram Moolenaar  " 'sw' should be ignored because it is after the end colon.
165e74331dbSBram Moolenaar  call assert_equal(2, &ts)
166e74331dbSBram Moolenaar  call assert_equal(8, &sw)
167e74331dbSBram Moolenaar
168e74331dbSBram Moolenaar  let &modeline = modeline
169e74331dbSBram Moolenaar  call delete('Xmodeline_colon')
170e74331dbSBram Moolenaarendfunc
171e74331dbSBram Moolenaar
172110289e7SBram Moolenaarfunc s:modeline_fails(what, text, error)
1736d91bcb4SBram Moolenaar  call CheckOption(a:what)
174916a818cSBram Moolenaar  let fname = "Xmodeline_fails_" . a:what
175916a818cSBram Moolenaar  call writefile(['vim: set ' . a:text . ' :', 'nothing'], fname)
176916a818cSBram Moolenaar  let modeline = &modeline
177916a818cSBram Moolenaar  set modeline
178916a818cSBram Moolenaar  filetype plugin on
179916a818cSBram Moolenaar  syntax enable
180110289e7SBram Moolenaar  call assert_fails('split ' . fname, a:error)
181916a818cSBram Moolenaar  call assert_equal("", &filetype)
182916a818cSBram Moolenaar  call assert_equal("", &syntax)
183916a818cSBram Moolenaar
184916a818cSBram Moolenaar  bwipe!
185916a818cSBram Moolenaar  call delete(fname)
186916a818cSBram Moolenaar  let &modeline = modeline
187916a818cSBram Moolenaar  filetype plugin off
188916a818cSBram Moolenaar  syntax off
189916a818cSBram Moolenaarendfunc
190916a818cSBram Moolenaar
191916a818cSBram Moolenaarfunc Test_modeline_filetype_fails()
192110289e7SBram Moolenaar  call s:modeline_fails('filetype', 'ft=evil$CMD', 'E474:')
193916a818cSBram Moolenaarendfunc
194916a818cSBram Moolenaar
195916a818cSBram Moolenaarfunc Test_modeline_syntax_fails()
196110289e7SBram Moolenaar  call s:modeline_fails('syntax', 'syn=evil$CMD', 'E474:')
197916a818cSBram Moolenaarendfunc
198916a818cSBram Moolenaar
199916a818cSBram Moolenaarfunc Test_modeline_keymap_fails()
200110289e7SBram Moolenaar  call s:modeline_fails('keymap', 'keymap=evil$CMD', 'E474:')
201110289e7SBram Moolenaarendfunc
202110289e7SBram Moolenaar
203110289e7SBram Moolenaarfunc Test_modeline_fails_always()
204110289e7SBram Moolenaar  call s:modeline_fails('backupdir', 'backupdir=Something()', 'E520:')
205110289e7SBram Moolenaar  call s:modeline_fails('cdpath', 'cdpath=Something()', 'E520:')
206110289e7SBram Moolenaar  call s:modeline_fails('charconvert', 'charconvert=Something()', 'E520:')
207110289e7SBram Moolenaar  call s:modeline_fails('completefunc', 'completefunc=Something()', 'E520:')
208110289e7SBram Moolenaar  call s:modeline_fails('cscopeprg', 'cscopeprg=Something()', 'E520:')
209110289e7SBram Moolenaar  call s:modeline_fails('diffexpr', 'diffexpr=Something()', 'E520:')
210110289e7SBram Moolenaar  call s:modeline_fails('directory', 'directory=Something()', 'E520:')
211110289e7SBram Moolenaar  call s:modeline_fails('equalprg', 'equalprg=Something()', 'E520:')
212110289e7SBram Moolenaar  call s:modeline_fails('errorfile', 'errorfile=Something()', 'E520:')
213110289e7SBram Moolenaar  call s:modeline_fails('exrc', 'exrc=Something()', 'E520:')
214110289e7SBram Moolenaar  call s:modeline_fails('formatprg', 'formatprg=Something()', 'E520:')
215110289e7SBram Moolenaar  call s:modeline_fails('fsync', 'fsync=Something()', 'E520:')
216110289e7SBram Moolenaar  call s:modeline_fails('grepprg', 'grepprg=Something()', 'E520:')
217110289e7SBram Moolenaar  call s:modeline_fails('helpfile', 'helpfile=Something()', 'E520:')
218110289e7SBram Moolenaar  call s:modeline_fails('imactivatefunc', 'imactivatefunc=Something()', 'E520:')
219110289e7SBram Moolenaar  call s:modeline_fails('imstatusfunc', 'imstatusfunc=Something()', 'E520:')
220110289e7SBram Moolenaar  call s:modeline_fails('imstyle', 'imstyle=Something()', 'E520:')
221110289e7SBram Moolenaar  call s:modeline_fails('keywordprg', 'keywordprg=Something()', 'E520:')
222110289e7SBram Moolenaar  call s:modeline_fails('langmap', 'langmap=Something()', 'E520:')
223110289e7SBram Moolenaar  call s:modeline_fails('luadll', 'luadll=Something()', 'E520:')
224110289e7SBram Moolenaar  call s:modeline_fails('makeef', 'makeef=Something()', 'E520:')
225110289e7SBram Moolenaar  call s:modeline_fails('makeprg', 'makeprg=Something()', 'E520:')
22607607395SBram Moolenaar  call s:modeline_fails('mkspellmem', 'mkspellmem=Something()', 'E520:')
227110289e7SBram Moolenaar  call s:modeline_fails('mzschemedll', 'mzschemedll=Something()', 'E520:')
228110289e7SBram Moolenaar  call s:modeline_fails('mzschemegcdll', 'mzschemegcdll=Something()', 'E520:')
2297e800c60SBram Moolenaar  call s:modeline_fails('modelineexpr', 'modelineexpr', 'E520:')
230110289e7SBram Moolenaar  call s:modeline_fails('omnifunc', 'omnifunc=Something()', 'E520:')
231110289e7SBram Moolenaar  call s:modeline_fails('operatorfunc', 'operatorfunc=Something()', 'E520:')
232110289e7SBram Moolenaar  call s:modeline_fails('perldll', 'perldll=Something()', 'E520:')
233110289e7SBram Moolenaar  call s:modeline_fails('printdevice', 'printdevice=Something()', 'E520:')
234110289e7SBram Moolenaar  call s:modeline_fails('patchexpr', 'patchexpr=Something()', 'E520:')
235110289e7SBram Moolenaar  call s:modeline_fails('printexpr', 'printexpr=Something()', 'E520:')
236110289e7SBram Moolenaar  call s:modeline_fails('pythondll', 'pythondll=Something()', 'E520:')
237e09244eeSBram Moolenaar  call s:modeline_fails('pythonhome', 'pythonhome=Something()', 'E520:')
238110289e7SBram Moolenaar  call s:modeline_fails('pythonthreedll', 'pythonthreedll=Something()', 'E520:')
239110289e7SBram Moolenaar  call s:modeline_fails('pythonthreehome', 'pythonthreehome=Something()', 'E520:')
240110289e7SBram Moolenaar  call s:modeline_fails('pyxversion', 'pyxversion=Something()', 'E520:')
241110289e7SBram Moolenaar  call s:modeline_fails('rubydll', 'rubydll=Something()', 'E520:')
242110289e7SBram Moolenaar  call s:modeline_fails('runtimepath', 'runtimepath=Something()', 'E520:')
243110289e7SBram Moolenaar  call s:modeline_fails('secure', 'secure=Something()', 'E520:')
244110289e7SBram Moolenaar  call s:modeline_fails('shell', 'shell=Something()', 'E520:')
245110289e7SBram Moolenaar  call s:modeline_fails('shellcmdflag', 'shellcmdflag=Something()', 'E520:')
246110289e7SBram Moolenaar  call s:modeline_fails('shellpipe', 'shellpipe=Something()', 'E520:')
247110289e7SBram Moolenaar  call s:modeline_fails('shellquote', 'shellquote=Something()', 'E520:')
248110289e7SBram Moolenaar  call s:modeline_fails('shellredir', 'shellredir=Something()', 'E520:')
249110289e7SBram Moolenaar  call s:modeline_fails('shellxquote', 'shellxquote=Something()', 'E520:')
250110289e7SBram Moolenaar  call s:modeline_fails('spellfile', 'spellfile=Something()', 'E520:')
251110289e7SBram Moolenaar  call s:modeline_fails('spellsuggest', 'spellsuggest=Something()', 'E520:')
252110289e7SBram Moolenaar  call s:modeline_fails('tcldll', 'tcldll=Something()', 'E520:')
253110289e7SBram Moolenaar  call s:modeline_fails('titleold', 'titleold=Something()', 'E520:')
254110289e7SBram Moolenaar  call s:modeline_fails('viewdir', 'viewdir=Something()', 'E520:')
255110289e7SBram Moolenaar  call s:modeline_fails('viminfo', 'viminfo=Something()', 'E520:')
256110289e7SBram Moolenaar  call s:modeline_fails('viminfofile', 'viminfofile=Something()', 'E520:')
257110289e7SBram Moolenaar  call s:modeline_fails('winptydll', 'winptydll=Something()', 'E520:')
258110289e7SBram Moolenaar  call s:modeline_fails('undodir', 'undodir=Something()', 'E520:')
259110289e7SBram Moolenaar  " only check a few terminal options
260110289e7SBram Moolenaar  call s:modeline_fails('t_AB', 't_AB=Something()', 'E520:')
261110289e7SBram Moolenaar  call s:modeline_fails('t_ce', 't_ce=Something()', 'E520:')
262110289e7SBram Moolenaar  call s:modeline_fails('t_sr', 't_sr=Something()', 'E520:')
263110289e7SBram Moolenaar  call s:modeline_fails('t_8b', 't_8b=Something()', 'E520:')
264110289e7SBram Moolenaarendfunc
265110289e7SBram Moolenaar
266110289e7SBram Moolenaarfunc Test_modeline_fails_modelineexpr()
267110289e7SBram Moolenaar  call s:modeline_fails('balloonexpr', 'balloonexpr=Something()', 'E992:')
268110289e7SBram Moolenaar  call s:modeline_fails('foldexpr', 'foldexpr=Something()', 'E992:')
269110289e7SBram Moolenaar  call s:modeline_fails('foldtext', 'foldtext=Something()', 'E992:')
270110289e7SBram Moolenaar  call s:modeline_fails('formatexpr', 'formatexpr=Something()', 'E992:')
271110289e7SBram Moolenaar  call s:modeline_fails('guitablabel', 'guitablabel=Something()', 'E992:')
272110289e7SBram Moolenaar  call s:modeline_fails('iconstring', 'iconstring=Something()', 'E992:')
273110289e7SBram Moolenaar  call s:modeline_fails('includeexpr', 'includeexpr=Something()', 'E992:')
274110289e7SBram Moolenaar  call s:modeline_fails('indentexpr', 'indentexpr=Something()', 'E992:')
275110289e7SBram Moolenaar  call s:modeline_fails('rulerformat', 'rulerformat=Something()', 'E992:')
276110289e7SBram Moolenaar  call s:modeline_fails('statusline', 'statusline=Something()', 'E992:')
277110289e7SBram Moolenaar  call s:modeline_fails('tabline', 'tabline=Something()', 'E992:')
278110289e7SBram Moolenaar  call s:modeline_fails('titlestring', 'titlestring=Something()', 'E992:')
279916a818cSBram Moolenaarendfunc
28051258749SBram Moolenaar
28151258749SBram Moolenaarfunc Test_modeline_setoption_verbose()
28251258749SBram Moolenaar  let modeline = &modeline
28351258749SBram Moolenaar  set modeline
28451258749SBram Moolenaar
28551258749SBram Moolenaar  let lines =<< trim END
28651258749SBram Moolenaar  1 vim:ts=2
28751258749SBram Moolenaar  2 two
28851258749SBram Moolenaar  3 three
28951258749SBram Moolenaar  4 four
29051258749SBram Moolenaar  5 five
29151258749SBram Moolenaar  6 six
29251258749SBram Moolenaar  7 seven
29351258749SBram Moolenaar  8 eight
29451258749SBram Moolenaar  END
29551258749SBram Moolenaar  call writefile(lines, 'Xmodeline')
29651258749SBram Moolenaar  edit Xmodeline
29751258749SBram Moolenaar  let info = split(execute('verbose set tabstop?'), "\n")
29851258749SBram Moolenaar  call assert_match('^\s*Last set from modeline line 1$', info[-1])
29951258749SBram Moolenaar  bwipe!
30051258749SBram Moolenaar
30151258749SBram Moolenaar  let lines =<< trim END
30251258749SBram Moolenaar  1 one
30351258749SBram Moolenaar  2 two
30451258749SBram Moolenaar  3 three
30551258749SBram Moolenaar  4 vim:ts=4
30651258749SBram Moolenaar  5 five
30751258749SBram Moolenaar  6 six
30851258749SBram Moolenaar  7 seven
30951258749SBram Moolenaar  8 eight
31051258749SBram Moolenaar  END
31151258749SBram Moolenaar  call writefile(lines, 'Xmodeline')
31251258749SBram Moolenaar  edit Xmodeline
31351258749SBram Moolenaar  let info = split(execute('verbose set tabstop?'), "\n")
31451258749SBram Moolenaar  call assert_match('^\s*Last set from modeline line 4$', info[-1])
31551258749SBram Moolenaar  bwipe!
31651258749SBram Moolenaar
31751258749SBram Moolenaar  let lines =<< trim END
31851258749SBram Moolenaar  1 one
31951258749SBram Moolenaar  2 two
32051258749SBram Moolenaar  3 three
32151258749SBram Moolenaar  4 four
32251258749SBram Moolenaar  5 five
32351258749SBram Moolenaar  6 six
32451258749SBram Moolenaar  7 seven
32551258749SBram Moolenaar  8 vim:ts=8
32651258749SBram Moolenaar  END
32751258749SBram Moolenaar  call writefile(lines, 'Xmodeline')
32851258749SBram Moolenaar  edit Xmodeline
32951258749SBram Moolenaar  let info = split(execute('verbose set tabstop?'), "\n")
33051258749SBram Moolenaar  call assert_match('^\s*Last set from modeline line 8$', info[-1])
33151258749SBram Moolenaar  bwipe!
33251258749SBram Moolenaar
33351258749SBram Moolenaar  let &modeline = modeline
33451258749SBram Moolenaar  call delete('Xmodeline')
33551258749SBram Moolenaarendfunc
3366d91bcb4SBram Moolenaar
3372d6d718dSYegappan Lakshmanan" Test for the 'modeline' default value in compatible and non-compatible modes
3382d6d718dSYegappan Lakshmanan" for root and non-root accounts
3392d6d718dSYegappan Lakshmananfunc Test_modeline_default()
3402d6d718dSYegappan Lakshmanan  set compatible
3412d6d718dSYegappan Lakshmanan  call assert_false(&modeline)
3422d6d718dSYegappan Lakshmanan  set nocompatible
3432d6d718dSYegappan Lakshmanan  call assert_equal(IsRoot() ? 0 : 1, &modeline)
3442d6d718dSYegappan Lakshmanan  set compatible&vi
3452d6d718dSYegappan Lakshmanan  call assert_false(&modeline)
3462d6d718dSYegappan Lakshmanan  set compatible&vim
3472d6d718dSYegappan Lakshmanan  call assert_equal(IsRoot() ? 0 : 1, &modeline)
3482d6d718dSYegappan Lakshmanan  set compatible& modeline&
3492d6d718dSYegappan Lakshmananendfunc
3502d6d718dSYegappan Lakshmanan
3512d6d718dSYegappan Lakshmanan" Some options cannot be set from the modeline when 'diff' option is set
3522d6d718dSYegappan Lakshmananfunc Test_modeline_diff_buffer()
3532d6d718dSYegappan Lakshmanan  call writefile(['vim: diff foldmethod=marker wrap'], 'Xfile')
3542d6d718dSYegappan Lakshmanan  set foldmethod& nowrap
3552d6d718dSYegappan Lakshmanan  new Xfile
3562d6d718dSYegappan Lakshmanan  call assert_equal('manual', &foldmethod)
3572d6d718dSYegappan Lakshmanan  call assert_false(&wrap)
3582d6d718dSYegappan Lakshmanan  set wrap&
3592d6d718dSYegappan Lakshmanan  call delete('Xfile')
3602d6d718dSYegappan Lakshmanan  bw
3612d6d718dSYegappan Lakshmananendfunc
3622d6d718dSYegappan Lakshmanan
363*9dcd349cSHu Jialunfunc Test_modeline_disable()
364*9dcd349cSHu Jialun  set modeline
365*9dcd349cSHu Jialun  call writefile(['vim: sw=2', 'vim: nomodeline', 'vim: sw=3'], 'Xmodeline_disable')
366*9dcd349cSHu Jialun  edit Xmodeline_disable
367*9dcd349cSHu Jialun  call assert_equal(2, &sw)
368*9dcd349cSHu Jialun  call delete('Xmodeline_disable')
369*9dcd349cSHu Jialunendfunc
370*9dcd349cSHu Jialun
3716d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
372