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