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