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