annotate runtime/indent/testdir/README.txt @ 34194:a522c6c0127b v9.1.0047

patch 9.1.0047: issues with temp curwin/buf while cmdwin is open Commit: https://github.com/vim/vim/commit/988f74311c26ea9917e84fbae608de226dba7e5f Author: Sean Dewar <seandewar@users.noreply.github.com> Date: Wed Aug 16 14:17:36 2023 +0100 patch 9.1.0047: issues with temp curwin/buf while cmdwin is open Problem: Things that temporarily change/restore curwin/buf (e.g: win_execute, some autocmds) may break assumptions that curwin/buf is the cmdwin when "cmdwin_type != 0", causing issues. Solution: Expose the cmdwin's real win/buf and check that instead. Also try to ensure these variables are NULL if "cmdwin_type == 0", allowing them to be used directly in most cases without checking cmdwin_type. (Sean Dewar) Alternatively, we could ban win_execute in the cmdwin and audit all places that temporarily change/restore curwin/buf, but I didn't notice any problems arising from allowing this (standard cmdwin restrictions still apply, so things that may actually break the cmdwin are still forbidden). closes: #12819 Signed-off-by: Sean Dewar <seandewar@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Tue, 23 Jan 2024 23:00:04 +0100
parents bd7461db24b3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14970
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 TESTING INDENT SCRIPTS
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
3 We'll use FILETYPE for the filetype name here.
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
4
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
5
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
6 FORMAT OF THE FILETYPE.IN FILE
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
7
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
8 First of all, create a FILETYPE.in file. It should contain:
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
9
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
10 - A modeline setting the 'filetype' and any other option values.
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
11 This must work like a comment for FILETYPE. E.g. for vim:
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
12 " vim: set ft=vim sw=4 :
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
13
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
14 - At least one block of lines to indent, prefixed with START_INDENT and
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
15 followed by END_INDENT. These lines must also look like a comment for your
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
16 FILETYPE. You would normally leave out all indent, so that the effect of
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
17 the indent command results in adding indent. Example:
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
18
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
19 " START_INDENT
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
20 func Some()
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
21 let x = 1
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
22 endfunc
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
23 " END_INDENT
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24
14999
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
25 If you just want to test normal indenting with default options, you can make
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
26 this a large number of lines. Just add all kinds of language constructs,
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
27 nested statements, etc. with valid syntax.
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
28
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
29 - Optionally, add lines with INDENT_EXE after START_INDENT, followed by a Vim
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
30 command. This will be executed before indenting the lines. Example:
14970
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
31
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
32 " START_INDENT
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
33 " INDENT_EXE let g:vim_indent_cont = 6
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
34 let cmd =
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
35 \ 'some '
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
36 \ 'string'
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
37 " END_INDENT
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
38
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
39 Note that the command is not undone, you may need to reverse the effect for
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
40 the next block of lines.
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
41
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
42 - Alternatively to indenting all the lines between START_INDENT and
14999
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
43 END_INDENT, use an INDENT_AT line, which specifies a pattern to find the
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
44 line to indent. Example:
14970
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
45
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
46 " START_INDENT
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
47 " INDENT_AT this-line
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
48 func Some()
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
49 let f = x " this-line
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
50 endfunc
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
51 " END_INDENT
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
52
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
53 Alternatively you can use INDENT_NEXT to indent the line below the matching
14999
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
54 pattern. Keep in mind that quite often it will indent relative to the
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
55 matching line:
14970
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
56
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
57 " START_INDENT
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
58 " INDENT_NEXT next-line
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
59 func Some()
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
60 " next-line
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
61 let f = x
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
62 endfunc
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
63 " END_INDENT
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
64
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
65 Or use INDENT_PREV to indent the line above the matching pattern:
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
66
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
67 " START_INDENT
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
68 " INDENT_PREV prev-line
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
69 func Some()
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
70 let f = x
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
71 " prev-line
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
72 endfunc
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
73 " END_INDENT
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
74
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
75 It's best to keep the whole file valid for FILETYPE, so that syntax
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
76 highlighting works normally, and any indenting that depends on the syntax
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
77 highlighting also works.
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
78
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
79
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
80 RUNNING THE TEST
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
81
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
82 Before running the test, create a FILETYPE.ok file. You can leave it empty at
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
83 first.
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
84
16086
bd7461db24b3 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 14999
diff changeset
85 Now run "make test" from the parent directory. After Vim has done the
bd7461db24b3 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 14999
diff changeset
86 indenting you will see a FILETYPE.fail file. This contains the actual result
bd7461db24b3 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 14999
diff changeset
87 of indenting, and it's different from the FILETYPE.ok file.
14970
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
88
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
89 Check the contents of the FILETYPE.fail file. If it is perfectly OK, then
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
90 rename it to overwrite the FILETYPE.ok file. If you now run "make test" again,
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
91 the test will pass and create a FILETYPE.out file, which is identical to the
14999
2b30a2b4bde2 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 14970
diff changeset
92 FILETYPE.ok file. The FILETYPE.fail file will be deleted.
14970
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
93
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
94 If you try to run "make test" again you will notice that nothing happens,
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
95 because the FILETYPE.out file already exists. Delete it, or do "make clean",
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
96 so that the text runs again. If you edit the FILETYPE.in file, so that it's
19b757c6c6a7 patch 8.1.0496: no tests for indent files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
97 newer than the FILETYPE.out file, the test will also run.