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