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