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