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