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