xref: /vim-8.2.3635/runtime/filetype.vim (revision ebd211c8)
1" Vim support file to detect file types
2"
3" Maintainer:	Bram Moolenaar <[email protected]>
4" Last Change:	2021 Jan 21
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" Dune
503au BufNewFile,BufRead jbuild,dune,dune-project,dune-workspace setf dune
504
505" Dylan - lid files
506au BufNewFile,BufRead *.lid			setf dylanlid
507
508" Dylan - intr files (melange)
509au BufNewFile,BufRead *.intr			setf dylanintr
510
511" Dylan
512au BufNewFile,BufRead *.dylan			setf dylan
513
514" Microsoft Module Definition
515au BufNewFile,BufRead *.def			setf def
516
517" Dracula
518au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe	setf dracula
519
520" Datascript
521au BufNewFile,BufRead *.ds			setf datascript
522
523" dsl
524au BufNewFile,BufRead *.dsl			setf dsl
525
526" DTD (Document Type Definition for XML)
527au BufNewFile,BufRead *.dtd			setf dtd
528
529" DTS/DSTI (device tree files)
530au BufNewFile,BufRead *.dts,*.dtsi		setf dts
531
532" EDIF (*.edf,*.edif,*.edn,*.edo) or edn
533au BufNewFile,BufRead *.ed\(f\|if\|o\)		setf edif
534au BufNewFile,BufRead *.edn
535	\ if getline(1) =~ '^\s*(\s*edif\>' |
536	\   setf edif |
537	\ else |
538	\   setf clojure |
539	\ endif
540
541" EditorConfig (close enough to dosini)
542au BufNewFile,BufRead .editorconfig		setf dosini
543
544" Embedix Component Description
545au BufNewFile,BufRead *.ecd			setf ecd
546
547" Eiffel or Specman or Euphoria
548au BufNewFile,BufRead *.e,*.E			call dist#ft#FTe()
549
550" Elinks configuration
551au BufNewFile,BufRead elinks.conf		setf elinks
552
553" ERicsson LANGuage; Yaws is erlang too
554au BufNewFile,BufRead *.erl,*.hrl,*.yaws	setf erlang
555
556" Elm
557au BufNewFile,BufRead *.elm			setf elm
558
559" Elm Filter Rules file
560au BufNewFile,BufRead filter-rules		setf elmfilt
561
562" ESMTP rc file
563au BufNewFile,BufRead *esmtprc			setf esmtprc
564
565" ESQL-C
566au BufNewFile,BufRead *.ec,*.EC			setf esqlc
567
568" Esterel
569au BufNewFile,BufRead *.strl			setf esterel
570
571" Essbase script
572au BufNewFile,BufRead *.csc			setf csc
573
574" Exim
575au BufNewFile,BufRead exim.conf			setf exim
576
577" Expect
578au BufNewFile,BufRead *.exp			setf expect
579
580" Exports
581au BufNewFile,BufRead exports			setf exports
582
583" Falcon
584au BufNewFile,BufRead *.fal			setf falcon
585
586" Fantom
587au BufNewFile,BufRead *.fan,*.fwt		setf fan
588
589" Factor
590au BufNewFile,BufRead *.factor			setf factor
591
592" Fennel
593autocmd BufRead,BufNewFile *.fnl 		setf fennel
594
595" Fetchmail RC file
596au BufNewFile,BufRead .fetchmailrc		setf fetchmail
597
598" FlexWiki - disabled, because it has side effects when a .wiki file
599" is not actually FlexWiki
600"au BufNewFile,BufRead *.wiki			setf flexwiki
601
602" Focus Executable
603au BufNewFile,BufRead *.fex,*.focexec		setf focexec
604
605" Focus Master file (but not for auto.master)
606au BufNewFile,BufRead auto.master		setf conf
607au BufNewFile,BufRead *.mas,*.master		setf master
608
609" Forth
610au BufNewFile,BufRead *.fs,*.ft,*.fth		setf forth
611
612" Reva Forth
613au BufNewFile,BufRead *.frt			setf reva
614
615" Fortran
616if has("fname_case")
617  au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95,*.F03,*.F08	 setf fortran
618endif
619au BufNewFile,BufRead   *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08  setf fortran
620
621" Framescript
622au BufNewFile,BufRead *.fsl			setf framescript
623
624" FStab
625au BufNewFile,BufRead fstab,mtab		setf fstab
626
627" GDB command files
628au BufNewFile,BufRead .gdbinit			setf gdb
629
630" GDMO
631au BufNewFile,BufRead *.mo,*.gdmo		setf gdmo
632
633" Gedcom
634au BufNewFile,BufRead *.ged,lltxxxxx.txt	setf gedcom
635
636" Gift (Moodle)
637autocmd BufRead,BufNewFile *.gift 		setf gift
638
639" Git
640au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG	setf gitcommit
641au BufNewFile,BufRead *.git/config,.gitconfig,/etc/gitconfig	setf gitconfig
642au BufNewFile,BufRead */.config/git/config			setf gitconfig
643au BufNewFile,BufRead .gitmodules,*.git/modules/*/config	setf gitconfig
644if !empty($XDG_CONFIG_HOME)
645  au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config		setf gitconfig
646endif
647au BufNewFile,BufRead git-rebase-todo		setf gitrebase
648au BufRead,BufNewFile .gitsendemail.msg.??????	setf gitsendemail
649au BufNewFile,BufRead .msg.[0-9]*
650      \ if getline(1) =~ '^From.*# This line is ignored.$' |
651      \   setf gitsendemail |
652      \ endif
653au BufNewFile,BufRead *.git/*
654      \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
655      \   setf git |
656      \ endif
657
658" Gkrellmrc
659au BufNewFile,BufRead gkrellmrc,gkrellmrc_?	setf gkrellmrc
660
661" GP scripts (2.0 and onward)
662au BufNewFile,BufRead *.gp,.gprc		setf gp
663
664" GPG
665au BufNewFile,BufRead */.gnupg/options		setf gpg
666au BufNewFile,BufRead */.gnupg/gpg.conf		setf gpg
667au BufNewFile,BufRead */usr/*/gnupg/options.skel setf gpg
668if !empty($GNUPGHOME)
669  au BufNewFile,BufRead $GNUPGHOME/options	setf gpg
670  au BufNewFile,BufRead $GNUPGHOME/gpg.conf	setf gpg
671endif
672
673" gnash(1) configuration files
674au BufNewFile,BufRead gnashrc,.gnashrc,gnashpluginrc,.gnashpluginrc setf gnash
675
676" Gitolite
677au BufNewFile,BufRead gitolite.conf		setf gitolite
678au BufNewFile,BufRead {,.}gitolite.rc,example.gitolite.rc	setf perl
679
680" Gnuplot scripts
681au BufNewFile,BufRead *.gpi			setf gnuplot
682
683" Go (Google)
684au BufNewFile,BufRead *.go			setf go
685
686" GrADS scripts
687au BufNewFile,BufRead *.gs			setf grads
688
689" Gretl
690au BufNewFile,BufRead *.gretl			setf gretl
691
692" Groovy
693au BufNewFile,BufRead *.gradle,*.groovy		setf groovy
694
695" GNU Server Pages
696au BufNewFile,BufRead *.gsp			setf gsp
697
698" Group file
699au 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
700
701" GTK RC
702au BufNewFile,BufRead .gtkrc,gtkrc		setf gtkrc
703
704" Haml
705au BufNewFile,BufRead *.haml			setf haml
706
707" Hamster Classic | Playground files
708au BufNewFile,BufRead *.hsm	  		setf hamster
709
710" Haskell
711au BufNewFile,BufRead *.hs,*.hsc,*.hs-boot	setf haskell
712au BufNewFile,BufRead *.lhs			setf lhaskell
713au BufNewFile,BufRead *.chs			setf chaskell
714au BufNewFile,BufRead cabal.project		setf cabalproject
715au BufNewFile,BufRead $HOME/.cabal/config	setf cabalconfig
716au BufNewFile,BufRead cabal.config		setf cabalconfig
717
718" Haste
719au BufNewFile,BufRead *.ht			setf haste
720au BufNewFile,BufRead *.htpp			setf hastepreproc
721
722" Hercules
723au BufNewFile,BufRead *.vc,*.ev,*.sum,*.errsum	setf hercules
724
725" HEX (Intel)
726au BufNewFile,BufRead *.hex,*.h32		setf hex
727
728" Hollywood
729au BufRead,BufNewFile *.hws			setf hollywood
730
731" Tilde (must be before HTML)
732au BufNewFile,BufRead *.t.html			setf tilde
733
734" HTML (.shtml and .stm for server side)
735au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm  call dist#ft#FThtml()
736
737" HTML with Ruby - eRuby
738au BufNewFile,BufRead *.erb,*.rhtml		setf eruby
739
740" HTML with M4
741au BufNewFile,BufRead *.html.m4			setf htmlm4
742
743" Some template.  Used to be HTML Cheetah.
744au BufNewFile,BufRead *.tmpl			setf template
745
746" Host config
747au BufNewFile,BufRead */etc/host.conf		setf hostconf
748
749" Hosts access
750au BufNewFile,BufRead */etc/hosts.allow,*/etc/hosts.deny  setf hostsaccess
751
752" Hyper Builder
753au BufNewFile,BufRead *.hb			setf hb
754
755" Httest
756au BufNewFile,BufRead *.htt,*.htb		setf httest
757
758" Icon
759au BufNewFile,BufRead *.icn			setf icon
760
761" IDL (Interface Description Language)
762au BufNewFile,BufRead *.idl			call dist#ft#FTidl()
763
764" Microsoft IDL (Interface Description Language)  Also *.idl
765" MOF = WMI (Windows Management Instrumentation) Managed Object Format
766au BufNewFile,BufRead *.odl,*.mof		setf msidl
767
768" Icewm menu
769au BufNewFile,BufRead */.icewm/menu		setf icemenu
770
771" Indent profile (must come before IDL *.pro!)
772au BufNewFile,BufRead .indent.pro		setf indent
773au BufNewFile,BufRead indent.pro		call dist#ft#ProtoCheck('indent')
774
775" IDL (Interactive Data Language)
776au BufNewFile,BufRead *.pro			call dist#ft#ProtoCheck('idlang')
777
778" Indent RC
779au BufNewFile,BufRead indentrc			setf indent
780
781" Inform
782au BufNewFile,BufRead *.inf,*.INF		setf inform
783
784" Initng
785au BufNewFile,BufRead */etc/initng/*/*.i,*.ii	setf initng
786
787" Innovation Data Processing
788au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c	setf upstreamdat
789au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c	setf upstreamlog
790au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog
791au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c	setf usserverlog
792au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c	setf usw2kagtlog
793
794" Ipfilter
795au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules	setf ipfilter
796
797" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
798au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl	setf fgl
799
800" .INI file for MSDOS
801au BufNewFile,BufRead *.ini			setf dosini
802
803" SysV Inittab
804au BufNewFile,BufRead inittab			setf inittab
805
806" Inno Setup
807au BufNewFile,BufRead *.iss			setf iss
808
809" J
810au BufNewFile,BufRead *.ijs			setf j
811
812" JAL
813au BufNewFile,BufRead *.jal,*.JAL		setf jal
814
815" Jam
816au BufNewFile,BufRead *.jpl,*.jpr		setf jam
817
818" Java
819au BufNewFile,BufRead *.java,*.jav		setf java
820
821" JavaCC
822au BufNewFile,BufRead *.jj,*.jjt		setf javacc
823
824" JavaScript, ECMAScript, ES module script, CommonJS script
825au BufNewFile,BufRead *.js,*.javascript,*.es,*.mjs,*.cjs   setf javascript
826
827" JavaScript with React
828au BufNewFile,BufRead *.jsx			setf javascriptreact
829
830" Java Server Pages
831au BufNewFile,BufRead *.jsp			setf jsp
832
833" Java Properties resource file (note: doesn't catch font.properties.pl)
834au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_??	setf jproperties
835
836" Jess
837au BufNewFile,BufRead *.clp			setf jess
838
839" Jgraph
840au BufNewFile,BufRead *.jgr			setf jgraph
841
842" Jovial
843au BufNewFile,BufRead *.jov,*.j73,*.jovial	setf jovial
844
845" JSON
846au BufNewFile,BufRead *.json,*.jsonp,*.webmanifest	setf json
847
848" Kixtart
849au BufNewFile,BufRead *.kix			setf kix
850
851" Kimwitu[++]
852au BufNewFile,BufRead *.k			setf kwt
853
854" Kivy
855au BufNewFile,BufRead *.kv			setf kivy
856
857" Kotlin
858au BufNewFile,BufRead *.kt,*.ktm,*.kts		setf kotlin
859
860" KDE script
861au BufNewFile,BufRead *.ks			setf kscript
862
863" Kconfig
864au BufNewFile,BufRead Kconfig,Kconfig.debug	setf kconfig
865
866" Lace (ISE)
867au BufNewFile,BufRead *.ace,*.ACE		setf lace
868
869" Latte
870au BufNewFile,BufRead *.latte,*.lte		setf latte
871
872" Limits
873au BufNewFile,BufRead */etc/limits,*/etc/*limits.conf,*/etc/*limits.d/*.conf	setf limits
874
875" LambdaProlog (*.mod too, see Modsim)
876au BufNewFile,BufRead *.sig			setf lprolog
877
878" LDAP LDIF
879au BufNewFile,BufRead *.ldif			setf ldif
880
881" Ld loader
882au BufNewFile,BufRead *.ld			setf ld
883
884" Less
885au BufNewFile,BufRead *.less			setf less
886
887" Lex
888au BufNewFile,BufRead *.lex,*.l,*.lxx,*.l++	setf lex
889
890" Libao
891au BufNewFile,BufRead */etc/libao.conf,*/.libao	setf libao
892
893" Libsensors
894au BufNewFile,BufRead */etc/sensors.conf,*/etc/sensors3.conf	setf sensors
895
896" LFTP
897au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc	setf lftp
898
899" Lifelines (or Lex for C++!)
900au BufNewFile,BufRead *.ll			setf lifelines
901
902" Lilo: Linux loader
903au BufNewFile,BufRead lilo.conf			setf lilo
904
905" Lisp (*.el = ELisp, *.cl = Common Lisp)
906" *.jl was removed, it's also used for Julia, better skip than guess wrong.
907if has("fname_case")
908  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.L,.emacs,.sawfishrc setf lisp
909else
910  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,.emacs,.sawfishrc setf lisp
911endif
912
913" SBCL implementation of Common Lisp
914au BufNewFile,BufRead sbclrc,.sbclrc		setf lisp
915
916" Liquid
917au BufNewFile,BufRead *.liquid			setf liquid
918
919" Lite
920au BufNewFile,BufRead *.lite,*.lt		setf lite
921
922" LiteStep RC files
923au BufNewFile,BufRead */LiteStep/*/*.rc		setf litestep
924
925" Login access
926au BufNewFile,BufRead */etc/login.access	setf loginaccess
927
928" Login defs
929au BufNewFile,BufRead */etc/login.defs		setf logindefs
930
931" Logtalk
932au BufNewFile,BufRead *.lgt			setf logtalk
933
934" LOTOS
935au BufNewFile,BufRead *.lot,*.lotos		setf lotos
936
937" Lout (also: *.lt)
938au BufNewFile,BufRead *.lou,*.lout		setf lout
939
940" Lua
941au BufNewFile,BufRead *.lua			setf lua
942
943" Luarocks
944au BufNewFile,BufRead *.rockspec		setf lua
945
946" Linden Scripting Language (Second Life)
947au BufNewFile,BufRead *.lsl			setf lsl
948
949" Lynx style file (or LotusScript!)
950au BufNewFile,BufRead *.lss			setf lss
951
952" M4
953au BufNewFile,BufRead *.m4
954	\ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif
955
956" MaGic Point
957au BufNewFile,BufRead *.mgp			setf mgp
958
959" Mail (for Elm, trn, mutt, muttng, rn, slrn, neomutt)
960au 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
961
962" Mail aliases
963au BufNewFile,BufRead */etc/mail/aliases,*/etc/aliases	setf mailaliases
964
965" Mailcap configuration file
966au BufNewFile,BufRead .mailcap,mailcap		setf mailcap
967
968" Makefile
969au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make
970
971" MakeIndex
972au BufNewFile,BufRead *.ist,*.mst		setf ist
973
974" Mallard
975au BufNewFile,BufRead *.page			setf mallard
976
977" Manpage
978au BufNewFile,BufRead *.man			setf man
979
980" Man config
981au BufNewFile,BufRead */etc/man.conf,man.config	setf manconf
982
983" Maple V
984au BufNewFile,BufRead *.mv,*.mpl,*.mws		setf maple
985
986" Map (UMN mapserver config file)
987au BufNewFile,BufRead *.map			setf map
988
989" Markdown
990au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md  setf markdown
991
992" Mason
993au BufNewFile,BufRead *.mason,*.mhtml,*.comp	setf mason
994
995" Mathematica, Matlab, Murphi or Objective C
996au BufNewFile,BufRead *.m			call dist#ft#FTm()
997
998" Mathematica notebook
999au BufNewFile,BufRead *.nb			setf mma
1000
1001" Maya Extension Language
1002au BufNewFile,BufRead *.mel			setf mel
1003
1004" Mercurial (hg) commit file
1005au BufNewFile,BufRead hg-editor-*.txt		setf hgcommit
1006
1007" Mercurial config (looks like generic config file)
1008au BufNewFile,BufRead *.hgrc,*hgrc		setf cfg
1009
1010" Meson Build system config
1011au BufNewFile,BufRead meson.build,meson_options.txt setf meson
1012
1013" Messages (logs mostly)
1014au 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
1015
1016" Metafont
1017au BufNewFile,BufRead *.mf			setf mf
1018
1019" MetaPost
1020au BufNewFile,BufRead *.mp			setf mp
1021
1022" MGL
1023au BufNewFile,BufRead *.mgl			setf mgl
1024
1025" MIX - Knuth assembly
1026au BufNewFile,BufRead *.mix,*.mixal		setf mix
1027
1028" MMIX or VMS makefile
1029au BufNewFile,BufRead *.mms			call dist#ft#FTmms()
1030
1031" Symbian meta-makefile definition (MMP)
1032au BufNewFile,BufRead *.mmp			setf mmp
1033
1034" Modsim III (or LambdaProlog)
1035au BufNewFile,BufRead *.mod
1036	\ if getline(1) =~ '\<module\>' |
1037	\   setf lprolog |
1038	\ else |
1039	\   setf modsim3 |
1040	\ endif
1041
1042" Modula 2  (.md removed in favor of Markdown)
1043au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi	setf modula2
1044
1045" Modula 3 (.m3, .i3, .mg, .ig)
1046au BufNewFile,BufRead *.[mi][3g]		setf modula3
1047
1048" Monk
1049au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc	setf monk
1050
1051" MOO
1052au BufNewFile,BufRead *.moo			setf moo
1053
1054" Modconf
1055au BufNewFile,BufRead */etc/modules.conf,*/etc/modules,*/etc/conf.modules setf modconf
1056
1057" Mplayer config
1058au BufNewFile,BufRead mplayer.conf,*/.mplayer/config	setf mplayerconf
1059
1060" Motorola S record
1061au BufNewFile,BufRead *.s19,*.s28,*.s37,*.mot,*.srec	setf srec
1062
1063" Mrxvtrc
1064au BufNewFile,BufRead mrxvtrc,.mrxvtrc		setf mrxvtrc
1065
1066" Msql
1067au BufNewFile,BufRead *.msql			setf msql
1068
1069" Mysql
1070au BufNewFile,BufRead *.mysql			setf mysql
1071
1072" Mutt setup files (must be before catch *.rc)
1073au BufNewFile,BufRead */etc/Muttrc.d/*		call s:StarSetf('muttrc')
1074
1075" M$ Resource files
1076au BufNewFile,BufRead *.rc,*.rch		setf rc
1077
1078" MuPAD source
1079au BufRead,BufNewFile *.mu			setf mupad
1080
1081" Mush
1082au BufNewFile,BufRead *.mush			setf mush
1083
1084" Mutt setup file (also for Muttng)
1085au BufNewFile,BufRead Mutt{ng,}rc		setf muttrc
1086
1087" N1QL
1088au BufRead,BufNewfile *.n1ql,*.nql		setf n1ql
1089
1090" Nano
1091au BufNewFile,BufRead */etc/nanorc,*.nanorc	setf nanorc
1092
1093" Nastran input/DMAP
1094"au BufNewFile,BufRead *.dat			setf nastran
1095
1096" Natural
1097au BufNewFile,BufRead *.NS[ACGLMNPS]		setf natural
1098
1099" Noemutt setup file
1100au BufNewFile,BufRead Neomuttrc			setf neomuttrc
1101
1102" Netrc
1103au BufNewFile,BufRead .netrc			setf netrc
1104
1105" Ninja file
1106au BufNewFile,BufRead *.ninja			setf ninja
1107
1108" NPM RC file
1109au BufNewFile,BufRead npmrc,.npmrc		setf dosini
1110
1111" Novell netware batch files
1112au BufNewFile,BufRead *.ncf			setf ncf
1113
1114" Nroff/Troff (*.ms and *.t are checked below)
1115au BufNewFile,BufRead *.me
1116	\ if expand("<afile>") != "read.me" && expand("<afile>") != "click.me" |
1117	\   setf nroff |
1118	\ endif
1119au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom	setf nroff
1120au BufNewFile,BufRead *.[1-9]			call dist#ft#FTnroff()
1121
1122" Nroff or Objective C++
1123au BufNewFile,BufRead *.mm			call dist#ft#FTmm()
1124
1125" Not Quite C
1126au BufNewFile,BufRead *.nqc			setf nqc
1127
1128" NSE - Nmap Script Engine - uses Lua syntax
1129au BufNewFile,BufRead *.nse			setf lua
1130
1131" NSIS
1132au BufNewFile,BufRead *.nsi,*.nsh		setf nsis
1133
1134" OCaml
1135au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit,*.mlt,*.mlp,*.mlip,*.mli.cppo,*.ml.cppo setf ocaml
1136
1137" Occam
1138au BufNewFile,BufRead *.occ			setf occam
1139
1140" Omnimark
1141au BufNewFile,BufRead *.xom,*.xin		setf omnimark
1142
1143" OPAM
1144au BufNewFile,BufRead opam,*.opam,*.opam.template setf opam
1145
1146" OpenROAD
1147au BufNewFile,BufRead *.or			setf openroad
1148
1149" OPL
1150au BufNewFile,BufRead *.[Oo][Pp][Ll]		setf opl
1151
1152" Oracle config file
1153au BufNewFile,BufRead *.ora			setf ora
1154
1155" Packet filter conf
1156au BufNewFile,BufRead pf.conf			setf pf
1157
1158" Pacman Config (close enough to dosini)
1159au BufNewFile,BufRead */etc/pacman.conf		setf dosini
1160
1161" Pacman hooks
1162au BufNewFile,BufRead *.hook
1163	\ if getline(1) == '[Trigger]' |
1164	\   setf dosini |
1165	\ endif
1166
1167" Pam conf
1168au BufNewFile,BufRead */etc/pam.conf			setf pamconf
1169
1170" Pam environment
1171au BufNewFile,BufRead pam_env.conf,.pam_environment	setf pamenv
1172
1173" PApp
1174au BufNewFile,BufRead *.papp,*.pxml,*.pxsl	setf papp
1175
1176" Password file
1177au 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
1178
1179" Pascal (also *.p, *.pp, *.inc)
1180au BufNewFile,BufRead *.pas			setf pascal
1181
1182" Pascal or Puppet manifest
1183au BufNewFile,BufRead *.pp			call dist#ft#FTpp()
1184
1185" Delphi or Lazarus program file
1186au BufNewFile,BufRead *.dpr,*.lpr		setf pascal
1187
1188" PDF
1189au BufNewFile,BufRead *.pdf			setf pdf
1190
1191" PCMK - HAE - crm configure edit
1192au BufNewFile,BufRead *.pcmk			setf pcmk
1193
1194" Perl
1195if has("fname_case")
1196  au BufNewFile,BufRead *.pl,*.PL		call dist#ft#FTpl()
1197else
1198  au BufNewFile,BufRead *.pl			call dist#ft#FTpl()
1199endif
1200au BufNewFile,BufRead *.plx,*.al,*.psgi		setf perl
1201au BufNewFile,BufRead *.p6,*.pm6,*.pl6		setf perl6
1202au BufNewFile,BufRead *.raku,*.rakumod		setf perl6
1203
1204" Perl, XPM or XPM2
1205au BufNewFile,BufRead *.pm
1206	\ if getline(1) =~ "XPM2" |
1207	\   setf xpm2 |
1208	\ elseif getline(1) =~ "XPM" |
1209	\   setf xpm |
1210	\ else |
1211	\   setf perl |
1212	\ endif
1213
1214" Perl POD
1215au BufNewFile,BufRead *.pod			setf pod
1216au BufNewFile,BufRead *.pod6			setf pod6
1217
1218" Php, php3, php4, etc.
1219" Also Phtml (was used for PHP 2 in the past)
1220" Also .ctp for Cake template file
1221au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp	setf php
1222
1223" PHP config
1224au BufNewFile,BufRead php.ini-*			setf dosini
1225
1226" Pike and Cmod
1227au BufNewFile,BufRead *.pike,*.pmod		setf pike
1228au BufNewFile,BufRead *.cmod			setf cmod
1229
1230" Pinfo config
1231au BufNewFile,BufRead */etc/pinforc,*/.pinforc	setf pinfo
1232
1233" Palm Resource compiler
1234au BufNewFile,BufRead *.rcp			setf pilrc
1235
1236" Pine config
1237au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex		setf pine
1238
1239" Pipenv Pipfiles
1240au BufNewFile,BufRead Pipfile			setf config
1241au BufNewFile,BufRead Pipfile.lock		setf json
1242
1243" PL/1, PL/I
1244au BufNewFile,BufRead *.pli,*.pl1		setf pli
1245
1246" PL/M (also: *.inp)
1247au BufNewFile,BufRead *.plm,*.p36,*.pac		setf plm
1248
1249" PL/SQL
1250au BufNewFile,BufRead *.pls,*.plsql		setf plsql
1251
1252" PLP
1253au BufNewFile,BufRead *.plp			setf plp
1254
1255" PO and PO template (GNU gettext)
1256au BufNewFile,BufRead *.po,*.pot		setf po
1257
1258" Postfix main config
1259au BufNewFile,BufRead main.cf			setf pfmain
1260
1261" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator)
1262au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai	  setf postscr
1263
1264" PostScript Printer Description
1265au BufNewFile,BufRead *.ppd			setf ppd
1266
1267" Povray
1268au BufNewFile,BufRead *.pov			setf pov
1269
1270" Povray configuration
1271au BufNewFile,BufRead .povrayrc			setf povini
1272
1273" Povray, Pascal, PHP or assembly
1274au BufNewFile,BufRead *.inc			call dist#ft#FTinc()
1275
1276" Printcap and Termcap
1277au BufNewFile,BufRead *printcap
1278	\ let b:ptcap_type = "print" | setf ptcap
1279au BufNewFile,BufRead *termcap
1280	\ let b:ptcap_type = "term" | setf ptcap
1281
1282" PCCTS / ANTLR
1283"au BufNewFile,BufRead *.g			setf antlr
1284au BufNewFile,BufRead *.g			setf pccts
1285
1286" PPWizard
1287au BufNewFile,BufRead *.it,*.ih			setf ppwiz
1288
1289" Puppet
1290au BufNewFile,BufRead Puppetfile		setf ruby
1291
1292" Embedded Puppet
1293au BufNewFile,BufRead *.epp			setf epuppet
1294
1295" Obj 3D file format
1296" TODO: is there a way to avoid MS-Windows Object files?
1297au BufNewFile,BufRead *.obj			setf obj
1298
1299" Oracle Pro*C/C++
1300au BufNewFile,BufRead *.pc			setf proc
1301
1302" Privoxy actions file
1303au BufNewFile,BufRead *.action			setf privoxy
1304
1305" Procmail
1306au BufNewFile,BufRead .procmail,.procmailrc	setf procmail
1307
1308" Progress or CWEB
1309au BufNewFile,BufRead *.w			call dist#ft#FTprogress_cweb()
1310
1311" Progress or assembly
1312au BufNewFile,BufRead *.i			call dist#ft#FTprogress_asm()
1313
1314" Progress or Pascal
1315au BufNewFile,BufRead *.p			call dist#ft#FTprogress_pascal()
1316
1317" Software Distributor Product Specification File (POSIX 1387.2-1995)
1318au BufNewFile,BufRead *.psf			setf psf
1319au BufNewFile,BufRead INDEX,INFO
1320	\ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
1321	\   setf psf |
1322	\ endif
1323
1324" Prolog
1325au BufNewFile,BufRead *.pdb			setf prolog
1326
1327" Promela
1328au BufNewFile,BufRead *.pml			setf promela
1329
1330" Google protocol buffers
1331au BufNewFile,BufRead *.proto			setf proto
1332au BufNewFile,BufRead *.pbtxt			setf pbtxt
1333
1334" Protocols
1335au BufNewFile,BufRead */etc/protocols		setf protocols
1336
1337" Pyrex
1338au BufNewFile,BufRead *.pyx,*.pxd		setf pyrex
1339
1340" Python, Python Shell Startup and Python Stub Files
1341" Quixote (Python-based web framework)
1342au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc  setf python
1343au BufNewFile,BufRead *.ptl,*.pyi,SConstruct		   setf python
1344
1345" Radiance
1346au BufNewFile,BufRead *.rad,*.mat		setf radiance
1347
1348" Ratpoison config/command files
1349au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc	setf ratpoison
1350
1351" RCS file
1352au BufNewFile,BufRead *\,v			setf rcs
1353
1354" Readline
1355au BufNewFile,BufRead .inputrc,inputrc		setf readline
1356
1357" Registry for MS-Windows
1358au BufNewFile,BufRead *.reg
1359	\ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif
1360
1361" Renderman Interface Bytestream
1362au BufNewFile,BufRead *.rib			setf rib
1363
1364" Rego Policy Language
1365au BufNewFile,BufRead *.rego			setf rego
1366
1367" Rexx
1368au BufNewFile,BufRead *.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit	setf rexx
1369
1370" R Help file
1371if has("fname_case")
1372  au BufNewFile,BufRead *.rd,*.Rd		setf rhelp
1373else
1374  au BufNewFile,BufRead *.rd			setf rhelp
1375endif
1376
1377" R noweb file
1378if has("fname_case")
1379  au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw		setf rnoweb
1380else
1381  au BufNewFile,BufRead *.rnw,*.snw			setf rnoweb
1382endif
1383
1384" R Markdown file
1385if has("fname_case")
1386  au BufNewFile,BufRead *.Rmd,*.rmd,*.Smd,*.smd		setf rmd
1387else
1388  au BufNewFile,BufRead *.rmd,*.smd			setf rmd
1389endif
1390
1391" R reStructuredText file
1392if has("fname_case")
1393  au BufNewFile,BufRead *.Rrst,*.rrst,*.Srst,*.srst	setf rrst
1394else
1395  au BufNewFile,BufRead *.rrst,*.srst			setf rrst
1396endif
1397
1398" Rexx, Rebol or R
1399au BufNewFile,BufRead *.r,*.R				call dist#ft#FTr()
1400
1401" Remind
1402au BufNewFile,BufRead .reminders,*.remind,*.rem		setf remind
1403
1404" Resolv.conf
1405au BufNewFile,BufRead resolv.conf		setf resolv
1406
1407" Relax NG Compact
1408au BufNewFile,BufRead *.rnc			setf rnc
1409
1410" Relax NG XML
1411au BufNewFile,BufRead *.rng			setf rng
1412
1413" RPL/2
1414au BufNewFile,BufRead *.rpl			setf rpl
1415
1416" Robots.txt
1417au BufNewFile,BufRead robots.txt		setf robots
1418
1419" Rpcgen
1420au BufNewFile,BufRead *.x			setf rpcgen
1421
1422" reStructuredText Documentation Format
1423au BufNewFile,BufRead *.rst			setf rst
1424
1425" RTF
1426au BufNewFile,BufRead *.rtf			setf rtf
1427
1428" Interactive Ruby shell
1429au BufNewFile,BufRead .irbrc,irbrc		setf ruby
1430
1431" Ruby
1432au BufNewFile,BufRead *.rb,*.rbw		setf ruby
1433
1434" RubyGems
1435au BufNewFile,BufRead *.gemspec			setf ruby
1436
1437" RBS (Ruby Signature)
1438au BufNewFile,BufRead *.rbs			setf rbs
1439
1440" Rackup
1441au BufNewFile,BufRead *.ru			setf ruby
1442
1443" Bundler
1444au BufNewFile,BufRead Gemfile			setf ruby
1445
1446" Ruby on Rails
1447au BufNewFile,BufRead *.builder,*.rxml,*.rjs	setf ruby
1448
1449" Rantfile and Rakefile is like Ruby
1450au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake	setf ruby
1451
1452" Rust
1453au BufNewFile,BufRead *.rs			setf rust
1454
1455" S-lang (or shader language, or SmallLisp)
1456au BufNewFile,BufRead *.sl			setf slang
1457
1458" Samba config
1459au BufNewFile,BufRead smb.conf			setf samba
1460
1461" SAS script
1462au BufNewFile,BufRead *.sas			setf sas
1463
1464" Sass
1465au BufNewFile,BufRead *.sass			setf sass
1466
1467" Sather
1468au BufNewFile,BufRead *.sa			setf sather
1469
1470" Scala
1471au BufNewFile,BufRead *.scala			setf scala
1472
1473" SBT - Scala Build Tool
1474au BufNewFile,BufRead *.sbt			setf sbt
1475
1476" Scilab
1477au BufNewFile,BufRead *.sci,*.sce		setf scilab
1478
1479" SCSS
1480au BufNewFile,BufRead *.scss			setf scss
1481
1482" SD: Streaming Descriptors
1483au BufNewFile,BufRead *.sd			setf sd
1484
1485" SDL
1486au BufNewFile,BufRead *.sdl,*.pr		setf sdl
1487
1488" sed
1489au BufNewFile,BufRead *.sed			setf sed
1490
1491" Sieve (RFC 3028, 5228)
1492au BufNewFile,BufRead *.siv,*.sieve		setf sieve
1493
1494" Sendmail
1495au BufNewFile,BufRead sendmail.cf		setf sm
1496
1497" Sendmail .mc files are actually m4.  Could also be MS Message text file.
1498au BufNewFile,BufRead *.mc			call dist#ft#McSetf()
1499
1500" Services
1501au BufNewFile,BufRead */etc/services		setf services
1502
1503" Service Location config
1504au BufNewFile,BufRead */etc/slp.conf		setf slpconf
1505
1506" Service Location registration
1507au BufNewFile,BufRead */etc/slp.reg		setf slpreg
1508
1509" Service Location SPI
1510au BufNewFile,BufRead */etc/slp.spi		setf slpspi
1511
1512" Setserial config
1513au BufNewFile,BufRead */etc/serial.conf		setf setserial
1514
1515" SGML
1516au BufNewFile,BufRead *.sgm,*.sgml
1517	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' |
1518	\   setf sgmllnx |
1519	\ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
1520	\   let b:docbk_type = "sgml" |
1521	\   let b:docbk_ver = 4 |
1522	\   setf docbk |
1523	\ else |
1524	\   setf sgml |
1525	\ endif
1526
1527" SGMLDECL
1528au BufNewFile,BufRead *.decl,*.dcl,*.dec
1529	\ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
1530	\    setf sgmldecl |
1531	\ endif
1532
1533" SGML catalog file
1534au BufNewFile,BufRead catalog			setf catalog
1535
1536" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
1537" Gentoo ebuilds, Arch Linux PKGBUILDs and Alpine Linux APKBUILDs are actually
1538" bash scripts.
1539" NOTE: Patterns ending in a star are further down, these have lower priority.
1540au BufNewFile,BufRead .bashrc,bashrc,bash.bashrc,.bash[_-]profile,.bash[_-]logout,.bash[_-]aliases,bash-fc[-.],*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass,PKGBUILD,APKBUILD call dist#ft#SetFileTypeSH("bash")
1541au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh")
1542au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env call dist#ft#SetFileTypeSH(getline(1))
1543
1544
1545" Shell script (Arch Linux) or PHP file (Drupal)
1546au BufNewFile,BufRead *.install
1547	\ if getline(1) =~ '<?php' |
1548	\   setf php |
1549	\ else |
1550	\   call dist#ft#SetFileTypeSH("bash") |
1551	\ endif
1552
1553" tcsh scripts (patterns ending in a star further below)
1554au BufNewFile,BufRead .tcshrc,*.tcsh,tcsh.tcshrc,tcsh.login	call dist#ft#SetFileTypeShell("tcsh")
1555
1556" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
1557" (patterns ending in a start further below)
1558au BufNewFile,BufRead .login,.cshrc,csh.cshrc,csh.login,csh.logout,*.csh,.alias  call dist#ft#CSH()
1559
1560" Z-Shell script (patterns ending in a star further below)
1561au BufNewFile,BufRead .zprofile,*/etc/zprofile,.zfbfmarks  setf zsh
1562au BufNewFile,BufRead .zshrc,.zshenv,.zlogin,.zlogout,.zcompdump setf zsh
1563au BufNewFile,BufRead *.zsh			setf zsh
1564
1565" Scheme
1566au BufNewFile,BufRead *.scm,*.ss,*.rkt		setf scheme
1567
1568" Screen RC
1569au BufNewFile,BufRead .screenrc,screenrc	setf screen
1570
1571" Sexplib
1572au BufNewFile,BufRead *.sexp setf sexplib
1573
1574" Simula
1575au BufNewFile,BufRead *.sim			setf simula
1576
1577" SINDA
1578au BufNewFile,BufRead *.sin,*.s85		setf sinda
1579
1580" SiSU
1581au BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst,*._sst setf sisu
1582au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
1583
1584" SKILL
1585au BufNewFile,BufRead *.il,*.ils,*.cdf		setf skill
1586
1587" SLRN
1588au BufNewFile,BufRead .slrnrc			setf slrnrc
1589au BufNewFile,BufRead *.score			setf slrnsc
1590
1591" Smalltalk (and TeX)
1592au BufNewFile,BufRead *.st			setf st
1593au BufNewFile,BufRead *.cls
1594	\ if getline(1) =~ '^%' |
1595	\  setf tex |
1596	\ elseif getline(1)[0] == '#' && getline(1) =~ 'rexx' |
1597	\  setf rexx |
1598	\ else |
1599	\  setf st |
1600	\ endif
1601
1602" Smarty templates
1603au BufNewFile,BufRead *.tpl			setf smarty
1604
1605" SMIL or XML
1606au BufNewFile,BufRead *.smil
1607	\ if getline(1) =~ '<?\s*xml.*?>' |
1608	\   setf xml |
1609	\ else |
1610	\   setf smil |
1611	\ endif
1612
1613" SMIL or SNMP MIB file
1614au BufNewFile,BufRead *.smi
1615	\ if getline(1) =~ '\<smil\>' |
1616	\   setf smil |
1617	\ else |
1618	\   setf mib |
1619	\ endif
1620
1621" SMITH
1622au BufNewFile,BufRead *.smt,*.smith		setf smith
1623
1624" Snobol4 and spitbol
1625au BufNewFile,BufRead *.sno,*.spt		setf snobol4
1626
1627" SNMP MIB files
1628au BufNewFile,BufRead *.mib,*.my		setf mib
1629
1630" Snort Configuration
1631au BufNewFile,BufRead *.hog,snort.conf,vision.conf	setf hog
1632au BufNewFile,BufRead *.rules			call dist#ft#FTRules()
1633
1634" SPARQL queries
1635au BufNewFile,BufRead *.rq,*.sparql		setf sparql
1636
1637" Spec (Linux RPM)
1638au BufNewFile,BufRead *.spec			setf spec
1639
1640" Speedup (AspenTech plant simulator)
1641au BufNewFile,BufRead *.speedup,*.spdata,*.spd	setf spup
1642
1643" Slice
1644au BufNewFile,BufRead *.ice			setf slice
1645
1646" Spice
1647au BufNewFile,BufRead *.sp,*.spice		setf spice
1648
1649" Spyce
1650au BufNewFile,BufRead *.spy,*.spi		setf spyce
1651
1652" Squid
1653au BufNewFile,BufRead squid.conf		setf squid
1654
1655" SQL for Oracle Designer
1656au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks	setf sql
1657
1658" SQL
1659au BufNewFile,BufRead *.sql			call dist#ft#SQL()
1660
1661" SQLJ
1662au BufNewFile,BufRead *.sqlj			setf sqlj
1663
1664" SQR
1665au BufNewFile,BufRead *.sqr,*.sqi		setf sqr
1666
1667" OpenSSH configuration
1668au BufNewFile,BufRead ssh_config,*/.ssh/config		setf sshconfig
1669au BufNewFile,BufRead */etc/ssh/ssh_config.d/*.conf	setf sshconfig
1670
1671" OpenSSH server configuration
1672au BufNewFile,BufRead sshd_config			setf sshdconfig
1673au BufNewFile,BufRead */etc/ssh/sshd_config.d/*.conf	setf sshdconfig
1674
1675" Stata
1676au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata	setf stata
1677" Also *.class, but not when it's a Java bytecode file
1678au BufNewFile,BufRead *.class
1679	\ if getline(1) !~ "^\xca\xfe\xba\xbe" | setf stata | endif
1680
1681" SMCL
1682au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl	setf smcl
1683
1684" Stored Procedures
1685au BufNewFile,BufRead *.stp			setf stp
1686
1687" Standard ML
1688au BufNewFile,BufRead *.sml			setf sml
1689
1690" Sratus VOS command macro
1691au BufNewFile,BufRead *.cm			setf voscm
1692
1693" Swift
1694au BufNewFile,BufRead *.swift			setf swift
1695au BufNewFile,BufRead *.swift.gyb		setf swiftgyb
1696
1697" Swift Intermediate Language
1698au BufNewFile,BufRead *.sil			setf sil
1699
1700" Sysctl
1701au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf	setf sysctl
1702
1703" Systemd unit files
1704au BufNewFile,BufRead */systemd/*.{automount,dnssd,link,mount,netdev,network,nspawn,path,service,slice,socket,swap,target,timer}	setf systemd
1705" Systemd overrides
1706au BufNewFile,BufRead */etc/systemd/*.conf.d/*.conf	setf systemd
1707au BufNewFile,BufRead */etc/systemd/system/*.d/*.conf	setf systemd
1708au BufNewFile,BufRead */.config/systemd/user/*.d/*.conf	setf systemd
1709" Systemd temp files
1710au BufNewFile,BufRead */etc/systemd/system/*.d/.#*	setf systemd
1711au BufNewFile,BufRead */etc/systemd/system/.#*		setf systemd
1712au BufNewFile,BufRead */.config/systemd/user/*.d/.#*	setf systemd
1713au BufNewFile,BufRead */.config/systemd/user/.#*	setf systemd
1714
1715" Synopsys Design Constraints
1716au BufNewFile,BufRead *.sdc			setf sdc
1717
1718" Sudoers
1719au BufNewFile,BufRead */etc/sudoers,sudoers.tmp	setf sudoers
1720
1721" SVG (Scalable Vector Graphics)
1722au BufNewFile,BufRead *.svg			setf svg
1723
1724" Tads (or Nroff or Perl test file)
1725au BufNewFile,BufRead *.t
1726	\ if !dist#ft#FTnroff() && !dist#ft#FTperl() | setf tads | endif
1727
1728" Tags
1729au BufNewFile,BufRead tags			setf tags
1730
1731" TAK
1732au BufNewFile,BufRead *.tak			setf tak
1733
1734" Task
1735au BufRead,BufNewFile {pending,completed,undo}.data  setf taskdata
1736au BufRead,BufNewFile *.task			setf taskedit
1737
1738" Tcl (JACL too)
1739au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
1740
1741" TealInfo
1742au BufNewFile,BufRead *.tli			setf tli
1743
1744" Telix Salt
1745au BufNewFile,BufRead *.slt			setf tsalt
1746
1747" Tera Term Language or Turtle
1748au BufRead,BufNewFile *.ttl
1749	\ if getline(1) =~ '^@\?\(prefix\|base\)' |
1750	\   setf turtle |
1751	\ else |
1752	\   setf teraterm |
1753	\ endif
1754
1755" Terminfo
1756au BufNewFile,BufRead *.ti			setf terminfo
1757
1758" TeX
1759au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl	setf tex
1760au BufNewFile,BufRead *.tex			call dist#ft#FTtex()
1761
1762" ConTeXt
1763au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi,*.mkxl,*.mklx   setf context
1764
1765" Texinfo
1766au BufNewFile,BufRead *.texinfo,*.texi,*.txi	setf texinfo
1767
1768" TeX configuration
1769au BufNewFile,BufRead texmf.cnf			setf texmf
1770
1771" Tidy config
1772au BufNewFile,BufRead .tidyrc,tidyrc,tidy.conf	setf tidy
1773
1774" TF mud client
1775au BufNewFile,BufRead *.tf,.tfrc,tfrc		setf tf
1776
1777" tmux configuration
1778au BufNewFile,BufRead {.,}tmux*.conf		setf tmux
1779
1780" TOML
1781au BufNewFile,BufRead *.toml			setf toml
1782
1783" TPP - Text Presentation Program
1784au BufNewFile,BufReadPost *.tpp			setf tpp
1785
1786" Treetop
1787au BufRead,BufNewFile *.treetop			setf treetop
1788
1789" Trustees
1790au BufNewFile,BufRead trustees.conf		setf trustees
1791
1792" TSS - Geometry
1793au BufNewFile,BufReadPost *.tssgm		setf tssgm
1794
1795" TSS - Optics
1796au BufNewFile,BufReadPost *.tssop		setf tssop
1797
1798" TSS - Command Line (temporary)
1799au BufNewFile,BufReadPost *.tsscl		setf tsscl
1800
1801" TWIG files
1802au BufNewFile,BufReadPost *.twig		setf twig
1803
1804" Typescript or Qt translation file (which is XML)
1805au BufNewFile,BufReadPost *.ts
1806	\ if getline(1) =~ '<?xml' |
1807	\   setf xml |
1808	\ else |
1809	\   setf typescript |
1810	\ endif
1811
1812" TypeScript with React
1813au BufNewFile,BufRead *.tsx			setf typescriptreact
1814
1815" Motif UIT/UIL files
1816au BufNewFile,BufRead *.uit,*.uil		setf uil
1817
1818" Udev conf
1819au BufNewFile,BufRead */etc/udev/udev.conf	setf udevconf
1820
1821" Udev permissions
1822au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm
1823"
1824" Udev symlinks config
1825au BufNewFile,BufRead */etc/udev/cdsymlinks.conf	setf sh
1826
1827" UnrealScript
1828au BufNewFile,BufRead *.uc			setf uc
1829
1830" Updatedb
1831au BufNewFile,BufRead */etc/updatedb.conf	setf updatedb
1832
1833" Upstart (init(8)) config files
1834au BufNewFile,BufRead */usr/share/upstart/*.conf	       setf upstart
1835au BufNewFile,BufRead */usr/share/upstart/*.override	       setf upstart
1836au BufNewFile,BufRead */etc/init/*.conf,*/etc/init/*.override  setf upstart
1837au BufNewFile,BufRead */.init/*.conf,*/.init/*.override	       setf upstart
1838au BufNewFile,BufRead */.config/upstart/*.conf		       setf upstart
1839au BufNewFile,BufRead */.config/upstart/*.override	       setf upstart
1840
1841" Vera
1842au BufNewFile,BufRead *.vr,*.vri,*.vrh		setf vera
1843
1844" Verilog HDL
1845au BufNewFile,BufRead *.v			setf verilog
1846
1847" Verilog-AMS HDL
1848au BufNewFile,BufRead *.va,*.vams		setf verilogams
1849
1850" SystemVerilog
1851au BufNewFile,BufRead *.sv,*.svh		setf systemverilog
1852
1853" VHDL
1854au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst,*.vho  setf vhdl
1855
1856" Vim script
1857au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc	setf vim
1858
1859" Viminfo file
1860au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
1861
1862" Virata Config Script File or Drupal module
1863au BufRead,BufNewFile *.hw,*.module,*.pkg
1864	\ if getline(1) =~ '<?php' |
1865	\   setf php |
1866	\ else |
1867	\   setf virata |
1868	\ endif
1869
1870" Visual Basic (also uses *.bas) or FORM
1871au BufNewFile,BufRead *.frm			call dist#ft#FTVB("form")
1872
1873" SaxBasic is close to Visual Basic
1874au BufNewFile,BufRead *.sba			setf vb
1875
1876" Vgrindefs file
1877au BufNewFile,BufRead vgrindefs			setf vgrindefs
1878
1879" VRML V1.0c
1880au BufNewFile,BufRead *.wrl			setf vrml
1881
1882" Vroom (vim testing and executable documentation)
1883au BufNewFile,BufRead *.vroom			setf vroom
1884
1885" Vue.js Single File Component
1886au BufNewFile,BufRead *.vue			setf vue
1887
1888" WebAssembly
1889au BufNewFile,BufRead *.wast,*.wat		setf wast
1890
1891" Webmacro
1892au BufNewFile,BufRead *.wm			setf webmacro
1893
1894" Wget config
1895au BufNewFile,BufRead .wgetrc,wgetrc		setf wget
1896
1897" Website MetaLanguage
1898au BufNewFile,BufRead *.wml			setf wml
1899
1900" Winbatch
1901au BufNewFile,BufRead *.wbt			setf winbatch
1902
1903" WSML
1904au BufNewFile,BufRead *.wsml			setf wsml
1905
1906" WPL
1907au BufNewFile,BufRead *.wpl			setf xml
1908
1909" WvDial
1910au BufNewFile,BufRead wvdial.conf,.wvdialrc	setf wvdial
1911
1912" CVS RC file
1913au BufNewFile,BufRead .cvsrc			setf cvsrc
1914
1915" CVS commit file
1916au BufNewFile,BufRead cvs\d\+			setf cvs
1917
1918" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
1919" lines in a WEB file).
1920au BufNewFile,BufRead *.web
1921	\ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" |
1922	\   setf web |
1923	\ else |
1924	\   setf winbatch |
1925	\ endif
1926
1927" Windows Scripting Host and Windows Script Component
1928au BufNewFile,BufRead *.ws[fc]			setf wsh
1929
1930" XHTML
1931au BufNewFile,BufRead *.xhtml,*.xht		setf xhtml
1932
1933" X Pixmap (dynamically sets colors, use BufEnter to make it work better)
1934au BufEnter *.xpm
1935	\ if getline(1) =~ "XPM2" |
1936	\   setf xpm2 |
1937	\ else |
1938	\   setf xpm |
1939	\ endif
1940au BufEnter *.xpm2				setf xpm2
1941
1942" XFree86 config
1943au BufNewFile,BufRead XF86Config
1944	\ if getline(1) =~ '\<XConfigurator\>' |
1945	\   let b:xf86conf_xfree86_version = 3 |
1946	\ endif |
1947	\ setf xf86conf
1948au BufNewFile,BufRead */xorg.conf.d/*.conf
1949	\ let b:xf86conf_xfree86_version = 4 |
1950	\ setf xf86conf
1951
1952" Xorg config
1953au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86conf_xfree86_version = 4 | setf xf86conf
1954
1955" Xinetd conf
1956au BufNewFile,BufRead */etc/xinetd.conf		setf xinetd
1957
1958" XS Perl extension interface language
1959au BufNewFile,BufRead *.xs			setf xs
1960
1961" X resources file
1962au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults
1963
1964" Xmath
1965au BufNewFile,BufRead *.msc,*.msf		setf xmath
1966au BufNewFile,BufRead *.ms
1967	\ if !dist#ft#FTnroff() | setf xmath | endif
1968
1969" XML  specific variants: docbk and xbl
1970au BufNewFile,BufRead *.xml			call dist#ft#FTxml()
1971
1972" XMI (holding UML models) is also XML
1973au BufNewFile,BufRead *.xmi			setf xml
1974
1975" CSPROJ files are Visual Studio.NET's XML-based project config files
1976au BufNewFile,BufRead *.csproj,*.csproj.user	setf xml
1977
1978" Qt Linguist translation source and Qt User Interface Files are XML
1979" However, for .ts Typescript is more common.
1980au BufNewFile,BufRead *.ui			setf xml
1981
1982" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
1983au BufNewFile,BufRead *.tpm			setf xml
1984
1985" Xdg menus
1986au BufNewFile,BufRead */etc/xdg/menus/*.menu	setf xml
1987
1988" ATI graphics driver configuration
1989au BufNewFile,BufRead fglrxrc			setf xml
1990
1991" Web Services Description Language (WSDL)
1992au BufNewFile,BufRead *.wsdl			setf xml
1993
1994" XLIFF (XML Localisation Interchange File Format) is also XML
1995au BufNewFile,BufRead *.xlf			setf xml
1996au BufNewFile,BufRead *.xliff			setf xml
1997
1998" XML User Interface Language
1999au BufNewFile,BufRead *.xul			setf xml
2000
2001" X11 xmodmap (also see below)
2002au BufNewFile,BufRead *Xmodmap			setf xmodmap
2003
2004" Xquery
2005au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy	setf xquery
2006
2007" XSD
2008au BufNewFile,BufRead *.xsd			setf xsd
2009
2010" Xslt
2011au BufNewFile,BufRead *.xsl,*.xslt		setf xslt
2012
2013" Yacc
2014au BufNewFile,BufRead *.yy,*.yxx,*.y++		setf yacc
2015
2016" Yacc or racc
2017au BufNewFile,BufRead *.y			call dist#ft#FTy()
2018
2019" Yaml
2020au BufNewFile,BufRead *.yaml,*.yml		setf yaml
2021
2022" Raml
2023au BufNewFile,BufRead *.raml			setf raml
2024
2025" yum conf (close enough to dosini)
2026au BufNewFile,BufRead */etc/yum.conf		setf dosini
2027
2028" Zimbu
2029au BufNewFile,BufRead *.zu			setf zimbu
2030" Zimbu Templates
2031au BufNewFile,BufRead *.zut			setf zimbutempl
2032
2033" Zope
2034"   dtml (zope dynamic template markup language), pt (zope page template),
2035"   cpt (zope form controller page template)
2036au BufNewFile,BufRead *.dtml,*.pt,*.cpt		call dist#ft#FThtml()
2037"   zsql (zope sql method)
2038au BufNewFile,BufRead *.zsql			call dist#ft#SQL()
2039
2040" Z80 assembler asz80
2041au BufNewFile,BufRead *.z8a			setf z8a
2042
2043augroup END
2044
2045
2046" Source the user-specified filetype file, for backwards compatibility with
2047" Vim 5.x.
2048if exists("myfiletypefile") && filereadable(expand(myfiletypefile))
2049  execute "source " . myfiletypefile
2050endif
2051
2052
2053" Check for "*" after loading myfiletypefile, so that scripts.vim is only used
2054" when there are no matching file name extensions.
2055" Don't do this for compressed files.
2056augroup filetypedetect
2057au BufNewFile,BufRead *
2058	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
2059	\ | runtime! scripts.vim | endif
2060au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif
2061
2062
2063" Extra checks for when no filetype has been detected now.  Mostly used for
2064" patterns that end in "*".  E.g., "zsh*" matches "zsh.vim", but that's a Vim
2065" script file.
2066" Most of these should call s:StarSetf() to avoid names ending in .gz and the
2067" like are used.
2068
2069" More Apache style config files
2070au BufNewFile,BufRead */etc/proftpd/*.conf*,*/etc/proftpd/conf.*/*	call s:StarSetf('apachestyle')
2071au BufNewFile,BufRead proftpd.conf*					call s:StarSetf('apachestyle')
2072
2073" More Apache config files
2074au BufNewFile,BufRead access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf*	call s:StarSetf('apache')
2075au BufNewFile,BufRead */etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf*		call s:StarSetf('apache')
2076
2077" Asterisk config file
2078au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
2079au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')
2080
2081" Bazaar version control
2082au BufNewFile,BufRead bzr_log.*			setf bzr
2083
2084" Bazel build file
2085if !has("fname_case")
2086  au BufNewFile,BufRead *.BUILD,BUILD		setf bzl
2087endif
2088
2089" BIND zone
2090au BufNewFile,BufRead */named/db.*,*/bind/db.*	call s:StarSetf('bindzone')
2091
2092au BufNewFile,BufRead cabal.project.*		call s:StarSetf('cabalproject')
2093
2094" Calendar
2095au BufNewFile,BufRead */.calendar/*,
2096	\*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
2097	\					call s:StarSetf('calendar')
2098
2099" Changelog
2100au BufNewFile,BufRead [cC]hange[lL]og*
2101	\ if getline(1) =~ '; urgency='
2102	\|  call s:StarSetf('debchangelog')
2103	\|else
2104	\|  call s:StarSetf('changelog')
2105	\|endif
2106
2107" Crontab
2108au BufNewFile,BufRead crontab,crontab.*,*/etc/cron.d/*		call s:StarSetf('crontab')
2109
2110" dnsmasq(8) configuration
2111au BufNewFile,BufRead */etc/dnsmasq.d/*		call s:StarSetf('dnsmasq')
2112
2113" Dracula
2114au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')
2115
2116" Fvwm
2117au BufNewFile,BufRead */.fvwm/*			call s:StarSetf('fvwm')
2118au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
2119	\ let b:fvwm_version = 1 | call s:StarSetf('fvwm')
2120au BufNewFile,BufRead *fvwm2rc*
2121	\ if expand("<afile>:e") == "m4"
2122	\|  call s:StarSetf('fvwm2m4')
2123	\|else
2124	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
2125	\|endif
2126
2127" Gedcom
2128au BufNewFile,BufRead */tmp/lltmp*		call s:StarSetf('gedcom')
2129
2130" Git
2131au BufNewFile,BufRead */.gitconfig.d/*,/etc/gitconfig.d/*	call s:StarSetf('gitconfig')
2132
2133" Gitolite
2134au BufNewFile,BufRead */gitolite-admin/conf/*	call s:StarSetf('gitolite')
2135
2136" GTK RC
2137au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')
2138
2139" Jam
2140au BufNewFile,BufRead Prl*.*,JAM*.*		call s:StarSetf('jam')
2141
2142" Jargon
2143au! BufNewFile,BufRead *jarg*
2144	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE'
2145	\|  call s:StarSetf('jargon')
2146	\|endif
2147
2148" Java Properties resource file (note: doesn't catch font.properties.pl)
2149au BufNewFile,BufRead *.properties_??_??_*	call s:StarSetf('jproperties')
2150
2151" Kconfig
2152au BufNewFile,BufRead Kconfig.*			call s:StarSetf('kconfig')
2153
2154" Lilo: Linux loader
2155au BufNewFile,BufRead lilo.conf*		call s:StarSetf('lilo')
2156
2157" Logcheck
2158au BufNewFile,BufRead */etc/logcheck/*.d*/*	call s:StarSetf('logcheck')
2159
2160" Makefile
2161au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
2162
2163" Ruby Makefile
2164au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
2165
2166" Mail (also matches muttrc.vim, so this is below the other checks)
2167au BufNewFile,BufRead {neo,}mutt[[:alnum:]._-]\\\{6\}	setf mail
2168
2169au BufNewFile,BufRead reportbug-*		call s:StarSetf('mail')
2170
2171" Modconf
2172au BufNewFile,BufRead */etc/modutils/*
2173	\ if executable(expand("<afile>")) != 1
2174	\|  call s:StarSetf('modconf')
2175	\|endif
2176au BufNewFile,BufRead */etc/modprobe.*		call s:StarSetf('modconf')
2177
2178" Mutt setup file
2179au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
2180au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')
2181
2182" Neomutt setup file
2183au BufNewFile,BufRead .neomuttrc*,*/.neomutt/neomuttrc*	call s:StarSetf('neomuttrc')
2184au BufNewFile,BufRead neomuttrc*,Neomuttrc*		call s:StarSetf('neomuttrc')
2185
2186" Nroff macros
2187au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')
2188
2189" OpenBSD hostname.if
2190au BufNewFile,BufRead /etc/hostname.*		call s:StarSetf('config')
2191
2192" Pam conf
2193au BufNewFile,BufRead */etc/pam.d/*		call s:StarSetf('pamconf')
2194
2195" Printcap and Termcap
2196au BufNewFile,BufRead *printcap*
2197	\ if !did_filetype()
2198	\|  let b:ptcap_type = "print" | call s:StarSetf('ptcap')
2199	\|endif
2200au BufNewFile,BufRead *termcap*
2201	\ if !did_filetype()
2202	\|  let b:ptcap_type = "term" | call s:StarSetf('ptcap')
2203	\|endif
2204
2205" ReDIF
2206" Only used when the .rdf file was not detected to be XML.
2207au BufRead,BufNewFile *.rdf			call dist#ft#Redif()
2208
2209" Remind
2210au BufNewFile,BufRead .reminders*		call s:StarSetf('remind')
2211
2212" SGML catalog file
2213au BufNewFile,BufRead sgml.catalog*		call s:StarSetf('catalog')
2214
2215" Shell scripts ending in a star
2216au BufNewFile,BufRead .bashrc*,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,bash-fc[-.]*,PKGBUILD*,APKBUILD* call dist#ft#SetFileTypeSH("bash")
2217au BufNewFile,BufRead .kshrc* call dist#ft#SetFileTypeSH("ksh")
2218au BufNewFile,BufRead .profile* call dist#ft#SetFileTypeSH(getline(1))
2219
2220" tcsh scripts ending in a star
2221au BufNewFile,BufRead .tcshrc*	call dist#ft#SetFileTypeShell("tcsh")
2222
2223" csh scripts ending in a star
2224au BufNewFile,BufRead .login*,.cshrc*  call dist#ft#CSH()
2225
2226" VHDL
2227au BufNewFile,BufRead *.vhdl_[0-9]*		call s:StarSetf('vhdl')
2228
2229" Vim script
2230au BufNewFile,BufRead *vimrc*			call s:StarSetf('vim')
2231
2232" Subversion commit file
2233au BufNewFile,BufRead svn-commit*.tmp		setf svn
2234
2235" X resources file
2236au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults')
2237
2238" XFree86 config
2239au BufNewFile,BufRead XF86Config-4*
2240	\ let b:xf86conf_xfree86_version = 4 | call s:StarSetf('xf86conf')
2241au BufNewFile,BufRead XF86Config*
2242	\ if getline(1) =~ '\<XConfigurator\>'
2243	\|  let b:xf86conf_xfree86_version = 3
2244	\|endif
2245	\|call s:StarSetf('xf86conf')
2246
2247" X11 xmodmap
2248au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')
2249
2250" Xinetd conf
2251au BufNewFile,BufRead */etc/xinetd.d/*		call s:StarSetf('xinetd')
2252
2253" yum conf (close enough to dosini)
2254au BufNewFile,BufRead */etc/yum.repos.d/*	call s:StarSetf('dosini')
2255
2256" Z-Shell script ending in a star
2257au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump*  call s:StarSetf('zsh')
2258au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
2259
2260
2261" Plain text files, needs to be far down to not override others.  This avoids
2262" the "conf" type being used if there is a line starting with '#'.
2263au BufNewFile,BufRead *.text,README		setf text
2264
2265" Help files match *.txt but should have a last line that is a modeline.
2266au BufNewFile,BufRead *.txt
2267	\  if getline('$') !~ 'vim:.*ft=help'
2268	\|   setf text
2269	\| endif
2270
2271
2272" Use the filetype detect plugins.  They may overrule any of the previously
2273" detected filetypes.
2274runtime! ftdetect/*.vim
2275
2276" NOTE: The above command could have ended the filetypedetect autocmd group
2277" and started another one. Let's make sure it has ended to get to a consistent
2278" state.
2279augroup END
2280
2281" Generic configuration file. Use FALLBACK, it's just guessing!
2282au filetypedetect BufNewFile,BufRead,StdinReadPost *
2283	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
2284	\    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
2285	\	|| getline(4) =~ '^#' || getline(5) =~ '^#') |
2286	\   setf FALLBACK conf |
2287	\ endif
2288
2289
2290" If the GUI is already running, may still need to install the Syntax menu.
2291" Don't do it when the 'M' flag is included in 'guioptions'.
2292if has("menu") && has("gui_running")
2293      \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
2294  source <sfile>:p:h/menu.vim
2295endif
2296
2297" Function called for testing all functions defined here.  These are
2298" script-local, thus need to be executed here.
2299" Returns a string with error messages (hopefully empty).
2300func! TestFiletypeFuncs(testlist)
2301  let output = ''
2302  for f in a:testlist
2303    try
2304      exe f
2305    catch
2306      let output = output . "\n" . f . ": " . v:exception
2307    endtry
2308  endfor
2309  return output
2310endfunc
2311
2312" Restore 'cpoptions'
2313let &cpo = s:cpo_save
2314unlet s:cpo_save
2315