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