xref: /vim-8.2.3635/runtime/filetype.vim (revision bd6428b9)
1" Vim support file to detect file types
2"
3" Maintainer:	Bram Moolenaar <[email protected]>
4" Last Change:	2020 Sep 28
5
6" Listen very carefully, I will say this only once
7if exists("did_load_filetypes")
8  finish
9endif
10let did_load_filetypes = 1
11
12" Line continuation is used here, remove 'C' from 'cpoptions'
13let s:cpo_save = &cpo
14set cpo&vim
15
16augroup filetypedetect
17
18" Ignored extensions
19if exists("*fnameescape")
20au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.dpkg-new,?\+.dpkg-bak,?\+.rpmsave,?\+.rpmnew,?\+.pacsave,?\+.pacnew
21	\ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r"))
22au BufNewFile,BufRead *~
23	\ let s:name = expand("<afile>") |
24	\ let s:short = substitute(s:name, '\~$', '', '') |
25	\ if s:name != s:short && s:short != "" |
26	\   exe "doau filetypedetect BufRead " . fnameescape(s:short) |
27	\ endif |
28	\ unlet! s:name s:short
29au BufNewFile,BufRead ?\+.in
30	\ if expand("<afile>:t") != "configure.in" |
31	\   exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r")) |
32	\ endif
33elseif &verbose > 0
34  echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()"
35endif
36
37" Pattern used to match file names which should not be inspected.
38" Currently finds compressed files.
39if !exists("g:ft_ignore_pat")
40  let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
41endif
42
43" Function used for patterns that end in a star: don't set the filetype if the
44" file name matches ft_ignore_pat.
45" When using this, the entry should probably be further down below with the
46" other StarSetf() calls.
47func! s:StarSetf(ft)
48  if expand("<amatch>") !~ g:ft_ignore_pat
49    exe 'setf ' . a:ft
50  endif
51endfunc
52
53" Vim help file
54au BufNewFile,BufRead $VIMRUNTIME/doc/*.txt	setf help
55
56" Abaqus or Trasys
57au BufNewFile,BufRead *.inp			call dist#ft#Check_inp()
58
59" 8th (Firth-derivative)
60au BufNewFile,BufRead *.8th			setf 8th
61
62" A-A-P recipe
63au BufNewFile,BufRead *.aap			setf aap
64
65" A2ps printing utility
66au BufNewFile,BufRead */etc/a2ps.cfg,*/etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps
67
68" ABAB/4
69au BufNewFile,BufRead *.abap			setf abap
70
71" ABC music notation
72au BufNewFile,BufRead *.abc			setf abc
73
74" ABEL
75au BufNewFile,BufRead *.abl			setf abel
76
77" AceDB
78au BufNewFile,BufRead *.wrm			setf acedb
79
80" Ada (83, 9X, 95)
81au BufNewFile,BufRead *.adb,*.ads,*.ada		setf ada
82if has("vms")
83  au BufNewFile,BufRead *.gpr,*.ada_m,*.adc	setf ada
84else
85  au BufNewFile,BufRead *.gpr			setf ada
86endif
87
88" AHDL
89au BufNewFile,BufRead *.tdf			setf ahdl
90
91" AIDL
92au BufNewFile,BufRead *.aidl			setf aidl
93
94" AMPL
95au BufNewFile,BufRead *.run			setf ampl
96
97" Ant
98au BufNewFile,BufRead build.xml			setf ant
99
100" Arduino
101au BufNewFile,BufRead *.ino,*.pde		setf arduino
102
103" Apache config file
104au BufNewFile,BufRead .htaccess,*/etc/httpd/*.conf		setf apache
105au BufNewFile,BufRead */etc/apache2/sites-*/*.com		setf apache
106
107" XA65 MOS6510 cross assembler
108au BufNewFile,BufRead *.a65			setf a65
109
110" Applescript
111au BufNewFile,BufRead *.scpt			setf applescript
112
113" Applix ELF
114au BufNewFile,BufRead *.am
115	\ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif
116
117" ALSA configuration
118au BufNewFile,BufRead .asoundrc,*/usr/share/alsa/alsa.conf,*/etc/asound.conf setf alsaconf
119
120" Arc Macro Language
121au BufNewFile,BufRead *.aml			setf aml
122
123" APT config file
124au BufNewFile,BufRead apt.conf		       setf aptconf
125au BufNewFile,BufRead */.aptitude/config       setf aptconf
126au BufNewFile,BufRead */etc/apt/apt.conf.d/{[-_[:alnum:]]\+,[-_.[:alnum:]]\+.conf} setf aptconf
127
128" Arch Inventory file
129au BufNewFile,BufRead .arch-inventory,=tagging-method	setf arch
130
131" ART*Enterprise (formerly ART-IM)
132au BufNewFile,BufRead *.art			setf art
133
134" AsciiDoc
135au BufNewFile,BufRead *.asciidoc,*.adoc		setf asciidoc
136
137" ASN.1
138au BufNewFile,BufRead *.asn,*.asn1		setf asn
139
140" Active Server Pages (with Visual Basic Script)
141au BufNewFile,BufRead *.asa
142	\ if exists("g:filetype_asa") |
143	\   exe "setf " . g:filetype_asa |
144	\ else |
145	\   setf aspvbs |
146	\ endif
147
148" Active Server Pages (with Perl or Visual Basic Script)
149au BufNewFile,BufRead *.asp
150	\ if exists("g:filetype_asp") |
151	\   exe "setf " . g:filetype_asp |
152	\ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" |
153	\   setf aspperl |
154	\ else |
155	\   setf aspvbs |
156	\ endif
157
158" Grub (must be before catch *.lst)
159au BufNewFile,BufRead */boot/grub/menu.lst,*/boot/grub/grub.conf,*/etc/grub.conf setf grub
160
161" Assembly (all kinds)
162" *.lst is not pure assembly, it has two extra columns (address, byte codes)
163au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst	call dist#ft#FTasm()
164
165" Macro (VAX)
166au BufNewFile,BufRead *.mar			setf vmasm
167
168" Atlas
169au BufNewFile,BufRead *.atl,*.as		setf atlas
170
171" Autoit v3
172au BufNewFile,BufRead *.au3			setf autoit
173
174" Autohotkey
175au BufNewFile,BufRead *.ahk			setf autohotkey
176
177" Automake
178au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am	setf automake
179
180" Autotest .at files are actually m4
181au BufNewFile,BufRead *.at			setf m4
182
183" Avenue
184au BufNewFile,BufRead *.ave			setf ave
185
186" Awk
187au BufNewFile,BufRead *.awk,*.gawk		setf awk
188
189" B
190au BufNewFile,BufRead *.mch,*.ref,*.imp		setf b
191
192" BASIC or Visual Basic
193au BufNewFile,BufRead *.bas			call dist#ft#FTVB("basic")
194
195" Visual Basic Script (close to Visual Basic) or Visual Basic .NET
196au BufNewFile,BufRead *.vb,*.vbs,*.dsm,*.ctl	setf vb
197
198" IBasic file (similar to QBasic)
199au BufNewFile,BufRead *.iba,*.ibi		setf ibasic
200
201" FreeBasic file (similar to QBasic)
202au BufNewFile,BufRead *.fb,*.bi			setf freebasic
203
204" Batch file for MSDOS.
205au BufNewFile,BufRead *.bat,*.sys		setf dosbatch
206" *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd.
207au BufNewFile,BufRead *.cmd
208	\ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif
209
210" Batch file for 4DOS
211au BufNewFile,BufRead *.btm			call dist#ft#FTbtm()
212
213" BC calculator
214au BufNewFile,BufRead *.bc			setf bc
215
216" BDF font
217au BufNewFile,BufRead *.bdf			setf bdf
218
219" BibTeX bibliography database file
220au BufNewFile,BufRead *.bib			setf bib
221
222" BibTeX Bibliography Style
223au BufNewFile,BufRead *.bst			setf bst
224
225" BIND configuration
226" sudoedit uses namedXXXX.conf
227au BufNewFile,BufRead named*.conf,rndc*.conf,rndc*.key	setf named
228
229" BIND zone
230au BufNewFile,BufRead named.root		setf bindzone
231au BufNewFile,BufRead *.db			call dist#ft#BindzoneCheck('')
232
233" Blank
234au BufNewFile,BufRead *.bl			setf blank
235
236" Blkid cache file
237au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old   setf xml
238
239" BSDL
240au BufNewFile,BufRead *bsd,*.bsdl		setf bsdl
241
242" Bazel (http://bazel.io)
243autocmd BufRead,BufNewFile *.bzl,*.bazel,WORKSPACE	setf bzl
244if has("fname_case")
245  " There is another check for BUILD further below.
246  autocmd BufRead,BufNewFile *.BUILD,BUILD		setf bzl
247endif
248
249" C or lpc
250au BufNewFile,BufRead *.c			call dist#ft#FTlpc()
251au BufNewFile,BufRead *.lpc,*.ulpc		setf lpc
252
253" Calendar
254au BufNewFile,BufRead calendar			setf calendar
255
256" C#
257au BufNewFile,BufRead *.cs			setf cs
258
259" CSDL
260au BufNewFile,BufRead *.csdl			setf csdl
261
262" Cabal
263au BufNewFile,BufRead *.cabal			setf cabal
264
265" Cdrdao TOC
266au BufNewFile,BufRead *.toc			setf cdrtoc
267
268" Cdrdao config
269au BufNewFile,BufRead */etc/cdrdao.conf,*/etc/defaults/cdrdao,*/etc/default/cdrdao,.cdrdao	setf cdrdaoconf
270
271" Cfengine
272au BufNewFile,BufRead cfengine.conf		setf cfengine
273
274" ChaiScript
275au BufRead,BufNewFile *.chai			setf chaiscript
276
277" Comshare Dimension Definition Language
278au BufNewFile,BufRead *.cdl			setf cdl
279
280" Conary Recipe
281au BufNewFile,BufRead *.recipe			setf conaryrecipe
282
283" Controllable Regex Mutilator
284au BufNewFile,BufRead *.crm			setf crm
285
286" Cyn++
287au BufNewFile,BufRead *.cyn			setf cynpp
288
289" Cynlib
290" .cc and .cpp files can be C++ or Cynlib.
291au BufNewFile,BufRead *.cc
292	\ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif
293au BufNewFile,BufRead *.cpp
294	\ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif
295
296" C++
297au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp
298if has("fname_case")
299  au BufNewFile,BufRead *.C,*.H setf cpp
300endif
301
302" .h files can be C, Ch C++, ObjC or ObjC++.
303" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is
304" detected automatically.
305au BufNewFile,BufRead *.h			call dist#ft#FTheader()
306
307" Ch (CHscript)
308au BufNewFile,BufRead *.chf			setf ch
309
310" TLH files are C++ headers generated by Visual C++'s #import from typelibs
311au BufNewFile,BufRead *.tlh			setf cpp
312
313" Cascading Style Sheets
314au BufNewFile,BufRead *.css			setf css
315
316" Century Term Command Scripts (*.cmd too)
317au BufNewFile,BufRead *.con			setf cterm
318
319" Changelog
320au BufNewFile,BufRead changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch,*/debian/changelog
321					\	setf debchangelog
322
323au BufNewFile,BufRead [cC]hange[lL]og
324	\  if getline(1) =~ '; urgency='
325	\|   setf debchangelog
326	\| else
327	\|   setf changelog
328	\| endif
329
330au BufNewFile,BufRead NEWS
331	\  if getline(1) =~ '; urgency='
332	\|   setf debchangelog
333	\| endif
334
335" CHILL
336au BufNewFile,BufRead *..ch			setf chill
337
338" Changes for WEB and CWEB or CHILL
339au BufNewFile,BufRead *.ch			call dist#ft#FTchange()
340
341" ChordPro
342au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro	setf chordpro
343
344" Clean
345au BufNewFile,BufRead *.dcl,*.icl		setf clean
346
347" Clever
348au BufNewFile,BufRead *.eni			setf cl
349
350" Clever or dtd
351au BufNewFile,BufRead *.ent			call dist#ft#FTent()
352
353" Clipper (or FoxPro; could also be eviews)
354au BufNewFile,BufRead *.prg
355	\ if exists("g:filetype_prg") |
356	\   exe "setf " . g:filetype_prg |
357	\ else |
358	\   setf clipper |
359	\ endif
360
361" Clojure
362au BufNewFile,BufRead *.clj,*.cljs,*.cljx,*.cljc		setf clojure
363
364" Cmake
365au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in		setf cmake
366
367" Cmusrc
368au BufNewFile,BufRead */.cmus/{autosave,rc,command-history,*.theme} setf cmusrc
369au BufNewFile,BufRead */cmus/{rc,*.theme}			setf cmusrc
370
371" Cobol
372au BufNewFile,BufRead *.cbl,*.cob,*.lib	setf cobol
373"   cobol or zope form controller python script? (heuristic)
374au BufNewFile,BufRead *.cpy
375	\ if getline(1) =~ '^##' |
376	\   setf python |
377	\ else |
378	\   setf cobol |
379	\ endif
380
381" Coco/R
382au BufNewFile,BufRead *.atg			setf coco
383
384" Cold Fusion
385au BufNewFile,BufRead *.cfm,*.cfi,*.cfc		setf cf
386
387" Configure scripts
388au BufNewFile,BufRead configure.in,configure.ac setf config
389
390" CUDA  Cumpute Unified Device Architecture
391au BufNewFile,BufRead *.cu,*.cuh		setf cuda
392
393" Dockerfile; Podman uses the same syntax with name Containerfile
394au BufNewFile,BufRead Containerfile,Dockerfile,*.Dockerfile	setf dockerfile
395
396" WildPackets EtherPeek Decoder
397au BufNewFile,BufRead *.dcd			setf dcd
398
399" Enlightenment configuration files
400au BufNewFile,BufRead *enlightenment/*.cfg	setf c
401
402" Eterm
403au BufNewFile,BufRead *Eterm/*.cfg		setf eterm
404
405" Euphoria 3 or 4
406au BufNewFile,BufRead *.eu,*.ew,*.ex,*.exu,*.exw  call dist#ft#EuphoriaCheck()
407if has("fname_case")
408   au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW  call dist#ft#EuphoriaCheck()
409endif
410
411" Lynx config files
412au BufNewFile,BufRead lynx.cfg			setf lynx
413
414" Quake
415au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg	setf quake
416au BufNewFile,BufRead *quake[1-3]/*.cfg			setf quake
417
418" Quake C
419au BufNewFile,BufRead *.qc			setf c
420
421" Configure files
422au BufNewFile,BufRead *.cfg			setf cfg
423
424" Cucumber
425au BufNewFile,BufRead *.feature			setf cucumber
426
427" Communicating Sequential Processes
428au BufNewFile,BufRead *.csp,*.fdr		setf csp
429
430" CUPL logic description and simulation
431au BufNewFile,BufRead *.pld			setf cupl
432au BufNewFile,BufRead *.si			setf cuplsim
433
434" Dart
435au BufRead,BufNewfile *.dart,*.drt		setf dart
436
437" Debian Control
438au BufNewFile,BufRead */debian/control		setf debcontrol
439au BufNewFile,BufRead control
440	\  if getline(1) =~ '^Source:'
441	\|   setf debcontrol
442	\| endif
443
444" Debian Copyright
445au BufNewFile,BufRead */debian/copyright	setf debcopyright
446au BufNewFile,BufRead copyright
447	\  if getline(1) =~ '^Format:'
448	\|   setf debcopyright
449	\| endif
450
451" Debian Sources.list
452au BufNewFile,BufRead */etc/apt/sources.list		setf debsources
453au BufNewFile,BufRead */etc/apt/sources.list.d/*.list	setf debsources
454
455" Deny hosts
456au BufNewFile,BufRead denyhosts.conf		setf denyhosts
457
458" dnsmasq(8) configuration files
459au BufNewFile,BufRead */etc/dnsmasq.conf	setf dnsmasq
460
461" ROCKLinux package description
462au BufNewFile,BufRead *.desc			setf desc
463
464" the D language or dtrace
465au BufNewFile,BufRead *.d			call dist#ft#DtraceCheck()
466
467" Desktop files
468au BufNewFile,BufRead *.desktop,*.directory	setf desktop
469
470" Dict config
471au BufNewFile,BufRead dict.conf,.dictrc		setf dictconf
472
473" Dictd config
474au BufNewFile,BufRead dictd.conf		setf dictdconf
475
476" Diff files
477au BufNewFile,BufRead *.diff,*.rej		setf diff
478au BufNewFile,BufRead *.patch
479	\ if getline(1) =~ '^From [0-9a-f]\{40\} Mon Sep 17 00:00:00 2001$' |
480	\   setf gitsendemail |
481	\ else |
482	\   setf diff |
483	\ endif
484
485" Dircolors
486au BufNewFile,BufRead .dir_colors,.dircolors,*/etc/DIR_COLORS	setf dircolors
487
488" Diva (with Skill) or InstallShield
489au BufNewFile,BufRead *.rul
490	\ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield' |
491	\   setf ishd |
492	\ else |
493	\   setf diva |
494	\ endif
495
496" DCL (Digital Command Language - vms) or DNS zone file
497au BufNewFile,BufRead *.com			call dist#ft#BindzoneCheck('dcl')
498
499" DOT
500au BufNewFile,BufRead *.dot,*.gv		setf dot
501
502" Dylan - lid files
503au BufNewFile,BufRead *.lid			setf dylanlid
504
505" Dylan - intr files (melange)
506au BufNewFile,BufRead *.intr			setf dylanintr
507
508" Dylan
509au BufNewFile,BufRead *.dylan			setf dylan
510
511" Microsoft Module Definition
512au BufNewFile,BufRead *.def			setf def
513
514" Dracula
515au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe	setf dracula
516
517" Datascript
518au BufNewFile,BufRead *.ds			setf datascript
519
520" dsl
521au BufNewFile,BufRead *.dsl			setf dsl
522
523" DTD (Document Type Definition for XML)
524au BufNewFile,BufRead *.dtd			setf dtd
525
526" DTS/DSTI (device tree files)
527au BufNewFile,BufRead *.dts,*.dtsi		setf dts
528
529" EDIF (*.edf,*.edif,*.edn,*.edo) or edn
530au BufNewFile,BufRead *.ed\(f\|if\|o\)		setf edif
531au BufNewFile,BufRead *.edn
532	\ if getline(1) =~ '^\s*(\s*edif\>' |
533	\   setf edif |
534	\ else |
535	\   setf clojure |
536	\ endif
537
538" EditorConfig (close enough to dosini)
539au BufNewFile,BufRead .editorconfig		setf dosini
540
541" Embedix Component Description
542au BufNewFile,BufRead *.ecd			setf ecd
543
544" Eiffel or Specman or Euphoria
545au BufNewFile,BufRead *.e,*.E			call dist#ft#FTe()
546
547" Elinks configuration
548au BufNewFile,BufRead elinks.conf		setf elinks
549
550" ERicsson LANGuage; Yaws is erlang too
551au BufNewFile,BufRead *.erl,*.hrl,*.yaws	setf erlang
552
553" Elm
554au BufNewFile,BufRead *.elm			setf elm
555
556" Elm Filter Rules file
557au BufNewFile,BufRead filter-rules		setf elmfilt
558
559" ESMTP rc file
560au BufNewFile,BufRead *esmtprc			setf esmtprc
561
562" ESQL-C
563au BufNewFile,BufRead *.ec,*.EC			setf esqlc
564
565" Esterel
566au BufNewFile,BufRead *.strl			setf esterel
567
568" Essbase script
569au BufNewFile,BufRead *.csc			setf csc
570
571" Exim
572au BufNewFile,BufRead exim.conf			setf exim
573
574" Expect
575au BufNewFile,BufRead *.exp			setf expect
576
577" Exports
578au BufNewFile,BufRead exports			setf exports
579
580" Falcon
581au BufNewFile,BufRead *.fal			setf falcon
582
583" Fantom
584au BufNewFile,BufRead *.fan,*.fwt		setf fan
585
586" Factor
587au BufNewFile,BufRead *.factor			setf factor
588
589" Fetchmail RC file
590au BufNewFile,BufRead .fetchmailrc		setf fetchmail
591
592" FlexWiki - disabled, because it has side effects when a .wiki file
593" is not actually FlexWiki
594"au BufNewFile,BufRead *.wiki			setf flexwiki
595
596" Focus Executable
597au BufNewFile,BufRead *.fex,*.focexec		setf focexec
598
599" Focus Master file (but not for auto.master)
600au BufNewFile,BufRead auto.master		setf conf
601au BufNewFile,BufRead *.mas,*.master		setf master
602
603" Forth
604au BufNewFile,BufRead *.fs,*.ft,*.fth		setf forth
605
606" Reva Forth
607au BufNewFile,BufRead *.frt			setf reva
608
609" Fortran
610if has("fname_case")
611  au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95,*.F03,*.F08	 setf fortran
612endif
613au BufNewFile,BufRead   *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08  setf fortran
614
615" Framescript
616au BufNewFile,BufRead *.fsl			setf framescript
617
618" FStab
619au BufNewFile,BufRead fstab,mtab		setf fstab
620
621" GDB command files
622au BufNewFile,BufRead .gdbinit			setf gdb
623
624" GDMO
625au BufNewFile,BufRead *.mo,*.gdmo		setf gdmo
626
627" Gedcom
628au BufNewFile,BufRead *.ged,lltxxxxx.txt	setf gedcom
629
630" Git
631au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG	setf gitcommit
632au BufNewFile,BufRead *.git/config,.gitconfig,/etc/gitconfig	setf gitconfig
633au BufNewFile,BufRead */.config/git/config			setf gitconfig
634au BufNewFile,BufRead .gitmodules,*.git/modules/*/config	setf gitconfig
635if !empty($XDG_CONFIG_HOME)
636  au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config		setf gitconfig
637endif
638au BufNewFile,BufRead git-rebase-todo		setf gitrebase
639au BufRead,BufNewFile .gitsendemail.msg.??????	setf gitsendemail
640au BufNewFile,BufRead .msg.[0-9]*
641      \ if getline(1) =~ '^From.*# This line is ignored.$' |
642      \   setf gitsendemail |
643      \ endif
644au BufNewFile,BufRead *.git/*
645      \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
646      \   setf git |
647      \ endif
648
649" Gkrellmrc
650au BufNewFile,BufRead gkrellmrc,gkrellmrc_?	setf gkrellmrc
651
652" GP scripts (2.0 and onward)
653au BufNewFile,BufRead *.gp,.gprc		setf gp
654
655" GPG
656au BufNewFile,BufRead */.gnupg/options		setf gpg
657au BufNewFile,BufRead */.gnupg/gpg.conf		setf gpg
658au BufNewFile,BufRead */usr/*/gnupg/options.skel setf gpg
659if !empty($GNUPGHOME)
660  au BufNewFile,BufRead $GNUPGHOME/options	setf gpg
661  au BufNewFile,BufRead $GNUPGHOME/gpg.conf	setf gpg
662endif
663
664" gnash(1) configuration files
665au BufNewFile,BufRead gnashrc,.gnashrc,gnashpluginrc,.gnashpluginrc setf gnash
666
667" Gitolite
668au BufNewFile,BufRead gitolite.conf		setf gitolite
669au BufNewFile,BufRead {,.}gitolite.rc,example.gitolite.rc	setf perl
670
671" Gnuplot scripts
672au BufNewFile,BufRead *.gpi			setf gnuplot
673
674" Go (Google)
675au BufNewFile,BufRead *.go			setf go
676
677" GrADS scripts
678au BufNewFile,BufRead *.gs			setf grads
679
680" Gretl
681au BufNewFile,BufRead *.gretl			setf gretl
682
683" Groovy
684au BufNewFile,BufRead *.gradle,*.groovy		setf groovy
685
686" GNU Server Pages
687au BufNewFile,BufRead *.gsp			setf gsp
688
689" Group file
690au BufNewFile,BufRead */etc/group,*/etc/group-,*/etc/group.edit,*/etc/gshadow,*/etc/gshadow-,*/etc/gshadow.edit,*/var/backups/group.bak,*/var/backups/gshadow.bak  setf group
691
692" GTK RC
693au BufNewFile,BufRead .gtkrc,gtkrc		setf gtkrc
694
695" Haml
696au BufNewFile,BufRead *.haml			setf haml
697
698" Hamster Classic | Playground files
699au BufNewFile,BufRead *.hsc,*.hsm		setf hamster
700
701" Haskell
702au BufNewFile,BufRead *.hs,*.hs-boot		setf haskell
703au BufNewFile,BufRead *.lhs			setf lhaskell
704au BufNewFile,BufRead *.chs			setf chaskell
705
706" Haste
707au BufNewFile,BufRead *.ht			setf haste
708au BufNewFile,BufRead *.htpp			setf hastepreproc
709
710" Hercules
711au BufNewFile,BufRead *.vc,*.ev,*.sum,*.errsum	setf hercules
712
713" HEX (Intel)
714au BufNewFile,BufRead *.hex,*.h32		setf hex
715
716" Hollywood
717au BufRead,BufNewFile *.hws			setf hollywood
718
719" Tilde (must be before HTML)
720au BufNewFile,BufRead *.t.html			setf tilde
721
722" HTML (.shtml and .stm for server side)
723au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm  call dist#ft#FThtml()
724
725" HTML with Ruby - eRuby
726au BufNewFile,BufRead *.erb,*.rhtml		setf eruby
727
728" HTML with M4
729au BufNewFile,BufRead *.html.m4			setf htmlm4
730
731" Some template.  Used to be HTML Cheetah.
732au BufNewFile,BufRead *.tmpl			setf template
733
734" Host config
735au BufNewFile,BufRead */etc/host.conf		setf hostconf
736
737" Hosts access
738au BufNewFile,BufRead */etc/hosts.allow,*/etc/hosts.deny  setf hostsaccess
739
740" Hyper Builder
741au BufNewFile,BufRead *.hb			setf hb
742
743" Httest
744au BufNewFile,BufRead *.htt,*.htb		setf httest
745
746" Icon
747au BufNewFile,BufRead *.icn			setf icon
748
749" IDL (Interface Description Language)
750au BufNewFile,BufRead *.idl			call dist#ft#FTidl()
751
752" Microsoft IDL (Interface Description Language)  Also *.idl
753" MOF = WMI (Windows Management Instrumentation) Managed Object Format
754au BufNewFile,BufRead *.odl,*.mof		setf msidl
755
756" Icewm menu
757au BufNewFile,BufRead */.icewm/menu		setf icemenu
758
759" Indent profile (must come before IDL *.pro!)
760au BufNewFile,BufRead .indent.pro		setf indent
761au BufNewFile,BufRead indent.pro		call dist#ft#ProtoCheck('indent')
762
763" IDL (Interactive Data Language)
764au BufNewFile,BufRead *.pro			call dist#ft#ProtoCheck('idlang')
765
766" Indent RC
767au BufNewFile,BufRead indentrc			setf indent
768
769" Inform
770au BufNewFile,BufRead *.inf,*.INF		setf inform
771
772" Initng
773au BufNewFile,BufRead */etc/initng/*/*.i,*.ii	setf initng
774
775" Innovation Data Processing
776au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c	setf upstreamdat
777au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c	setf upstreamlog
778au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog
779au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c	setf usserverlog
780au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c	setf usw2kagtlog
781
782" Ipfilter
783au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules	setf ipfilter
784
785" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
786au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl	setf fgl
787
788" .INI file for MSDOS
789au BufNewFile,BufRead *.ini			setf dosini
790
791" SysV Inittab
792au BufNewFile,BufRead inittab			setf inittab
793
794" Inno Setup
795au BufNewFile,BufRead *.iss			setf iss
796
797" J
798au BufNewFile,BufRead *.ijs			setf j
799
800" JAL
801au BufNewFile,BufRead *.jal,*.JAL		setf jal
802
803" Jam
804au BufNewFile,BufRead *.jpl,*.jpr		setf jam
805
806" Java
807au BufNewFile,BufRead *.java,*.jav		setf java
808
809" JavaCC
810au BufNewFile,BufRead *.jj,*.jjt		setf javacc
811
812" JavaScript, ECMAScript, ES module script, CommonJS script
813au BufNewFile,BufRead *.js,*.javascript,*.es,*.mjs,*.cjs   setf javascript
814
815" JavaScript with React
816au BufNewFile,BufRead *.jsx			setf javascriptreact
817
818" Java Server Pages
819au BufNewFile,BufRead *.jsp			setf jsp
820
821" Java Properties resource file (note: doesn't catch font.properties.pl)
822au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_??	setf jproperties
823
824" Jess
825au BufNewFile,BufRead *.clp			setf jess
826
827" Jgraph
828au BufNewFile,BufRead *.jgr			setf jgraph
829
830" Jovial
831au BufNewFile,BufRead *.jov,*.j73,*.jovial	setf jovial
832
833" JSON
834au BufNewFile,BufRead *.json,*.jsonp,*.webmanifest	setf json
835
836" Kixtart
837au BufNewFile,BufRead *.kix			setf kix
838
839" Kimwitu[++]
840au BufNewFile,BufRead *.k			setf kwt
841
842" Kivy
843au BufNewFile,BufRead *.kv			setf kivy
844
845" Kotlin
846au BufNewFile,BufRead *.kt,*.ktm,*.kts		setf kotlin
847
848" KDE script
849au BufNewFile,BufRead *.ks			setf kscript
850
851" Kconfig
852au BufNewFile,BufRead Kconfig,Kconfig.debug	setf kconfig
853
854" Lace (ISE)
855au BufNewFile,BufRead *.ace,*.ACE		setf lace
856
857" Latte
858au BufNewFile,BufRead *.latte,*.lte		setf latte
859
860" Limits
861au BufNewFile,BufRead */etc/limits,*/etc/*limits.conf,*/etc/*limits.d/*.conf	setf limits
862
863" LambdaProlog (*.mod too, see Modsim)
864au BufNewFile,BufRead *.sig			setf lprolog
865
866" LDAP LDIF
867au BufNewFile,BufRead *.ldif			setf ldif
868
869" Ld loader
870au BufNewFile,BufRead *.ld			setf ld
871
872" Less
873au BufNewFile,BufRead *.less			setf less
874
875" Lex
876au BufNewFile,BufRead *.lex,*.l,*.lxx,*.l++	setf lex
877
878" Libao
879au BufNewFile,BufRead */etc/libao.conf,*/.libao	setf libao
880
881" Libsensors
882au BufNewFile,BufRead */etc/sensors.conf,*/etc/sensors3.conf	setf sensors
883
884" LFTP
885au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc	setf lftp
886
887" Lifelines (or Lex for C++!)
888au BufNewFile,BufRead *.ll			setf lifelines
889
890" Lilo: Linux loader
891au BufNewFile,BufRead lilo.conf			setf lilo
892
893" Lisp (*.el = ELisp, *.cl = Common Lisp)
894" *.jl was removed, it's also used for Julia, better skip than guess wrong.
895if has("fname_case")
896  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.L,.emacs,.sawfishrc setf lisp
897else
898  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,.emacs,.sawfishrc setf lisp
899endif
900
901" SBCL implementation of Common Lisp
902au BufNewFile,BufRead sbclrc,.sbclrc		setf lisp
903
904" Liquid
905au BufNewFile,BufRead *.liquid			setf liquid
906
907" Lite
908au BufNewFile,BufRead *.lite,*.lt		setf lite
909
910" LiteStep RC files
911au BufNewFile,BufRead */LiteStep/*/*.rc		setf litestep
912
913" Login access
914au BufNewFile,BufRead */etc/login.access	setf loginaccess
915
916" Login defs
917au BufNewFile,BufRead */etc/login.defs		setf logindefs
918
919" Logtalk
920au BufNewFile,BufRead *.lgt			setf logtalk
921
922" LOTOS
923au BufNewFile,BufRead *.lot,*.lotos		setf lotos
924
925" Lout (also: *.lt)
926au BufNewFile,BufRead *.lou,*.lout		setf lout
927
928" Lua
929au BufNewFile,BufRead *.lua			setf lua
930
931" Luarocks
932au BufNewFile,BufRead *.rockspec		setf lua
933
934" Linden Scripting Language (Second Life)
935au BufNewFile,BufRead *.lsl			setf lsl
936
937" Lynx style file (or LotusScript!)
938au BufNewFile,BufRead *.lss			setf lss
939
940" M4
941au BufNewFile,BufRead *.m4
942	\ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif
943
944" MaGic Point
945au BufNewFile,BufRead *.mgp			setf mgp
946
947" Mail (for Elm, trn, mutt, muttng, rn, slrn, neomutt)
948au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\\\{6\},neomutt-*-\w\+,neomutt[[:alnum:]_-]\\\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
949
950" Mail aliases
951au BufNewFile,BufRead */etc/mail/aliases,*/etc/aliases	setf mailaliases
952
953" Mailcap configuration file
954au BufNewFile,BufRead .mailcap,mailcap		setf mailcap
955
956" Makefile
957au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make
958
959" MakeIndex
960au BufNewFile,BufRead *.ist,*.mst		setf ist
961
962" Mallard
963au BufNewFile,BufRead *.page			setf mallard
964
965" Manpage
966au BufNewFile,BufRead *.man			setf man
967
968" Man config
969au BufNewFile,BufRead */etc/man.conf,man.config	setf manconf
970
971" Maple V
972au BufNewFile,BufRead *.mv,*.mpl,*.mws		setf maple
973
974" Map (UMN mapserver config file)
975au BufNewFile,BufRead *.map			setf map
976
977" Markdown
978au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md  setf markdown
979
980" Mason
981au BufNewFile,BufRead *.mason,*.mhtml,*.comp	setf mason
982
983" Mathematica, Matlab, Murphi or Objective C
984au BufNewFile,BufRead *.m			call dist#ft#FTm()
985
986" Mathematica notebook
987au BufNewFile,BufRead *.nb			setf mma
988
989" Maya Extension Language
990au BufNewFile,BufRead *.mel			setf mel
991
992" Mercurial (hg) commit file
993au BufNewFile,BufRead hg-editor-*.txt		setf hgcommit
994
995" Mercurial config (looks like generic config file)
996au BufNewFile,BufRead *.hgrc,*hgrc		setf cfg
997
998" Meson Build system config
999au BufNewFile,BufRead meson.build,meson_options.txt setf meson
1000
1001" Messages (logs mostly)
1002au BufNewFile,BufRead */log/{auth,cron,daemon,debug,kern,lpr,mail,messages,news/news,syslog,user}{,.log,.err,.info,.warn,.crit,.notice}{,.[0-9]*,-[0-9]*} setf messages
1003
1004" Metafont
1005au BufNewFile,BufRead *.mf			setf mf
1006
1007" MetaPost
1008au BufNewFile,BufRead *.mp			setf mp
1009
1010" MGL
1011au BufNewFile,BufRead *.mgl			setf mgl
1012
1013" MIX - Knuth assembly
1014au BufNewFile,BufRead *.mix,*.mixal		setf mix
1015
1016" MMIX or VMS makefile
1017au BufNewFile,BufRead *.mms			call dist#ft#FTmms()
1018
1019" Symbian meta-makefile definition (MMP)
1020au BufNewFile,BufRead *.mmp			setf mmp
1021
1022" Modsim III (or LambdaProlog)
1023au BufNewFile,BufRead *.mod
1024	\ if getline(1) =~ '\<module\>' |
1025	\   setf lprolog |
1026	\ else |
1027	\   setf modsim3 |
1028	\ endif
1029
1030" Modula 2  (.md removed in favor of Markdown)
1031au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi	setf modula2
1032
1033" Modula 3 (.m3, .i3, .mg, .ig)
1034au BufNewFile,BufRead *.[mi][3g]		setf modula3
1035
1036" Monk
1037au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc	setf monk
1038
1039" MOO
1040au BufNewFile,BufRead *.moo			setf moo
1041
1042" Modconf
1043au BufNewFile,BufRead */etc/modules.conf,*/etc/modules,*/etc/conf.modules setf modconf
1044
1045" Mplayer config
1046au BufNewFile,BufRead mplayer.conf,*/.mplayer/config	setf mplayerconf
1047
1048" Motorola S record
1049au BufNewFile,BufRead *.s19,*.s28,*.s37,*.mot,*.srec	setf srec
1050
1051" Mrxvtrc
1052au BufNewFile,BufRead mrxvtrc,.mrxvtrc		setf mrxvtrc
1053
1054" Msql
1055au BufNewFile,BufRead *.msql			setf msql
1056
1057" Mysql
1058au BufNewFile,BufRead *.mysql			setf mysql
1059
1060" Mutt setup files (must be before catch *.rc)
1061au BufNewFile,BufRead */etc/Muttrc.d/*		call s:StarSetf('muttrc')
1062
1063" M$ Resource files
1064au BufNewFile,BufRead *.rc,*.rch		setf rc
1065
1066" MuPAD source
1067au BufRead,BufNewFile *.mu			setf mupad
1068
1069" Mush
1070au BufNewFile,BufRead *.mush			setf mush
1071
1072" Mutt setup file (also for Muttng)
1073au BufNewFile,BufRead Mutt{ng,}rc		setf muttrc
1074
1075" N1QL
1076au BufRead,BufNewfile *.n1ql,*.nql		setf n1ql
1077
1078" Nano
1079au BufNewFile,BufRead */etc/nanorc,*.nanorc	setf nanorc
1080
1081" Nastran input/DMAP
1082"au BufNewFile,BufRead *.dat			setf nastran
1083
1084" Natural
1085au BufNewFile,BufRead *.NS[ACGLMNPS]		setf natural
1086
1087" Noemutt setup file
1088au BufNewFile,BufRead Neomuttrc			setf neomuttrc
1089
1090" Netrc
1091au BufNewFile,BufRead .netrc			setf netrc
1092
1093" Ninja file
1094au BufNewFile,BufRead *.ninja			setf ninja
1095
1096" NPM RC file
1097au BufNewFile,BufRead npmrc,.npmrc		setf dosini
1098
1099" Novell netware batch files
1100au BufNewFile,BufRead *.ncf			setf ncf
1101
1102" Nroff/Troff (*.ms and *.t are checked below)
1103au BufNewFile,BufRead *.me
1104	\ if expand("<afile>") != "read.me" && expand("<afile>") != "click.me" |
1105	\   setf nroff |
1106	\ endif
1107au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom	setf nroff
1108au BufNewFile,BufRead *.[1-9]			call dist#ft#FTnroff()
1109
1110" Nroff or Objective C++
1111au BufNewFile,BufRead *.mm			call dist#ft#FTmm()
1112
1113" Not Quite C
1114au BufNewFile,BufRead *.nqc			setf nqc
1115
1116" NSE - Nmap Script Engine - uses Lua syntax
1117au BufNewFile,BufRead *.nse			setf lua
1118
1119" NSIS
1120au BufNewFile,BufRead *.nsi,*.nsh		setf nsis
1121
1122" OCAML
1123au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit	setf ocaml
1124
1125" Occam
1126au BufNewFile,BufRead *.occ			setf occam
1127
1128" Omnimark
1129au BufNewFile,BufRead *.xom,*.xin		setf omnimark
1130
1131" OpenROAD
1132au BufNewFile,BufRead *.or			setf openroad
1133
1134" OPL
1135au BufNewFile,BufRead *.[Oo][Pp][Ll]		setf opl
1136
1137" Oracle config file
1138au BufNewFile,BufRead *.ora			setf ora
1139
1140" Packet filter conf
1141au BufNewFile,BufRead pf.conf			setf pf
1142
1143" Pacman Config (close enough to dosini)
1144au BufNewFile,BufRead */etc/pacman.conf		setf dosini
1145
1146" Pacman hooks
1147au BufNewFile,BufRead *.hook
1148	\ if getline(1) == '[Trigger]' |
1149	\   setf dosini |
1150	\ endif
1151
1152" Pam conf
1153au BufNewFile,BufRead */etc/pam.conf			setf pamconf
1154
1155" Pam environment
1156au BufNewFile,BufRead pam_env.conf,.pam_environment	setf pamenv
1157
1158" PApp
1159au BufNewFile,BufRead *.papp,*.pxml,*.pxsl	setf papp
1160
1161" Password file
1162au BufNewFile,BufRead */etc/passwd,*/etc/passwd-,*/etc/passwd.edit,*/etc/shadow,*/etc/shadow-,*/etc/shadow.edit,*/var/backups/passwd.bak,*/var/backups/shadow.bak setf passwd
1163
1164" Pascal (also *.p)
1165au BufNewFile,BufRead *.pas,*.pp		setf pascal
1166
1167" Delphi or Lazarus program file
1168au BufNewFile,BufRead *.dpr,*.lpr		setf pascal
1169
1170" PDF
1171au BufNewFile,BufRead *.pdf			setf pdf
1172
1173" PCMK - HAE - crm configure edit
1174au BufNewFile,BufRead *.pcmk			setf pcmk
1175
1176" Perl
1177if has("fname_case")
1178  au BufNewFile,BufRead *.pl,*.PL		call dist#ft#FTpl()
1179else
1180  au BufNewFile,BufRead *.pl			call dist#ft#FTpl()
1181endif
1182au BufNewFile,BufRead *.plx,*.al,*.psgi		setf perl
1183au BufNewFile,BufRead *.p6,*.pm6,*.pl6		setf perl6
1184au BufNewFile,BufRead *.raku,*.rakumod		setf perl6
1185
1186" Perl, XPM or XPM2
1187au BufNewFile,BufRead *.pm
1188	\ if getline(1) =~ "XPM2" |
1189	\   setf xpm2 |
1190	\ elseif getline(1) =~ "XPM" |
1191	\   setf xpm |
1192	\ else |
1193	\   setf perl |
1194	\ endif
1195
1196" Perl POD
1197au BufNewFile,BufRead *.pod			setf pod
1198au BufNewFile,BufRead *.pod6			setf pod6
1199
1200" Php, php3, php4, etc.
1201" Also Phtml (was used for PHP 2 in the past)
1202" Also .ctp for Cake template file
1203au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp	setf php
1204
1205" PHP config
1206au BufNewFile,BufRead php.ini-*			setf dosini
1207
1208" Pike and Cmod
1209au BufNewFile,BufRead *.pike,*.pmod		setf pike
1210au BufNewFile,BufRead *.cmod			setf cmod
1211
1212" Pinfo config
1213au BufNewFile,BufRead */etc/pinforc,*/.pinforc	setf pinfo
1214
1215" Palm Resource compiler
1216au BufNewFile,BufRead *.rcp			setf pilrc
1217
1218" Pine config
1219au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex		setf pine
1220
1221" Pipenv Pipfiles
1222au BufNewFile,BufRead Pipfile			setf config
1223au BufNewFile,BufRead Pipfile.lock		setf json
1224
1225" PL/1, PL/I
1226au BufNewFile,BufRead *.pli,*.pl1		setf pli
1227
1228" PL/M (also: *.inp)
1229au BufNewFile,BufRead *.plm,*.p36,*.pac		setf plm
1230
1231" PL/SQL
1232au BufNewFile,BufRead *.pls,*.plsql		setf plsql
1233
1234" PLP
1235au BufNewFile,BufRead *.plp			setf plp
1236
1237" PO and PO template (GNU gettext)
1238au BufNewFile,BufRead *.po,*.pot		setf po
1239
1240" Postfix main config
1241au BufNewFile,BufRead main.cf			setf pfmain
1242
1243" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator)
1244au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai	  setf postscr
1245
1246" PostScript Printer Description
1247au BufNewFile,BufRead *.ppd			setf ppd
1248
1249" Povray
1250au BufNewFile,BufRead *.pov			setf pov
1251
1252" Povray configuration
1253au BufNewFile,BufRead .povrayrc			setf povini
1254
1255" Povray, PHP or assembly
1256au BufNewFile,BufRead *.inc			call dist#ft#FTinc()
1257
1258" Printcap and Termcap
1259au BufNewFile,BufRead *printcap
1260	\ let b:ptcap_type = "print" | setf ptcap
1261au BufNewFile,BufRead *termcap
1262	\ let b:ptcap_type = "term" | setf ptcap
1263
1264" PCCTS / ANTRL
1265"au BufNewFile,BufRead *.g			setf antrl
1266au BufNewFile,BufRead *.g			setf pccts
1267
1268" PPWizard
1269au BufNewFile,BufRead *.it,*.ih			setf ppwiz
1270
1271" Obj 3D file format
1272" TODO: is there a way to avoid MS-Windows Object files?
1273au BufNewFile,BufRead *.obj			setf obj
1274
1275" Oracle Pro*C/C++
1276au BufNewFile,BufRead *.pc			setf proc
1277
1278" Privoxy actions file
1279au BufNewFile,BufRead *.action			setf privoxy
1280
1281" Procmail
1282au BufNewFile,BufRead .procmail,.procmailrc	setf procmail
1283
1284" Progress or CWEB
1285au BufNewFile,BufRead *.w			call dist#ft#FTprogress_cweb()
1286
1287" Progress or assembly
1288au BufNewFile,BufRead *.i			call dist#ft#FTprogress_asm()
1289
1290" Progress or Pascal
1291au BufNewFile,BufRead *.p			call dist#ft#FTprogress_pascal()
1292
1293" Software Distributor Product Specification File (POSIX 1387.2-1995)
1294au BufNewFile,BufRead *.psf			setf psf
1295au BufNewFile,BufRead INDEX,INFO
1296	\ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
1297	\   setf psf |
1298	\ endif
1299
1300" Prolog
1301au BufNewFile,BufRead *.pdb			setf prolog
1302
1303" Promela
1304au BufNewFile,BufRead *.pml			setf promela
1305
1306" Google protocol buffers
1307au BufNewFile,BufRead *.proto			setf proto
1308
1309" Protocols
1310au BufNewFile,BufRead */etc/protocols		setf protocols
1311
1312" Pyrex
1313au BufNewFile,BufRead *.pyx,*.pxd		setf pyrex
1314
1315" Python, Python Shell Startup and Python Stub Files
1316" Quixote (Python-based web framework)
1317au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc  setf python
1318au BufNewFile,BufRead *.ptl,*.pyi,SConstruct		   setf python
1319
1320" Radiance
1321au BufNewFile,BufRead *.rad,*.mat		setf radiance
1322
1323" Ratpoison config/command files
1324au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc	setf ratpoison
1325
1326" RCS file
1327au BufNewFile,BufRead *\,v			setf rcs
1328
1329" Readline
1330au BufNewFile,BufRead .inputrc,inputrc		setf readline
1331
1332" Registry for MS-Windows
1333au BufNewFile,BufRead *.reg
1334	\ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif
1335
1336" Renderman Interface Bytestream
1337au BufNewFile,BufRead *.rib			setf rib
1338
1339" Rego Policy Language
1340au BufNewFile,BufRead *.rego			setf rego
1341
1342" Rexx
1343au BufNewFile,BufRead *.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit	setf rexx
1344
1345" R Help file
1346if has("fname_case")
1347  au BufNewFile,BufRead *.rd,*.Rd		setf rhelp
1348else
1349  au BufNewFile,BufRead *.rd			setf rhelp
1350endif
1351
1352" R noweb file
1353if has("fname_case")
1354  au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw		setf rnoweb
1355else
1356  au BufNewFile,BufRead *.rnw,*.snw			setf rnoweb
1357endif
1358
1359" R Markdown file
1360if has("fname_case")
1361  au BufNewFile,BufRead *.Rmd,*.rmd,*.Smd,*.smd		setf rmd
1362else
1363  au BufNewFile,BufRead *.rmd,*.smd			setf rmd
1364endif
1365
1366" R reStructuredText file
1367if has("fname_case")
1368  au BufNewFile,BufRead *.Rrst,*.rrst,*.Srst,*.srst	setf rrst
1369else
1370  au BufNewFile,BufRead *.rrst,*.srst			setf rrst
1371endif
1372
1373" Rexx, Rebol or R
1374au BufNewFile,BufRead *.r,*.R				call dist#ft#FTr()
1375
1376" Remind
1377au BufNewFile,BufRead .reminders,*.remind,*.rem		setf remind
1378
1379" Resolv.conf
1380au BufNewFile,BufRead resolv.conf		setf resolv
1381
1382" Relax NG Compact
1383au BufNewFile,BufRead *.rnc			setf rnc
1384
1385" Relax NG XML
1386au BufNewFile,BufRead *.rng			setf rng
1387
1388" RPL/2
1389au BufNewFile,BufRead *.rpl			setf rpl
1390
1391" Robots.txt
1392au BufNewFile,BufRead robots.txt		setf robots
1393
1394" Rpcgen
1395au BufNewFile,BufRead *.x			setf rpcgen
1396
1397" reStructuredText Documentation Format
1398au BufNewFile,BufRead *.rst			setf rst
1399
1400" RTF
1401au BufNewFile,BufRead *.rtf			setf rtf
1402
1403" Interactive Ruby shell
1404au BufNewFile,BufRead .irbrc,irbrc		setf ruby
1405
1406" Ruby
1407au BufNewFile,BufRead *.rb,*.rbw		setf ruby
1408
1409" RubyGems
1410au BufNewFile,BufRead *.gemspec			setf ruby
1411
1412" Rust
1413au BufNewFile,BufRead *.rs			setf rust
1414
1415" Rackup
1416au BufNewFile,BufRead *.ru			setf ruby
1417
1418" Bundler
1419au BufNewFile,BufRead Gemfile			setf ruby
1420
1421" Ruby on Rails
1422au BufNewFile,BufRead *.builder,*.rxml,*.rjs	setf ruby
1423
1424" Rantfile and Rakefile is like Ruby
1425au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake	setf ruby
1426
1427" S-lang (or shader language, or SmallLisp)
1428au BufNewFile,BufRead *.sl			setf slang
1429
1430" Samba config
1431au BufNewFile,BufRead smb.conf			setf samba
1432
1433" SAS script
1434au BufNewFile,BufRead *.sas			setf sas
1435
1436" Sass
1437au BufNewFile,BufRead *.sass			setf sass
1438
1439" Sather
1440au BufNewFile,BufRead *.sa			setf sather
1441
1442" Scala
1443au BufNewFile,BufRead *.scala			setf scala
1444
1445" SBT - Scala Build Tool
1446au BufNewFile,BufRead *.sbt			setf sbt
1447
1448" Scilab
1449au BufNewFile,BufRead *.sci,*.sce		setf scilab
1450
1451" SCSS
1452au BufNewFile,BufRead *.scss			setf scss
1453
1454" SD: Streaming Descriptors
1455au BufNewFile,BufRead *.sd			setf sd
1456
1457" SDL
1458au BufNewFile,BufRead *.sdl,*.pr		setf sdl
1459
1460" sed
1461au BufNewFile,BufRead *.sed			setf sed
1462
1463" Sieve (RFC 3028, 5228)
1464au BufNewFile,BufRead *.siv,*.sieve		setf sieve
1465
1466" Sendmail
1467au BufNewFile,BufRead sendmail.cf		setf sm
1468
1469" Sendmail .mc files are actually m4.  Could also be MS Message text file.
1470au BufNewFile,BufRead *.mc			call dist#ft#McSetf()
1471
1472" Services
1473au BufNewFile,BufRead */etc/services		setf services
1474
1475" Service Location config
1476au BufNewFile,BufRead */etc/slp.conf		setf slpconf
1477
1478" Service Location registration
1479au BufNewFile,BufRead */etc/slp.reg		setf slpreg
1480
1481" Service Location SPI
1482au BufNewFile,BufRead */etc/slp.spi		setf slpspi
1483
1484" Setserial config
1485au BufNewFile,BufRead */etc/serial.conf		setf setserial
1486
1487" SGML
1488au BufNewFile,BufRead *.sgm,*.sgml
1489	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' |
1490	\   setf sgmllnx |
1491	\ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
1492	\   let b:docbk_type = "sgml" |
1493	\   let b:docbk_ver = 4 |
1494	\   setf docbk |
1495	\ else |
1496	\   setf sgml |
1497	\ endif
1498
1499" SGMLDECL
1500au BufNewFile,BufRead *.decl,*.dcl,*.dec
1501	\ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
1502	\    setf sgmldecl |
1503	\ endif
1504
1505" SGML catalog file
1506au BufNewFile,BufRead catalog			setf catalog
1507
1508" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
1509" Gentoo ebuilds and Arch Linux PKGBUILDs are actually bash scripts
1510" NOTE: Patterns ending in a star are further down, these have lower priority.
1511au BufNewFile,BufRead .bashrc,bashrc,bash.bashrc,.bash[_-]profile,.bash[_-]logout,.bash[_-]aliases,bash-fc[-.],*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass,PKGBUILD call dist#ft#SetFileTypeSH("bash")
1512au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh")
1513au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env call dist#ft#SetFileTypeSH(getline(1))
1514
1515
1516" Shell script (Arch Linux) or PHP file (Drupal)
1517au BufNewFile,BufRead *.install
1518	\ if getline(1) =~ '<?php' |
1519	\   setf php |
1520	\ else |
1521	\   call dist#ft#SetFileTypeSH("bash") |
1522	\ endif
1523
1524" tcsh scripts (patterns ending in a star further below)
1525au BufNewFile,BufRead .tcshrc,*.tcsh,tcsh.tcshrc,tcsh.login	call dist#ft#SetFileTypeShell("tcsh")
1526
1527" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
1528" (patterns ending in a start further below)
1529au BufNewFile,BufRead .login,.cshrc,csh.cshrc,csh.login,csh.logout,*.csh,.alias  call dist#ft#CSH()
1530
1531" Z-Shell script (patterns ending in a star further below)
1532au BufNewFile,BufRead .zprofile,*/etc/zprofile,.zfbfmarks  setf zsh
1533au BufNewFile,BufRead .zshrc,.zshenv,.zlogin,.zlogout,.zcompdump setf zsh
1534au BufNewFile,BufRead *.zsh			setf zsh
1535
1536" Scheme
1537au BufNewFile,BufRead *.scm,*.ss,*.rkt		setf scheme
1538
1539" Screen RC
1540au BufNewFile,BufRead .screenrc,screenrc	setf screen
1541
1542" Simula
1543au BufNewFile,BufRead *.sim			setf simula
1544
1545" SINDA
1546au BufNewFile,BufRead *.sin,*.s85		setf sinda
1547
1548" SiSU
1549au BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst,*._sst setf sisu
1550au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
1551
1552" SKILL
1553au BufNewFile,BufRead *.il,*.ils,*.cdf		setf skill
1554
1555" SLRN
1556au BufNewFile,BufRead .slrnrc			setf slrnrc
1557au BufNewFile,BufRead *.score			setf slrnsc
1558
1559" Smalltalk (and TeX)
1560au BufNewFile,BufRead *.st			setf st
1561au BufNewFile,BufRead *.cls
1562	\ if getline(1) =~ '^%' |
1563	\  setf tex |
1564	\ elseif getline(1)[0] == '#' && getline(1) =~ 'rexx' |
1565	\  setf rexx |
1566	\ else |
1567	\  setf st |
1568	\ endif
1569
1570" Smarty templates
1571au BufNewFile,BufRead *.tpl			setf smarty
1572
1573" SMIL or XML
1574au BufNewFile,BufRead *.smil
1575	\ if getline(1) =~ '<?\s*xml.*?>' |
1576	\   setf xml |
1577	\ else |
1578	\   setf smil |
1579	\ endif
1580
1581" SMIL or SNMP MIB file
1582au BufNewFile,BufRead *.smi
1583	\ if getline(1) =~ '\<smil\>' |
1584	\   setf smil |
1585	\ else |
1586	\   setf mib |
1587	\ endif
1588
1589" SMITH
1590au BufNewFile,BufRead *.smt,*.smith		setf smith
1591
1592" Snobol4 and spitbol
1593au BufNewFile,BufRead *.sno,*.spt		setf snobol4
1594
1595" SNMP MIB files
1596au BufNewFile,BufRead *.mib,*.my		setf mib
1597
1598" Snort Configuration
1599au BufNewFile,BufRead *.hog,snort.conf,vision.conf	setf hog
1600au BufNewFile,BufRead *.rules			call dist#ft#FTRules()
1601
1602" Spec (Linux RPM)
1603au BufNewFile,BufRead *.spec			setf spec
1604
1605" Speedup (AspenTech plant simulator)
1606au BufNewFile,BufRead *.speedup,*.spdata,*.spd	setf spup
1607
1608" Slice
1609au BufNewFile,BufRead *.ice			setf slice
1610
1611" Spice
1612au BufNewFile,BufRead *.sp,*.spice		setf spice
1613
1614" Spyce
1615au BufNewFile,BufRead *.spy,*.spi		setf spyce
1616
1617" Squid
1618au BufNewFile,BufRead squid.conf		setf squid
1619
1620" SQL for Oracle Designer
1621au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks	setf sql
1622
1623" SQL
1624au BufNewFile,BufRead *.sql			call dist#ft#SQL()
1625
1626" SQLJ
1627au BufNewFile,BufRead *.sqlj			setf sqlj
1628
1629" SQR
1630au BufNewFile,BufRead *.sqr,*.sqi		setf sqr
1631
1632" OpenSSH configuration
1633au BufNewFile,BufRead ssh_config,*/.ssh/config		setf sshconfig
1634au BufNewFile,BufRead */etc/ssh/ssh_config.d/*.conf	setf sshconfig
1635
1636" OpenSSH server configuration
1637au BufNewFile,BufRead sshd_config			setf sshdconfig
1638au BufNewFile,BufRead */etc/ssh/sshd_config.d/*.conf	setf sshdconfig
1639
1640" Stata
1641au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata	setf stata
1642" Also *.class, but not when it's a Java bytecode file
1643au BufNewFile,BufRead *.class
1644	\ if getline(1) !~ "^\xca\xfe\xba\xbe" | setf stata | endif
1645
1646" SMCL
1647au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl	setf smcl
1648
1649" Stored Procedures
1650au BufNewFile,BufRead *.stp			setf stp
1651
1652" Standard ML
1653au BufNewFile,BufRead *.sml			setf sml
1654
1655" Sratus VOS command macro
1656au BufNewFile,BufRead *.cm			setf voscm
1657
1658" Swift
1659au BufNewFile,BufRead *.swift			setf swift
1660au BufNewFile,BufRead *.swift.gyb		setf swiftgyb
1661
1662" Swift Intermediate Language
1663au BufNewFile,BufRead *.sil			setf sil
1664
1665" Sysctl
1666au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf	setf sysctl
1667
1668" Systemd unit files
1669au BufNewFile,BufRead */systemd/*.{automount,dnssd,link,mount,netdev,network,nspawn,path,service,slice,socket,swap,target,timer}	setf systemd
1670" Systemd overrides
1671au BufNewFile,BufRead */etc/systemd/*.conf.d/*.conf	setf systemd
1672au BufNewFile,BufRead */etc/systemd/system/*.d/*.conf	setf systemd
1673au BufNewFile,BufRead */.config/systemd/user/*.d/*.conf	setf systemd
1674" Systemd temp files
1675au BufNewFile,BufRead */etc/systemd/system/*.d/.#*	setf systemd
1676au BufNewFile,BufRead */etc/systemd/system/.#*		setf systemd
1677au BufNewFile,BufRead */.config/systemd/user/*.d/.#*	setf systemd
1678au BufNewFile,BufRead */.config/systemd/user/.#*	setf systemd
1679
1680" Synopsys Design Constraints
1681au BufNewFile,BufRead *.sdc			setf sdc
1682
1683" Sudoers
1684au BufNewFile,BufRead */etc/sudoers,sudoers.tmp	setf sudoers
1685
1686" SVG (Scalable Vector Graphics)
1687au BufNewFile,BufRead *.svg			setf svg
1688
1689" Tads (or Nroff or Perl test file)
1690au BufNewFile,BufRead *.t
1691	\ if !dist#ft#FTnroff() && !dist#ft#FTperl() | setf tads | endif
1692
1693" Tags
1694au BufNewFile,BufRead tags			setf tags
1695
1696" TAK
1697au BufNewFile,BufRead *.tak			setf tak
1698
1699" Task
1700au BufRead,BufNewFile {pending,completed,undo}.data  setf taskdata
1701au BufRead,BufNewFile *.task			setf taskedit
1702
1703" Tcl (JACL too)
1704au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
1705
1706" TealInfo
1707au BufNewFile,BufRead *.tli			setf tli
1708
1709" Telix Salt
1710au BufNewFile,BufRead *.slt			setf tsalt
1711
1712" Tera Term Language
1713au BufRead,BufNewFile *.ttl			setf teraterm
1714
1715" Terminfo
1716au BufNewFile,BufRead *.ti			setf terminfo
1717
1718" TeX
1719au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl	setf tex
1720au BufNewFile,BufRead *.tex			call dist#ft#FTtex()
1721
1722" ConTeXt
1723au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi   setf context
1724
1725" Texinfo
1726au BufNewFile,BufRead *.texinfo,*.texi,*.txi	setf texinfo
1727
1728" TeX configuration
1729au BufNewFile,BufRead texmf.cnf			setf texmf
1730
1731" Tidy config
1732au BufNewFile,BufRead .tidyrc,tidyrc,tidy.conf	setf tidy
1733
1734" TF mud client
1735au BufNewFile,BufRead *.tf,.tfrc,tfrc		setf tf
1736
1737" tmux configuration
1738au BufNewFile,BufRead {.,}tmux*.conf		setf tmux
1739
1740" TPP - Text Presentation Program
1741au BufNewFile,BufReadPost *.tpp			setf tpp
1742
1743" Treetop
1744au BufRead,BufNewFile *.treetop			setf treetop
1745
1746" Trustees
1747au BufNewFile,BufRead trustees.conf		setf trustees
1748
1749" TSS - Geometry
1750au BufNewFile,BufReadPost *.tssgm		setf tssgm
1751
1752" TSS - Optics
1753au BufNewFile,BufReadPost *.tssop		setf tssop
1754
1755" TSS - Command Line (temporary)
1756au BufNewFile,BufReadPost *.tsscl		setf tsscl
1757
1758" TWIG files
1759au BufNewFile,BufReadPost *.twig		setf twig
1760
1761" Typescript
1762au BufNewFile,BufReadPost *.ts			setf typescript
1763
1764" TypeScript with React
1765au BufNewFile,BufRead *.tsx			setf typescriptreact
1766
1767" Motif UIT/UIL files
1768au BufNewFile,BufRead *.uit,*.uil		setf uil
1769
1770" Udev conf
1771au BufNewFile,BufRead */etc/udev/udev.conf	setf udevconf
1772
1773" Udev permissions
1774au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm
1775"
1776" Udev symlinks config
1777au BufNewFile,BufRead */etc/udev/cdsymlinks.conf	setf sh
1778
1779" UnrealScript
1780au BufNewFile,BufRead *.uc			setf uc
1781
1782" Updatedb
1783au BufNewFile,BufRead */etc/updatedb.conf	setf updatedb
1784
1785" Upstart (init(8)) config files
1786au BufNewFile,BufRead */usr/share/upstart/*.conf	       setf upstart
1787au BufNewFile,BufRead */usr/share/upstart/*.override	       setf upstart
1788au BufNewFile,BufRead */etc/init/*.conf,*/etc/init/*.override  setf upstart
1789au BufNewFile,BufRead */.init/*.conf,*/.init/*.override	       setf upstart
1790au BufNewFile,BufRead */.config/upstart/*.conf		       setf upstart
1791au BufNewFile,BufRead */.config/upstart/*.override	       setf upstart
1792
1793" Vera
1794au BufNewFile,BufRead *.vr,*.vri,*.vrh		setf vera
1795
1796" Verilog HDL
1797au BufNewFile,BufRead *.v			setf verilog
1798
1799" Verilog-AMS HDL
1800au BufNewFile,BufRead *.va,*.vams		setf verilogams
1801
1802" SystemVerilog
1803au BufNewFile,BufRead *.sv,*.svh		setf systemverilog
1804
1805" VHDL
1806au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst,*.vho  setf vhdl
1807
1808" Vim script
1809au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc	setf vim
1810
1811" Viminfo file
1812au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
1813
1814" Virata Config Script File or Drupal module
1815au BufRead,BufNewFile *.hw,*.module,*.pkg
1816	\ if getline(1) =~ '<?php' |
1817	\   setf php |
1818	\ else |
1819	\   setf virata |
1820	\ endif
1821
1822" Visual Basic (also uses *.bas) or FORM
1823au BufNewFile,BufRead *.frm			call dist#ft#FTVB("form")
1824
1825" SaxBasic is close to Visual Basic
1826au BufNewFile,BufRead *.sba			setf vb
1827
1828" Vgrindefs file
1829au BufNewFile,BufRead vgrindefs			setf vgrindefs
1830
1831" VRML V1.0c
1832au BufNewFile,BufRead *.wrl			setf vrml
1833
1834" Vroom (vim testing and executable documentation)
1835au BufNewFile,BufRead *.vroom			setf vroom
1836
1837" Vue.js Single File Component
1838au BufNewFile,BufRead *.vue			setf vue
1839
1840" WebAssembly
1841au BufNewFile,BufRead *.wast,*.wat		setf wast
1842
1843" Webmacro
1844au BufNewFile,BufRead *.wm			setf webmacro
1845
1846" Wget config
1847au BufNewFile,BufRead .wgetrc,wgetrc		setf wget
1848
1849" Website MetaLanguage
1850au BufNewFile,BufRead *.wml			setf wml
1851
1852" Winbatch
1853au BufNewFile,BufRead *.wbt			setf winbatch
1854
1855" WSML
1856au BufNewFile,BufRead *.wsml			setf wsml
1857
1858" WPL
1859au BufNewFile,BufRead *.wpl			setf xml
1860
1861" WvDial
1862au BufNewFile,BufRead wvdial.conf,.wvdialrc	setf wvdial
1863
1864" CVS RC file
1865au BufNewFile,BufRead .cvsrc			setf cvsrc
1866
1867" CVS commit file
1868au BufNewFile,BufRead cvs\d\+			setf cvs
1869
1870" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
1871" lines in a WEB file).
1872au BufNewFile,BufRead *.web
1873	\ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" |
1874	\   setf web |
1875	\ else |
1876	\   setf winbatch |
1877	\ endif
1878
1879" Windows Scripting Host and Windows Script Component
1880au BufNewFile,BufRead *.ws[fc]			setf wsh
1881
1882" XHTML
1883au BufNewFile,BufRead *.xhtml,*.xht		setf xhtml
1884
1885" X Pixmap (dynamically sets colors, use BufEnter to make it work better)
1886au BufEnter *.xpm
1887	\ if getline(1) =~ "XPM2" |
1888	\   setf xpm2 |
1889	\ else |
1890	\   setf xpm |
1891	\ endif
1892au BufEnter *.xpm2				setf xpm2
1893
1894" XFree86 config
1895au BufNewFile,BufRead XF86Config
1896	\ if getline(1) =~ '\<XConfigurator\>' |
1897	\   let b:xf86conf_xfree86_version = 3 |
1898	\ endif |
1899	\ setf xf86conf
1900au BufNewFile,BufRead */xorg.conf.d/*.conf
1901	\ let b:xf86conf_xfree86_version = 4 |
1902	\ setf xf86conf
1903
1904" Xorg config
1905au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86conf_xfree86_version = 4 | setf xf86conf
1906
1907" Xinetd conf
1908au BufNewFile,BufRead */etc/xinetd.conf		setf xinetd
1909
1910" XS Perl extension interface language
1911au BufNewFile,BufRead *.xs			setf xs
1912
1913" X resources file
1914au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults
1915
1916" Xmath
1917au BufNewFile,BufRead *.msc,*.msf		setf xmath
1918au BufNewFile,BufRead *.ms
1919	\ if !dist#ft#FTnroff() | setf xmath | endif
1920
1921" XML  specific variants: docbk and xbl
1922au BufNewFile,BufRead *.xml			call dist#ft#FTxml()
1923
1924" XMI (holding UML models) is also XML
1925au BufNewFile,BufRead *.xmi			setf xml
1926
1927" CSPROJ files are Visual Studio.NET's XML-based project config files
1928au BufNewFile,BufRead *.csproj,*.csproj.user	setf xml
1929
1930" Qt Linguist translation source and Qt User Interface Files are XML
1931" However, for .ts Typescript is more common.
1932au BufNewFile,BufRead *.ui			setf xml
1933
1934" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
1935au BufNewFile,BufRead *.tpm			setf xml
1936
1937" Xdg menus
1938au BufNewFile,BufRead */etc/xdg/menus/*.menu	setf xml
1939
1940" ATI graphics driver configuration
1941au BufNewFile,BufRead fglrxrc			setf xml
1942
1943" Web Services Description Language (WSDL)
1944au BufNewFile,BufRead *.wsdl			setf xml
1945
1946" XLIFF (XML Localisation Interchange File Format) is also XML
1947au BufNewFile,BufRead *.xlf			setf xml
1948au BufNewFile,BufRead *.xliff			setf xml
1949
1950" XML User Interface Language
1951au BufNewFile,BufRead *.xul			setf xml
1952
1953" X11 xmodmap (also see below)
1954au BufNewFile,BufRead *Xmodmap			setf xmodmap
1955
1956" Xquery
1957au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy	setf xquery
1958
1959" XSD
1960au BufNewFile,BufRead *.xsd			setf xsd
1961
1962" Xslt
1963au BufNewFile,BufRead *.xsl,*.xslt		setf xslt
1964
1965" Yacc
1966au BufNewFile,BufRead *.yy,*.yxx,*.y++		setf yacc
1967
1968" Yacc or racc
1969au BufNewFile,BufRead *.y			call dist#ft#FTy()
1970
1971" Yaml
1972au BufNewFile,BufRead *.yaml,*.yml		setf yaml
1973
1974" Raml
1975au BufNewFile,BufRead *.raml			setf raml
1976
1977" yum conf (close enough to dosini)
1978au BufNewFile,BufRead */etc/yum.conf		setf dosini
1979
1980" Zimbu
1981au BufNewFile,BufRead *.zu			setf zimbu
1982" Zimbu Templates
1983au BufNewFile,BufRead *.zut			setf zimbutempl
1984
1985" Zope
1986"   dtml (zope dynamic template markup language), pt (zope page template),
1987"   cpt (zope form controller page template)
1988au BufNewFile,BufRead *.dtml,*.pt,*.cpt		call dist#ft#FThtml()
1989"   zsql (zope sql method)
1990au BufNewFile,BufRead *.zsql			call dist#ft#SQL()
1991
1992" Z80 assembler asz80
1993au BufNewFile,BufRead *.z8a			setf z8a
1994
1995augroup END
1996
1997
1998" Source the user-specified filetype file, for backwards compatibility with
1999" Vim 5.x.
2000if exists("myfiletypefile") && filereadable(expand(myfiletypefile))
2001  execute "source " . myfiletypefile
2002endif
2003
2004
2005" Check for "*" after loading myfiletypefile, so that scripts.vim is only used
2006" when there are no matching file name extensions.
2007" Don't do this for compressed files.
2008augroup filetypedetect
2009au BufNewFile,BufRead *
2010	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
2011	\ | runtime! scripts.vim | endif
2012au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif
2013
2014
2015" Extra checks for when no filetype has been detected now.  Mostly used for
2016" patterns that end in "*".  E.g., "zsh*" matches "zsh.vim", but that's a Vim
2017" script file.
2018" Most of these should call s:StarSetf() to avoid names ending in .gz and the
2019" like are used.
2020
2021" More Apache style config files
2022au BufNewFile,BufRead */etc/proftpd/*.conf*,*/etc/proftpd/conf.*/*	call s:StarSetf('apachestyle')
2023au BufNewFile,BufRead proftpd.conf*					call s:StarSetf('apachestyle')
2024
2025" More Apache config files
2026au BufNewFile,BufRead access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf*	call s:StarSetf('apache')
2027au BufNewFile,BufRead */etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf*		call s:StarSetf('apache')
2028
2029" Asterisk config file
2030au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
2031au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')
2032
2033" Bazaar version control
2034au BufNewFile,BufRead bzr_log.*			setf bzr
2035
2036" Bazel build file
2037if !has("fname_case")
2038  au BufNewFile,BufRead *.BUILD,BUILD			setf bzl
2039endif
2040
2041" BIND zone
2042au BufNewFile,BufRead */named/db.*,*/bind/db.*	call s:StarSetf('bindzone')
2043
2044" Calendar
2045au BufNewFile,BufRead */.calendar/*,
2046	\*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
2047	\					call s:StarSetf('calendar')
2048
2049" Changelog
2050au BufNewFile,BufRead [cC]hange[lL]og*
2051	\ if getline(1) =~ '; urgency='
2052	\|  call s:StarSetf('debchangelog')
2053	\|else
2054	\|  call s:StarSetf('changelog')
2055	\|endif
2056
2057" Crontab
2058au BufNewFile,BufRead crontab,crontab.*,*/etc/cron.d/*		call s:StarSetf('crontab')
2059
2060" dnsmasq(8) configuration
2061au BufNewFile,BufRead */etc/dnsmasq.d/*		call s:StarSetf('dnsmasq')
2062
2063" Dracula
2064au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')
2065
2066" Fvwm
2067au BufNewFile,BufRead */.fvwm/*			call s:StarSetf('fvwm')
2068au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
2069	\ let b:fvwm_version = 1 | call s:StarSetf('fvwm')
2070au BufNewFile,BufRead *fvwm2rc*
2071	\ if expand("<afile>:e") == "m4"
2072	\|  call s:StarSetf('fvwm2m4')
2073	\|else
2074	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
2075	\|endif
2076
2077" Gedcom
2078au BufNewFile,BufRead */tmp/lltmp*		call s:StarSetf('gedcom')
2079
2080" Git
2081au BufNewFile,BufRead */.gitconfig.d/*,/etc/gitconfig.d/*	call s:StarSetf('gitconfig')
2082
2083" Gitolite
2084au BufNewFile,BufRead */gitolite-admin/conf/*	call s:StarSetf('gitolite')
2085
2086" GTK RC
2087au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')
2088
2089" Jam
2090au BufNewFile,BufRead Prl*.*,JAM*.*		call s:StarSetf('jam')
2091
2092" Jargon
2093au! BufNewFile,BufRead *jarg*
2094	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE'
2095	\|  call s:StarSetf('jargon')
2096	\|endif
2097
2098" Java Properties resource file (note: doesn't catch font.properties.pl)
2099au BufNewFile,BufRead *.properties_??_??_*	call s:StarSetf('jproperties')
2100
2101" Kconfig
2102au BufNewFile,BufRead Kconfig.*			call s:StarSetf('kconfig')
2103
2104" Lilo: Linux loader
2105au BufNewFile,BufRead lilo.conf*		call s:StarSetf('lilo')
2106
2107" Logcheck
2108au BufNewFile,BufRead */etc/logcheck/*.d*/*	call s:StarSetf('logcheck')
2109
2110" Makefile
2111au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
2112
2113" Ruby Makefile
2114au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
2115
2116" Mail (also matches muttrc.vim, so this is below the other checks)
2117au BufNewFile,BufRead {neo,}mutt[[:alnum:]._-]\\\{6\}	setf mail
2118
2119au BufNewFile,BufRead reportbug-*		call s:StarSetf('mail')
2120
2121" Modconf
2122au BufNewFile,BufRead */etc/modutils/*
2123	\ if executable(expand("<afile>")) != 1
2124	\|  call s:StarSetf('modconf')
2125	\|endif
2126au BufNewFile,BufRead */etc/modprobe.*		call s:StarSetf('modconf')
2127
2128" Mutt setup file
2129au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
2130au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')
2131
2132" Neomutt setup file
2133au BufNewFile,BufRead .neomuttrc*,*/.neomutt/neomuttrc*	call s:StarSetf('neomuttrc')
2134au BufNewFile,BufRead neomuttrc*,Neomuttrc*		call s:StarSetf('neomuttrc')
2135
2136" Nroff macros
2137au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')
2138
2139" OpenBSD hostname.if
2140au BufNewFile,BufRead /etc/hostname.*		call s:StarSetf('config')
2141
2142" Pam conf
2143au BufNewFile,BufRead */etc/pam.d/*		call s:StarSetf('pamconf')
2144
2145" Printcap and Termcap
2146au BufNewFile,BufRead *printcap*
2147	\ if !did_filetype()
2148	\|  let b:ptcap_type = "print" | call s:StarSetf('ptcap')
2149	\|endif
2150au BufNewFile,BufRead *termcap*
2151	\ if !did_filetype()
2152	\|  let b:ptcap_type = "term" | call s:StarSetf('ptcap')
2153	\|endif
2154
2155" ReDIF
2156" Only used when the .rdf file was not detected to be XML.
2157au BufRead,BufNewFile *.rdf			call dist#ft#Redif()
2158
2159" Remind
2160au BufNewFile,BufRead .reminders*		call s:StarSetf('remind')
2161
2162" SGML catalog file
2163au BufNewFile,BufRead sgml.catalog*		call s:StarSetf('catalog')
2164
2165" Shell scripts ending in a star
2166au BufNewFile,BufRead .bashrc*,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,bash-fc[-.]*,,PKGBUILD* call dist#ft#SetFileTypeSH("bash")
2167au BufNewFile,BufRead .kshrc* call dist#ft#SetFileTypeSH("ksh")
2168au BufNewFile,BufRead .profile* call dist#ft#SetFileTypeSH(getline(1))
2169
2170" tcsh scripts ending in a star
2171au BufNewFile,BufRead .tcshrc*	call dist#ft#SetFileTypeShell("tcsh")
2172
2173" csh scripts ending in a star
2174au BufNewFile,BufRead .login*,.cshrc*  call dist#ft#CSH()
2175
2176" VHDL
2177au BufNewFile,BufRead *.vhdl_[0-9]*		call s:StarSetf('vhdl')
2178
2179" Vim script
2180au BufNewFile,BufRead *vimrc*			call s:StarSetf('vim')
2181
2182" Subversion commit file
2183au BufNewFile,BufRead svn-commit*.tmp		setf svn
2184
2185" X resources file
2186au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults')
2187
2188" XFree86 config
2189au BufNewFile,BufRead XF86Config-4*
2190	\ let b:xf86conf_xfree86_version = 4 | call s:StarSetf('xf86conf')
2191au BufNewFile,BufRead XF86Config*
2192	\ if getline(1) =~ '\<XConfigurator\>'
2193	\|  let b:xf86conf_xfree86_version = 3
2194	\|endif
2195	\|call s:StarSetf('xf86conf')
2196
2197" X11 xmodmap
2198au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')
2199
2200" Xinetd conf
2201au BufNewFile,BufRead */etc/xinetd.d/*		call s:StarSetf('xinetd')
2202
2203" yum conf (close enough to dosini)
2204au BufNewFile,BufRead */etc/yum.repos.d/*	call s:StarSetf('dosini')
2205
2206" Z-Shell script ending in a star
2207au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump*  call s:StarSetf('zsh')
2208au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
2209
2210
2211" Plain text files, needs to be far down to not override others.  This avoids
2212" the "conf" type being used if there is a line starting with '#'.
2213au BufNewFile,BufRead *.text,README		setf text
2214
2215" Help files match *.txt but should have a last line that is a modeline.
2216au BufNewFile,BufRead *.txt
2217	\  if getline('$') !~ 'vim:.*ft=help'
2218	\|   setf text
2219	\| endif
2220
2221
2222" Use the filetype detect plugins.  They may overrule any of the previously
2223" detected filetypes.
2224runtime! ftdetect/*.vim
2225
2226" NOTE: The above command could have ended the filetypedetect autocmd group
2227" and started another one. Let's make sure it has ended to get to a consistent
2228" state.
2229augroup END
2230
2231" Generic configuration file. Use FALLBACK, it's just guessing!
2232au filetypedetect BufNewFile,BufRead,StdinReadPost *
2233	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
2234	\    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
2235	\	|| getline(4) =~ '^#' || getline(5) =~ '^#') |
2236	\   setf FALLBACK conf |
2237	\ endif
2238
2239
2240" If the GUI is already running, may still need to install the Syntax menu.
2241" Don't do it when the 'M' flag is included in 'guioptions'.
2242if has("menu") && has("gui_running")
2243      \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
2244  source <sfile>:p:h/menu.vim
2245endif
2246
2247" Function called for testing all functions defined here.  These are
2248" script-local, thus need to be executed here.
2249" Returns a string with error messages (hopefully empty).
2250func! TestFiletypeFuncs(testlist)
2251  let output = ''
2252  for f in a:testlist
2253    try
2254      exe f
2255    catch
2256      let output = output . "\n" . f . ": " . v:exception
2257    endtry
2258  endfor
2259  return output
2260endfunc
2261
2262" Restore 'cpoptions'
2263let &cpo = s:cpo_save
2264unlet s:cpo_save
2265