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