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