Mercurial > vim
annotate runtime/scripts.vim @ 26668:f2579ccc97db v8.2.3863
patch 8.2.3863: various build flags accidentally enabled
Commit: https://github.com/vim/vim/commit/8d95d7091da08d0a236be4a16616e3dda388e58d
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Dec 20 22:12:53 2021 +0000
patch 8.2.3863: various build flags accidentally enabled
Problem: Various build flags accidentally enabled.
Solution: Revert several lines in Makefile.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 20 Dec 2021 23:15:03 +0100 |
parents | ce3678583211 |
children | 733295e9d755 |
rev | line source |
---|---|
7 | 1 " Vim support file to detect file types in scripts |
2 " | |
3 " Maintainer: Bram Moolenaar <Bram@vim.org> | |
23931 | 4 " Last change: 2021 Jan 22 |
7 | 5 |
6 " This file is called by an autocommand for every file that has just been | |
7 " loaded into a buffer. It checks if the type of file can be recognized by | |
8 " the file contents. The autocommand is in $VIMRUNTIME/filetype.vim. | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
9 " |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
10 " Note that the pattern matches are done with =~# to avoid the value of the |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
11 " 'ignorecase' option making a difference. Where case is to be ignored use |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
12 " =~? instead. Do not use =~ anywhere. |
7 | 13 |
14 | |
15 " Only do the rest when the FileType autocommand has not been triggered yet. | |
16 if did_filetype() | |
17 finish | |
18 endif | |
19 | |
20 " Load the user defined scripts file first | |
21 " Only do this when the FileType autocommand has not been triggered yet | |
279 | 22 if exists("myscriptsfile") && filereadable(expand(myscriptsfile)) |
7 | 23 execute "source " . myscriptsfile |
24 if did_filetype() | |
25 finish | |
26 endif | |
27 endif | |
28 | |
29 " Line continuation is used here, remove 'C' from 'cpoptions' | |
30 let s:cpo_save = &cpo | |
31 set cpo&vim | |
32 | |
33 let s:line1 = getline(1) | |
34 | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
35 if s:line1 =~# "^#!" |
7 | 36 " A script that starts with "#!". |
37 | |
20756
33a14786a0e4
patch 8.2.0930: script filetype detection trips over env -S argument
Bram Moolenaar <Bram@vim.org>
parents:
19646
diff
changeset
|
38 " Check for a line like "#!/usr/bin/env {options} bash". Turn it into |
7 | 39 " "#!/usr/bin/bash" to make matching easier. |
20756
33a14786a0e4
patch 8.2.0930: script filetype detection trips over env -S argument
Bram Moolenaar <Bram@vim.org>
parents:
19646
diff
changeset
|
40 " Recognize only a few {options} that are commonly used. |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
41 if s:line1 =~# '^#!\s*\S*\<env\s' |
7 | 42 let s:line1 = substitute(s:line1, '\S\+=\S\+', '', 'g') |
20756
33a14786a0e4
patch 8.2.0930: script filetype detection trips over env -S argument
Bram Moolenaar <Bram@vim.org>
parents:
19646
diff
changeset
|
43 let s:line1 = substitute(s:line1, '\(-[iS]\|--ignore-environment\|--split-string\)', '', '') |
7 | 44 let s:line1 = substitute(s:line1, '\<env\s\+', '', '') |
45 endif | |
46 | |
47 " Get the program name. | |
48 " Only accept spaces in PC style paths: "#!c:/program files/perl [args]". | |
279 | 49 " If the word env is used, use the first word after the space: |
50 " "#!/usr/bin/env perl [path/args]" | |
7 | 51 " If there is no path use the first word: "#!perl [path/args]". |
52 " Otherwise get the last word after a slash: "#!/usr/bin/perl [path/args]". | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
53 if s:line1 =~# '^#!\s*\a:[/\\]' |
7 | 54 let s:name = substitute(s:line1, '^#!.*[/\\]\(\i\+\).*', '\1', '') |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
55 elseif s:line1 =~# '^#!.*\<env\>' |
279 | 56 let s:name = substitute(s:line1, '^#!.*\<env\>\s\+\(\i\+\).*', '\1', '') |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
57 elseif s:line1 =~# '^#!\s*[^/\\ ]*\>\([^/\\]\|$\)' |
7 | 58 let s:name = substitute(s:line1, '^#!\s*\([^/\\ ]*\>\).*', '\1', '') |
59 else | |
60 let s:name = substitute(s:line1, '^#!\s*\S*[/\\]\(\i\+\).*', '\1', '') | |
61 endif | |
62 | |
923 | 63 " tcl scripts may have #!/bin/sh in the first line and "exec wish" in the |
64 " third line. Suggested by Steven Atkinson. | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
65 if getline(3) =~# '^exec wish' |
923 | 66 let s:name = 'wish' |
67 endif | |
68 | |
22 | 69 " Bourne-like shell scripts: bash bash2 ksh ksh93 sh |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
70 if s:name =~# '^\(bash\d*\|\|ksh\d*\|sh\)\>' |
12816
218102da5226
patch 8.0.1285: occasional crash when using a channel
Christian Brabandt <cb@256bit.org>
parents:
12808
diff
changeset
|
71 call dist#ft#SetFileTypeSH(s:line1) " defined in filetype.vim |
7 | 72 |
73 " csh scripts | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
74 elseif s:name =~# '^csh\>' |
7 | 75 if exists("g:filetype_csh") |
12816
218102da5226
patch 8.0.1285: occasional crash when using a channel
Christian Brabandt <cb@256bit.org>
parents:
12808
diff
changeset
|
76 call dist#ft#SetFileTypeShell(g:filetype_csh) |
7 | 77 else |
12816
218102da5226
patch 8.0.1285: occasional crash when using a channel
Christian Brabandt <cb@256bit.org>
parents:
12808
diff
changeset
|
78 call dist#ft#SetFileTypeShell("csh") |
7 | 79 endif |
80 | |
81 " tcsh scripts | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
82 elseif s:name =~# '^tcsh\>' |
12816
218102da5226
patch 8.0.1285: occasional crash when using a channel
Christian Brabandt <cb@256bit.org>
parents:
12808
diff
changeset
|
83 call dist#ft#SetFileTypeShell("tcsh") |
7 | 84 |
85 " Z shell scripts | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
86 elseif s:name =~# '^zsh\>' |
7 | 87 set ft=zsh |
88 | |
89 " TCL scripts | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
90 elseif s:name =~# '^\(tclsh\|wish\|expectk\|itclsh\|itkwish\)\>' |
7 | 91 set ft=tcl |
92 | |
93 " Expect scripts | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
94 elseif s:name =~# '^expect\>' |
7 | 95 set ft=expect |
96 | |
97 " Gnuplot scripts | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
98 elseif s:name =~# '^gnuplot\>' |
7 | 99 set ft=gnuplot |
100 | |
101 " Makefiles | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
102 elseif s:name =~# 'make\>' |
7 | 103 set ft=make |
104 | |
13125 | 105 " Pike |
106 elseif s:name =~# '^pike\%(\>\|[0-9]\)' | |
107 set ft=pike | |
108 | |
279 | 109 " Lua |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
110 elseif s:name =~# 'lua' |
279 | 111 set ft=lua |
112 | |
7 | 113 " Perl |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
114 elseif s:name =~# 'perl' |
7 | 115 set ft=perl |
116 | |
117 " PHP | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
118 elseif s:name =~# 'php' |
7 | 119 set ft=php |
120 | |
121 " Python | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
122 elseif s:name =~# 'python' |
7 | 123 set ft=python |
124 | |
125 " Groovy | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
126 elseif s:name =~# '^groovy\>' |
7 | 127 set ft=groovy |
128 | |
24500
54b6455e637c
patch 8.2.2790: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
23931
diff
changeset
|
129 " Raku |
54b6455e637c
patch 8.2.2790: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
23931
diff
changeset
|
130 elseif s:name =~# 'raku' |
54b6455e637c
patch 8.2.2790: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
23931
diff
changeset
|
131 set ft=raku |
54b6455e637c
patch 8.2.2790: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
23931
diff
changeset
|
132 |
7 | 133 " Ruby |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
134 elseif s:name =~# 'ruby' |
7 | 135 set ft=ruby |
136 | |
11062 | 137 " JavaScript |
13182
181ddaf5e467
patch 8.0.1465: python2 and python3 detection not tested
Christian Brabandt <cb@256bit.org>
parents:
13166
diff
changeset
|
138 elseif s:name =~# 'node\(js\)\=\>\|js\>' || s:name =~# 'rhino\>' |
11062 | 139 set ft=javascript |
140 | |
7 | 141 " BC calculator |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
142 elseif s:name =~# '^bc\>' |
7 | 143 set ft=bc |
144 | |
145 " sed | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
146 elseif s:name =~# 'sed\>' |
7 | 147 set ft=sed |
148 | |
149 " OCaml-scripts | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
150 elseif s:name =~# 'ocaml' |
7 | 151 set ft=ocaml |
152 | |
21825 | 153 " Awk scripts; also finds "gawk" |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
154 elseif s:name =~# 'awk\>' |
7 | 155 set ft=awk |
156 | |
157 " Website MetaLanguage | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
158 elseif s:name =~# 'wml' |
7 | 159 set ft=wml |
160 | |
161 " Scheme scripts | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
162 elseif s:name =~# 'scheme' |
7 | 163 set ft=scheme |
164 | |
556 | 165 " CFEngine scripts |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
166 elseif s:name =~# 'cfengine' |
556 | 167 set ft=cfengine |
168 | |
4780 | 169 " Erlang scripts |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
170 elseif s:name =~# 'escript' |
4780 | 171 set ft=erlang |
172 | |
11062 | 173 " Haskell |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
174 elseif s:name =~# 'haskell' |
11062 | 175 set ft=haskell |
176 | |
177 " Scala | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
178 elseif s:name =~# 'scala\>' |
11062 | 179 set ft=scala |
180 | |
13166
b009ab2c1a8f
patch 8.0.1457: clojure now supports a shebang line
Christian Brabandt <cb@256bit.org>
parents:
13125
diff
changeset
|
181 " Clojure |
b009ab2c1a8f
patch 8.0.1457: clojure now supports a shebang line
Christian Brabandt <cb@256bit.org>
parents:
13125
diff
changeset
|
182 elseif s:name =~# 'clojure' |
b009ab2c1a8f
patch 8.0.1457: clojure now supports a shebang line
Christian Brabandt <cb@256bit.org>
parents:
13125
diff
changeset
|
183 set ft=clojure |
b009ab2c1a8f
patch 8.0.1457: clojure now supports a shebang line
Christian Brabandt <cb@256bit.org>
parents:
13125
diff
changeset
|
184 |
23584
397f95f103e8
patch 8.2.2334: Pascal-like filetypes not always detected
Bram Moolenaar <Bram@vim.org>
parents:
21825
diff
changeset
|
185 " Free Pascal |
397f95f103e8
patch 8.2.2334: Pascal-like filetypes not always detected
Bram Moolenaar <Bram@vim.org>
parents:
21825
diff
changeset
|
186 elseif s:name =~# 'instantfpc\>' |
397f95f103e8
patch 8.2.2334: Pascal-like filetypes not always detected
Bram Moolenaar <Bram@vim.org>
parents:
21825
diff
changeset
|
187 set ft=pascal |
397f95f103e8
patch 8.2.2334: Pascal-like filetypes not always detected
Bram Moolenaar <Bram@vim.org>
parents:
21825
diff
changeset
|
188 |
23701
c5b5e7520fe2
patch 8.2.2392: fennel filetype not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23584
diff
changeset
|
189 " Fennel |
c5b5e7520fe2
patch 8.2.2392: fennel filetype not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23584
diff
changeset
|
190 elseif s:name =~# 'fennel\>' |
c5b5e7520fe2
patch 8.2.2392: fennel filetype not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23584
diff
changeset
|
191 set ft=fennel |
c5b5e7520fe2
patch 8.2.2392: fennel filetype not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23584
diff
changeset
|
192 |
26135
7922e1972d58
patch 8.2.3600: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
24500
diff
changeset
|
193 " MikroTik RouterOS script |
7922e1972d58
patch 8.2.3600: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
24500
diff
changeset
|
194 elseif s:name =~# 'rsc\>' |
7922e1972d58
patch 8.2.3600: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
24500
diff
changeset
|
195 set ft=routeros |
7922e1972d58
patch 8.2.3600: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
24500
diff
changeset
|
196 |
26141
77ad8ea01c00
patch 8.2.3603: fish filetype not recognized
Bram Moolenaar <Bram@vim.org>
parents:
26135
diff
changeset
|
197 " Fish shell |
77ad8ea01c00
patch 8.2.3603: fish filetype not recognized
Bram Moolenaar <Bram@vim.org>
parents:
26135
diff
changeset
|
198 elseif s:name =~# 'fish\>' |
77ad8ea01c00
patch 8.2.3603: fish filetype not recognized
Bram Moolenaar <Bram@vim.org>
parents:
26135
diff
changeset
|
199 set ft=fish |
77ad8ea01c00
patch 8.2.3603: fish filetype not recognized
Bram Moolenaar <Bram@vim.org>
parents:
26135
diff
changeset
|
200 |
26311
ce3678583211
patch 8.2.3686: filetype detection often mixes up Forth and F#
Bram Moolenaar <Bram@vim.org>
parents:
26141
diff
changeset
|
201 " Gforth |
ce3678583211
patch 8.2.3686: filetype detection often mixes up Forth and F#
Bram Moolenaar <Bram@vim.org>
parents:
26141
diff
changeset
|
202 elseif s:name =~# 'gforth\>' |
ce3678583211
patch 8.2.3686: filetype detection often mixes up Forth and F#
Bram Moolenaar <Bram@vim.org>
parents:
26141
diff
changeset
|
203 set ft=forth |
ce3678583211
patch 8.2.3686: filetype detection often mixes up Forth and F#
Bram Moolenaar <Bram@vim.org>
parents:
26141
diff
changeset
|
204 |
7 | 205 endif |
206 unlet s:name | |
207 | |
208 else | |
209 " File does not start with "#!". | |
210 | |
211 let s:line2 = getline(2) | |
212 let s:line3 = getline(3) | |
213 let s:line4 = getline(4) | |
214 let s:line5 = getline(5) | |
215 | |
216 " Bourne-like shell scripts: sh ksh bash bash2 | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
217 if s:line1 =~# '^:$' |
12816
218102da5226
patch 8.0.1285: occasional crash when using a channel
Christian Brabandt <cb@256bit.org>
parents:
12808
diff
changeset
|
218 call dist#ft#SetFileTypeSH(s:line1) " defined in filetype.vim |
7 | 219 |
17188
93cb37b45636
patch 8.1.1593: filetype not detected for C++ header files without extension
Bram Moolenaar <Bram@vim.org>
parents:
13341
diff
changeset
|
220 " Z shell scripts |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
221 elseif s:line1 =~# '^#compdef\>' || s:line1 =~# '^#autoload\>' || |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
222 \ "\n".s:line1."\n".s:line2."\n".s:line3."\n".s:line4."\n".s:line5 =~# '\n\s*emulate\s\+\%(-[LR]\s\+\)\=[ckz]\=sh\>' |
7 | 223 set ft=zsh |
224 | |
225 " ELM Mail files | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
226 elseif s:line1 =~# '^From \([a-zA-Z][a-zA-Z_0-9\.=-]*\(@[^ ]*\)\=\|-\) .* \(19\|20\)\d\d$' |
7 | 227 set ft=mail |
228 | |
17188
93cb37b45636
patch 8.1.1593: filetype not detected for C++ header files without extension
Bram Moolenaar <Bram@vim.org>
parents:
13341
diff
changeset
|
229 " Mason |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
230 elseif s:line1 =~# '^<[%&].*>' |
7 | 231 set ft=mason |
232 | |
17188
93cb37b45636
patch 8.1.1593: filetype not detected for C++ header files without extension
Bram Moolenaar <Bram@vim.org>
parents:
13341
diff
changeset
|
233 " Vim scripts (must have '" vim' as the first line to trigger this) |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
234 elseif s:line1 =~# '^" *[vV]im$' |
7 | 235 set ft=vim |
236 | |
17188
93cb37b45636
patch 8.1.1593: filetype not detected for C++ header files without extension
Bram Moolenaar <Bram@vim.org>
parents:
13341
diff
changeset
|
237 " libcxx and libstdc++ standard library headers like "iostream" do not have |
93cb37b45636
patch 8.1.1593: filetype not detected for C++ header files without extension
Bram Moolenaar <Bram@vim.org>
parents:
13341
diff
changeset
|
238 " an extension, recognize the Emacs file mode. |
93cb37b45636
patch 8.1.1593: filetype not detected for C++ header files without extension
Bram Moolenaar <Bram@vim.org>
parents:
13341
diff
changeset
|
239 elseif s:line1 =~? '-\*-.*C++.*-\*-' |
93cb37b45636
patch 8.1.1593: filetype not detected for C++ header files without extension
Bram Moolenaar <Bram@vim.org>
parents:
13341
diff
changeset
|
240 set ft=cpp |
93cb37b45636
patch 8.1.1593: filetype not detected for C++ header files without extension
Bram Moolenaar <Bram@vim.org>
parents:
13341
diff
changeset
|
241 |
93cb37b45636
patch 8.1.1593: filetype not detected for C++ header files without extension
Bram Moolenaar <Bram@vim.org>
parents:
13341
diff
changeset
|
242 " MOO |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
243 elseif s:line1 =~# '^\*\* LambdaMOO Database, Format Version \%([1-3]\>\)\@!\d\+ \*\*$' |
7 | 244 set ft=moo |
245 | |
246 " Diff file: | |
247 " - "diff" in first line (context diff) | |
248 " - "Only in " in first line | |
249 " - "--- " in first line and "+++ " in second line (unified diff). | |
250 " - "*** " in first line and "--- " in second line (context diff). | |
251 " - "# It was generated by makepatch " in the second line (makepatch diff). | |
252 " - "Index: <filename>" in the first line (CVS file) | |
809 | 253 " - "=== ", line of "=", "---", "+++ " (SVK diff) |
816 | 254 " - "=== ", "--- ", "+++ " (bzr diff, common case) |
255 " - "=== (removed|added|renamed|modified)" (bzr diff, alternative) | |
3830 | 256 " - "# HG changeset patch" in first line (Mercurial export format) |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
257 elseif s:line1 =~# '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\|# HG changeset patch\)' |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
258 \ || (s:line1 =~# '^--- ' && s:line2 =~# '^+++ ') |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
259 \ || (s:line1 =~# '^\* looking for ' && s:line2 =~# '^\* comparing to ') |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
260 \ || (s:line1 =~# '^\*\*\* ' && s:line2 =~# '^--- ') |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
261 \ || (s:line1 =~# '^=== ' && ((s:line2 =~# '^=\{66\}' && s:line3 =~# '^--- ' && s:line4 =~# '^+++') || (s:line2 =~# '^--- ' && s:line3 =~# '^+++ '))) |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
262 \ || (s:line1 =~# '^=== \(removed\|added\|renamed\|modified\)') |
7 | 263 set ft=diff |
264 | |
265 " PostScript Files (must have %!PS as the first line, like a2ps output) | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
266 elseif s:line1 =~# '^%![ \t]*PS' |
7 | 267 set ft=postscr |
268 | |
269 " M4 scripts: Guess there is a line that starts with "dnl". | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
270 elseif s:line1 =~# '^\s*dnl\>' |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
271 \ || s:line2 =~# '^\s*dnl\>' |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
272 \ || s:line3 =~# '^\s*dnl\>' |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
273 \ || s:line4 =~# '^\s*dnl\>' |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
274 \ || s:line5 =~# '^\s*dnl\>' |
7 | 275 set ft=m4 |
276 | |
277 " AmigaDos scripts | |
278 elseif $TERM == "amiga" | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
279 \ && (s:line1 =~# "^;" || s:line1 =~? '^\.bra') |
7 | 280 set ft=amiga |
281 | |
282 " SiCAD scripts (must have procn or procd as the first line to trigger this) | |
283 elseif s:line1 =~? '^ *proc[nd] *$' | |
284 set ft=sicad | |
285 | |
286 " Purify log files start with "**** Purify" | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
287 elseif s:line1 =~# '^\*\*\*\* Purify' |
7 | 288 set ft=purifylog |
289 | |
290 " XML | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
291 elseif s:line1 =~# '<?\s*xml.*?>' |
7 | 292 set ft=xml |
293 | |
294 " XHTML (e.g.: PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN") | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
295 elseif s:line1 =~# '\<DTD\s\+XHTML\s' |
7 | 296 set ft=xhtml |
297 | |
1708 | 298 " HTML (e.g.: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN") |
9116
bc38030aec7d
commit https://github.com/vim/vim/commit/26852128a2b713ef49341a0c18daba928444e7eb
Christian Brabandt <cb@256bit.org>
parents:
6180
diff
changeset
|
299 " Avoid "doctype html", used by slim. |
bc38030aec7d
commit https://github.com/vim/vim/commit/26852128a2b713ef49341a0c18daba928444e7eb
Christian Brabandt <cb@256bit.org>
parents:
6180
diff
changeset
|
300 elseif s:line1 =~? '<!DOCTYPE\s\+html\>' |
1708 | 301 set ft=html |
302 | |
1648 | 303 " PDF |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
304 elseif s:line1 =~# '^%PDF-' |
1648 | 305 set ft=pdf |
306 | |
7 | 307 " XXD output |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
308 elseif s:line1 =~# '^\x\{7}: \x\{2} \=\x\{2} \=\x\{2} \=\x\{2} ' |
7 | 309 set ft=xxd |
310 | |
311 " RCS/CVS log output | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
312 elseif s:line1 =~# '^RCS file:' || s:line2 =~# '^RCS file:' |
7 | 313 set ft=rcslog |
314 | |
315 " CVS commit | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
316 elseif s:line2 =~# '^CVS:' || getline("$") =~# '^CVS: ' |
7 | 317 set ft=cvs |
318 | |
179 | 319 " Prescribe |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
320 elseif s:line1 =~# '^!R!' |
179 | 321 set ft=prescribe |
322 | |
7 | 323 " Send-pr |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
324 elseif s:line1 =~# '^SEND-PR:' |
7 | 325 set ft=sendpr |
326 | |
327 " SNNS files | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
328 elseif s:line1 =~# '^SNNS network definition file' |
7 | 329 set ft=snnsnet |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
330 elseif s:line1 =~# '^SNNS pattern definition file' |
7 | 331 set ft=snnspat |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
332 elseif s:line1 =~# '^SNNS result file' |
7 | 333 set ft=snnsres |
334 | |
335 " Virata | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
336 elseif s:line1 =~# '^%.\{-}[Vv]irata' |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
337 \ || s:line2 =~# '^%.\{-}[Vv]irata' |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
338 \ || s:line3 =~# '^%.\{-}[Vv]irata' |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
339 \ || s:line4 =~# '^%.\{-}[Vv]irata' |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
340 \ || s:line5 =~# '^%.\{-}[Vv]irata' |
7 | 341 set ft=virata |
342 | |
343 " Strace | |
12254 | 344 elseif s:line1 =~# '[0-9:.]* *execve(' || s:line1 =~# '^__libc_start_main' |
7 | 345 set ft=strace |
346 | |
347 " VSE JCL | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
348 elseif s:line1 =~# '^\* $$ JOB\>' || s:line1 =~# '^// *JOB\>' |
7 | 349 set ft=vsejcl |
350 | |
351 " TAK and SINDA | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
352 elseif s:line4 =~# 'K & K Associates' || s:line2 =~# 'TAK 2000' |
7 | 353 set ft=takout |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
354 elseif s:line3 =~# 'S Y S T E M S I M P R O V E D ' |
7 | 355 set ft=sindaout |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
356 elseif getline(6) =~# 'Run Date: ' |
7 | 357 set ft=takcmp |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
358 elseif getline(9) =~# 'Node File 1' |
7 | 359 set ft=sindacmp |
360 | |
361 " DNS zone files | |
12756
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
12254
diff
changeset
|
362 elseif s:line1.s:line2.s:line3.s:line4 =~# '^; <<>> DiG [0-9.]\+.* <<>>\|$ORIGIN\|$TTL\|IN\s\+SOA' |
807 | 363 set ft=bindzone |
7 | 364 |
365 " BAAN | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
366 elseif s:line1 =~# '|\*\{1,80}' && s:line2 =~# 'VRC ' |
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
367 \ || s:line2 =~# '|\*\{1,80}' && s:line3 =~# 'VRC ' |
7 | 368 set ft=baan |
369 | |
370 " Valgrind | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
371 elseif s:line1 =~# '^==\d\+== valgrind' || s:line3 =~# '^==\d\+== Using valgrind' |
7 | 372 set ft=valgrind |
373 | |
6180 | 374 " Go docs |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
375 elseif s:line1 =~# '^PACKAGE DOCUMENTATION$' |
6180 | 376 set ft=godoc |
377 | |
7 | 378 " Renderman Interface Bytestream |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
379 elseif s:line1 =~# '^##RenderMan' |
7 | 380 set ft=rib |
381 | |
382 " Scheme scripts | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
383 elseif s:line1 =~# 'exec\s\+\S*scheme' || s:line2 =~# 'exec\s\+\S*scheme' |
7 | 384 set ft=scheme |
385 | |
1648 | 386 " Git output |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
387 elseif s:line1 =~# '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' |
1648 | 388 set ft=git |
389 | |
4681
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
3830
diff
changeset
|
390 " Gprof (gnu profiler) |
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
3830
diff
changeset
|
391 elseif s:line1 == 'Flat profile:' |
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
3830
diff
changeset
|
392 \ && s:line2 == '' |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
393 \ && s:line3 =~# '^Each sample counts as .* seconds.$' |
4681
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
3830
diff
changeset
|
394 set ft=gprof |
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
3830
diff
changeset
|
395 |
4780 | 396 " Erlang terms |
397 " (See also: http://www.gnu.org/software/emacs/manual/html_node/emacs/Choosing-Modes.html#Choosing-Modes) | |
398 elseif s:line1 =~? '-\*-.*erlang.*-\*-' | |
399 set ft=erlang | |
400 | |
19607
d24e6844aabd
patch 8.2.0360: yaml files are only recognized by the file extension
Bram Moolenaar <Bram@vim.org>
parents:
17261
diff
changeset
|
401 " YAML |
d24e6844aabd
patch 8.2.0360: yaml files are only recognized by the file extension
Bram Moolenaar <Bram@vim.org>
parents:
17261
diff
changeset
|
402 elseif s:line1 =~# '^%YAML' |
d24e6844aabd
patch 8.2.0360: yaml files are only recognized by the file extension
Bram Moolenaar <Bram@vim.org>
parents:
17261
diff
changeset
|
403 set ft=yaml |
d24e6844aabd
patch 8.2.0360: yaml files are only recognized by the file extension
Bram Moolenaar <Bram@vim.org>
parents:
17261
diff
changeset
|
404 |
26135
7922e1972d58
patch 8.2.3600: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
24500
diff
changeset
|
405 " MikroTik RouterOS script |
7922e1972d58
patch 8.2.3600: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
24500
diff
changeset
|
406 elseif s:line1 =~# '^#.*by RouterOS.*$' |
7922e1972d58
patch 8.2.3600: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
24500
diff
changeset
|
407 set ft=routeros |
7922e1972d58
patch 8.2.3600: filetype test fails
Bram Moolenaar <Bram@vim.org>
parents:
24500
diff
changeset
|
408 |
7 | 409 " CVS diff |
410 else | |
2034 | 411 let s:lnum = 1 |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
412 while getline(s:lnum) =~# "^? " && s:lnum < line("$") |
2034 | 413 let s:lnum += 1 |
7 | 414 endwhile |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
415 if getline(s:lnum) =~# '^Index:\s\+\f\+$' |
7 | 416 set ft=diff |
417 | |
418 " locale input files: Formal Definitions of Cultural Conventions | |
419 " filename must be like en_US, fr_FR@euro or en_US.UTF-8 | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
420 elseif expand("%") =~# '\a\a_\a\a\($\|[.@]\)\|i18n$\|POSIX$\|translit_' |
2034 | 421 let s:lnum = 1 |
422 while s:lnum < 100 && s:lnum < line("$") | |
11504
a58229e3aff6
patch 8.0.0635: when 'ignorecase' is set script detection is inaccurate
Christian Brabandt <cb@256bit.org>
parents:
11062
diff
changeset
|
423 if getline(s:lnum) =~# '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$' |
7 | 424 setf fdcc |
425 break | |
426 endif | |
2034 | 427 let s:lnum += 1 |
7 | 428 endwhile |
429 endif | |
2034 | 430 unlet s:lnum |
7 | 431 |
432 endif | |
433 | |
434 unlet s:line2 s:line3 s:line4 s:line5 | |
435 | |
436 endif | |
437 | |
438 " Restore 'cpoptions' | |
439 let &cpo = s:cpo_save | |
440 | |
441 unlet s:cpo_save s:line1 |