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