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