1" Vim support file to detect file types 2" 3" Maintainer: Bram Moolenaar <[email protected]> 4" Last Change: 2004 Jun 10 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 19au BufNewFile,BufRead *.orig,*.bak,*.old,*.new,*.rpmsave,*.rpmnew 20 \ exe "doau filetypedetect BufRead " . expand("<afile>:r") 21au BufNewFile,BufRead *~ 22 \ let s:name = expand("<afile>") | 23 \ let s:short = substitute(s:name, '\~$', '', '') | 24 \ if s:name != s:short && s:short != "" | 25 \ exe "doau filetypedetect BufRead " . s:short | 26 \ endif | 27 \ unlet s:name | 28 \ unlet s:short 29au BufNewFile,BufRead *.in 30 \ if expand("<afile>:t") != "configure.in" | 31 \ exe "doau filetypedetect BufRead " . expand("<afile>:r") | 32 \ endif 33 34" Pattern used to match file names which should not be inspected. 35" Currently finds compressed files. 36if !exists("g:ft_ignore_pat") 37 let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$' 38endif 39 40" Abaqus or Trasys 41au BufNewFile,BufRead *.inp call FTCheck_inp() 42 43fun! FTCheck_inp() 44 if getline(1) =~ '^\*' 45 setf abaqus 46 else 47 let n = 1 48 if line("$") > 500 49 let nmax = 500 50 else 51 let nmax = line("$") 52 endif 53 while n <= nmax 54 if getline(n) =~? "^header surface data" 55 setf trasys 56 break 57 endif 58 let n = n + 1 59 endwhile 60 endif 61endfun 62 63" A-A-P recipe 64au BufNewFile,BufRead *.aap setf aap 65 66" ABC music notation 67au BufNewFile,BufRead *.abc setf abc 68 69" ABEL 70au BufNewFile,BufRead *.abl setf abel 71 72" AceDB 73au BufNewFile,BufRead *.wrm setf acedb 74 75" Ada (83, 9X, 95) 76au BufNewFile,BufRead *.adb,*.ads,*.ada setf ada 77 78" AHDL 79au BufNewFile,BufRead *.tdf setf ahdl 80 81" AMPL 82au BufNewFile,BufRead *.run setf ampl 83 84" Ant 85au BufNewFile,BufRead build.xml setf ant 86 87" Apache style config file 88au BufNewFile,BufRead proftpd.conf* setf apachestyle 89 90" Apache config file 91au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,.htaccess,apache.conf* setf apache 92 93" XA65 MOS6510 cross assembler 94au BufNewFile,BufRead *.a65 setf a65 95 96" Applix ELF 97au BufNewFile,BufRead *.am 98 \ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif 99 100" Arc Macro Language 101au BufNewFile,BufRead *.aml setf aml 102 103" Arch Inventory file 104au BufNewFile,BufRead .arch-inventory,=tagging-method setf arch 105 106" ART*Enterprise (formerly ART-IM) 107au BufNewFile,BufRead *.art setf art 108 109" ASN.1 110au BufNewFile,BufRead *.asn,*.asn1 setf asn 111 112" Active Server Pages (with Visual Basic Script) 113au BufNewFile,BufRead *.asa 114 \ if exists("g:filetype_asa") | 115 \ exe "setf " . g:filetype_asa | 116 \ else | 117 \ setf aspvbs | 118 \ endif 119 120" Active Server Pages (with Perl or Visual Basic Script) 121au BufNewFile,BufRead *.asp 122 \ if exists("g:filetype_asp") | 123 \ exe "setf " . g:filetype_asp | 124 \ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" | 125 \ setf aspperl | 126 \ else | 127 \ setf aspvbs | 128 \ endif 129 130" Grub (must be before catch *.lst) 131au BufNewFile,BufRead /boot/grub/menu.lst,/boot/grub/grub.conf setf grub 132 133" Assembly (all kinds) 134" *.lst is not pure assembly, it has two extra columns (address, byte codes) 135au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call <SID>FTasm() 136 137" This function checks for the kind of assembly that is wanted by the user, or 138" can be detected from the first five lines of the file. 139fun! <SID>FTasm() 140 " make sure b:asmsyntax exists 141 if !exists("b:asmsyntax") 142 let b:asmsyntax = "" 143 endif 144 145 if b:asmsyntax == "" 146 call FTCheck_asmsyntax() 147 endif 148 149 " if b:asmsyntax still isn't set, default to asmsyntax or GNU 150 if b:asmsyntax == "" 151 if exists("g:asmsyntax") 152 let b:asmsyntax = g:asmsyntax 153 else 154 let b:asmsyntax = "asm" 155 endif 156 endif 157 158 exe "setf " . b:asmsyntax 159endfun 160 161fun! FTCheck_asmsyntax() 162 " see if file contains any asmsyntax=foo overrides. If so, change 163 " b:asmsyntax appropriately 164 let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4). 165 \" ".getline(5)." " 166 if head =~ '\sasmsyntax=\S\+\s' 167 let b:asmsyntax = substitute(head, '.*\sasmsyntax=\(\S\+\)\s.*','\1', "") 168 elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library')) 169 let b:asmsyntax = "vmasm" 170 endif 171endfun 172 173" Macro (VAX) 174au BufNewFile,BufRead *.mar setf vmasm 175 176" Atlas 177au BufNewFile,BufRead *.atl,*.as setf atlas 178 179" Automake 180au BufNewFile,BufRead [mM]akefile.am setf automake 181 182" Avenue 183au BufNewFile,BufRead *.ave setf ave 184 185" Awk 186au BufNewFile,BufRead *.awk setf awk 187 188" B 189au BufNewFile,BufRead *.mch,*.ref,*.imp setf b 190 191" BASIC or Visual Basic 192au BufNewFile,BufRead *.bas call <SID>FTVB("basic") 193 194" Check if one of the first five lines contains "VB_Name". In that case it is 195" probably a Visual Basic file. Otherwise it's assumed to be "alt" filetype. 196fun! <SID>FTVB(alt) 197 if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)' 198 setf vb 199 else 200 exe "setf " . a:alt 201 endif 202endfun 203 204" Visual Basic Script (close to Visual Basic) 205au BufNewFile,BufRead *.vbs,*.dsm,*.ctl setf vb 206 207" Batch file for MSDOS. 208au BufNewFile,BufRead *.bat,*.btm,*.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 setf btm 215 216" BC calculator 217au BufNewFile,BufRead *.bc setf bc 218 219" BDF font 220au BufNewFile,BufRead *.bdf setf bdf 221 222" BibTeX bibliography database file 223au BufNewFile,BufRead *.bib setf bib 224 225" BIND configuration 226au BufNewFile,BufRead named.conf setf named 227 228" BIND zone 229au BufNewFile,BufRead named.root setf bindzone 230 231" Blank 232au BufNewFile,BufRead *.bl setf blank 233 234" C or lpc 235au BufNewFile,BufRead *.c call <SID>FTlpc() 236 237fun! <SID>FTlpc() 238 if exists("g:lpc_syntax_for_c") 239 let lnum = 1 240 while lnum <= 12 241 if getline(lnum) =~# '^\(//\|inherit\|private\|protected\|nosave\|string\|object\|mapping\|mixed\)' 242 setf lpc 243 return 244 endif 245 let lnum = lnum + 1 246 endwhile 247 endif 248 setf c 249endfun 250 251" Calendar 252au BufNewFile,BufRead calendar,*/.calendar/*, 253 \*/share/calendar/*/calendar.*,*/share/calendar/calendar.* 254 \ setf calendar 255 256" C# 257au BufNewFile,BufRead *.cs setf cs 258 259" Comshare Dimension Definition Language 260au BufNewFile,BufRead *.cdl setf cdl 261 262" Controllable Regex Mutilator 263au BufNewFile,BufRead *.crm setf crm 264 265" Cyn++ 266au BufNewFile,BufRead *.cyn setf cynpp 267 268" Cynlib 269" .cc and .cpp files can be C++ or Cynlib. 270au BufNewFile,BufRead *.cc 271 \ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif 272au BufNewFile,BufRead *.cpp 273 \ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif 274 275" C++ 276if has("fname_case") 277 au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp 278else 279 au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp 280endif 281 282" .h files can be C, Ch or C++, set c_syntax_for_h if you want C, 283" ch_syntax_for_h if you want Ch. 284au BufNewFile,BufRead *.h 285 \ if exists("c_syntax_for_h") | setf c | 286 \ elseif exists("ch_syntax_for_h") | setf ch | 287 \ else | setf cpp | endif 288 289" Ch (CHscript) 290au BufNewFile,BufRead *.chf setf ch 291 292" TLH files are C++ headers generated by Visual C++'s #import from typelibs 293au BufNewFile,BufRead *.tlh setf cpp 294 295" Cascading Style Sheets 296au BufNewFile,BufRead *.css setf css 297 298" Century Term Command Scripts (*.cmd too) 299au BufNewFile,BufRead *.con setf cterm 300 301" Changelog 302au BufNewFile,BufRead changelog.Debian,changelog.dch setf debchangelog 303au BufNewFile,BufRead [cC]hange[lL]og if getline(1) =~ '; urgency=' 304 \| setf debchangelog | else | setf changelog | endif 305 306" CHILL 307au BufNewFile,BufRead *..ch setf chill 308 309" Changes for WEB and CWEB or CHILL 310au BufNewFile,BufRead *.ch call <SID>FTchange() 311 312" This function checks if one of the first ten lines start with a '@'. In 313" that case it is probably a change file. 314" If the first line starts with # or ! it's probably a ch file. 315" If a line has "main", "include", "//" ir "/*" it's probably ch. 316" Otherwise CHILL is assumed. 317fun! <SID>FTchange() 318 let lnum = 1 319 while lnum <= 10 320 if getline(lnum)[0] == '@' 321 setf change 322 return 323 endif 324 if lnum == 1 && (getline(1)[0] == '#' || getline(1)[0] == '!') 325 setf ch 326 return 327 endif 328 if getline(lnum) =~ "MODULE" 329 setf chill 330 return 331 endif 332 if getline(lnum) =~ 'main\s*(\|#\s*include\|//' 333 setf ch 334 return 335 endif 336 let lnum = lnum + 1 337 endwhile 338 setf chill 339endfun 340 341" Clean 342au BufNewFile,BufRead *.dcl,*.icl setf clean 343 344" Clever 345au BufNewFile,BufRead *.eni setf cl 346 347" Clever or dtd 348au BufNewFile,BufRead *.ent call <SID>FTent() 349 350fun! <SID>FTent() 351 " This function checks for valid cl syntax in the first five lines. 352 " Look for either an opening comment, '#', or a block start, '{". 353 " If not found, assume SGML. 354 let lnum = 1 355 while lnum < 6 356 let line = getline(lnum) 357 if line =~ '^\s*[#{]' 358 setf cl 359 return 360 elseif line !~ '^\s*$' 361 " Not a blank line, not a comment, and not a block start, 362 " so doesn't look like valid cl code. 363 break 364 endif 365 let lnum = lnum + 1 366 endw 367 setf dtd 368endfun 369 370" Clipper (or FoxPro) 371au BufNewFile,BufRead *.prg 372 \ if exists("g:filetype_prg") | 373 \ exe "setf " . g:filetype_prg | 374 \ else | 375 \ setf clipper | 376 \ endif 377 378" Cobol 379au BufNewFile,BufRead *.cbl,*.cob,*.cpy,*.lib setf cobol 380 381" Cold Fusion 382au BufNewFile,BufRead *.cfm,*.cfi,*.cfc setf cf 383 384" Configure scripts 385au BufNewFile,BufRead configure.in,configure.ac setf config 386 387" WildPackets EtherPeek Decoder 388au BufNewFile,BufRead *.dcd setf dcd 389 390" Enlightenment configuration files 391au BufNewFile,BufRead *enlightenment/*.cfg setf c 392 393" Eterm 394au BufNewFile,BufRead *Eterm/*.cfg setf eterm 395 396" Lynx config files 397au BufNewFile,BufRead lynx.cfg setf lynx 398 399" Quake 400au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg setf quake 401au BufNewFile,BufRead *quake[1-3]/*.cfg setf quake 402 403" Quake C 404au BufNewFile,BufRead *.qc setf c 405 406" Configure files 407au BufNewFile,BufRead *.cfg setf cfg 408 409" Communicating Sequential Processes 410au BufNewFile,BufRead *.csp,*.fdr setf csp 411 412" CUPL logic description and simulation 413au BufNewFile,BufRead *.pld setf cupl 414au BufNewFile,BufRead *.si setf cuplsim 415 416" Debian Control 417au BufNewFile,BufRead */debian/control setf debcontrol 418 419" ROCKLinux package description 420au BufNewFile,BufRead *.desc setf desc 421 422" the D language 423au BufNewFile,BufRead *.d setf d 424 425" Desktop files 426au BufNewFile,BufRead *.desktop,.directory setf desktop 427 428" Diff files 429au BufNewFile,BufRead *.diff,*.rej,*.patch setf diff 430 431" Dircolors 432au BufNewFile,BufRead .dir_colors,/etc/DIR_COLORS setf dircolors 433 434" Diva (with Skill) or InstallShield 435au BufNewFile,BufRead *.rul 436 \ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield' | 437 \ setf ishd | 438 \ else | 439 \ setf diva | 440 \ endif 441 442" DCL (Digital Command Language - vms) or DNS zone file 443au BufNewFile,BufRead *.com 444 \ if getline(1).getline(2) =~ '$ORIGIN\|$TTL\|IN\s*SOA' 445 \ || getline(1).getline(2).getline(3).getline(4) =~ 'BIND.*named' 446 \ | setf dns | else | setf dcl | endif 447 448" DOT 449au BufNewFile,BufRead *.dot setf dot 450 451" Dylan - lid files 452au BufNewFile,BufRead *.lid setf dylanlid 453 454" Dylan - intr files (melange) 455au BufNewFile,BufRead *.intr setf dylanintr 456 457" Dylan 458au BufNewFile,BufRead *.dylan setf dylan 459 460" Microsoft Module Definition 461au BufNewFile,BufRead *.def setf def 462 463" Dracula 464au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe setf dracula 465 466" dsl 467au BufNewFile,BufRead *.dsl setf dsl 468 469" DTD (Document Type Definition for XML) 470au BufNewFile,BufRead *.dtd setf dtd 471 472" EDIF (*.edf,*.edif,*.edn,*.edo) 473au BufNewFile,BufRead *.ed\(f\|if\|n\|o\) setf edif 474 475" Embedix Component Description 476au BufNewFile,BufRead *.ecd setf ecd 477 478" Eiffel or Specman 479au BufNewFile,BufRead *.e,*.E call FTCheck_e() 480 481" Elinks configuration 482au BufNewFile,BufRead */etc/elinks.conf,*/.elinks/elinks.conf setf elinks 483 484fun! FTCheck_e() 485 let n = 1 486 while n < 100 && n < line("$") 487 if getline(n) =~ "^\\s*\\(<'\\|'>\\)\\s*$" 488 setf specman 489 return 490 endif 491 let n = n + 1 492 endwhile 493 setf eiffel 494endfun 495 496" ERicsson LANGuage 497au BufNewFile,BufRead *.erl setf erlang 498 499" Elm Filter Rules file 500au BufNewFile,BufRead filter-rules setf elmfilt 501 502" ESQL-C 503au BufNewFile,BufRead *.ec,*.EC setf esqlc 504 505" Essbase script 506au BufNewFile,BufRead *.csc setf csc 507 508" Exim 509au BufNewFile,BufRead exim.conf setf exim 510 511" Expect 512au BufNewFile,BufRead *.exp setf expect 513 514" Exports 515au BufNewFile,BufRead exports setf exports 516 517" Fetchmail RC file 518au BufNewFile,BufRead .fetchmailrc setf fetchmail 519 520" Focus Executable 521au BufNewFile,BufRead *.fex,*.focexec setf focexec 522 523" Focus Master file (but not for auto.master) 524au BufNewFile,BufRead auto.master setf conf 525au BufNewFile,BufRead *.mas,*.master setf master 526 527" Forth 528au BufNewFile,BufRead *.fs,*.ft setf forth 529 530" Fortran 531au BufNewFile,BufRead *.f,*.F,*.for,*.fpp,*.ftn,*.f77,*.F77,*.f90,*.F90,*.f95,*.F95 setf fortran 532 533" FStab 534au BufNewFile,BufRead fstab setf fstab 535 536" GDB command files 537au BufNewFile,BufRead .gdbinit setf gdb 538 539" GDMO 540au BufNewFile,BufRead *.mo,*.gdmo setf gdmo 541 542" Gedcom 543au BufNewFile,BufRead *.ged setf gedcom 544 545" Gkrellmrc 546au BufNewFile,BufRead gkrellmrc,gkrellmrc_? setf gkrellmrc 547 548" GP scripts (2.0 and onward) 549au BufNewFile,BufRead *.gp setf gp 550 551" GPG 552au BufNewFile,BufRead */.gnupg/options setf gpg 553au BufNewFile,BufRead */.gnupg/gpg.conf setf gpg 554au BufNewFile,BufRead /usr/**/gnupg/options.skel setf gpg 555 556" Gnuplot scripts 557au BufNewFile,BufRead *.gpi setf gnuplot 558 559" GrADS scripts 560au BufNewFile,BufRead *.gs setf grads 561 562" Groovy 563au BufNewFile,BufRead *.groovy setf groovy 564 565" GNU Server Pages 566au BufNewFile,BufRead *.gsp setf gsp 567 568" GTK RC 569au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc 570 571" Haskell 572au BufNewFile,BufRead *.hs setf haskell 573au BufNewFile,BufRead *.lhs setf lhaskell 574au BufNewFile,BufRead *.chs setf chaskell 575 576" Hercules 577au BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum setf hercules 578 579" HEX (Intel) 580au BufNewFile,BufRead *.hex,*.h32 setf hex 581 582" Tilde (must be before HTML) 583au BufNewFile,BufRead *.t.html setf tilde 584 585" HTML (.shtml and .stm for server side) 586au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call <SID>FTCheck_html() 587 588" Distinguish between HTML and XHTML 589fun! <SID>FTCheck_html() 590 let n = 1 591 while n < 10 && n < line("$") 592 if getline(n) =~ '\<DTD\s\+XHTML\s' 593 setf xhtml 594 return 595 endif 596 let n = n + 1 597 endwhile 598 setf html 599endfun 600 601 602" HTML with M4 603au BufNewFile,BufRead *.html.m4 setf htmlm4 604 605" HTML Cheetah template 606au BufNewFile,BufRead *.tmpl setf htmlcheetah 607 608" Hyper Builder 609au BufNewFile,BufRead *.hb setf hb 610 611" Icon 612au BufNewFile,BufRead *.icn setf icon 613 614" IDL (Interface Description Language) 615au BufNewFile,BufRead *.idl call <SID>FTCheck_idl() 616 617" Distinguish between standard IDL and MS-IDL 618fun! <SID>FTCheck_idl() 619 let n = 1 620 while n < 50 && n < line("$") 621 if getline(n) =~ '^\s*import\s\+"\(unknwn\|objidl\)\.idl"' 622 setf msidl 623 return 624 endif 625 let n = n + 1 626 endwhile 627 setf idl 628endfun 629 630" Microsoft IDL (Interface Description Language) Also *.idl 631" MOF = WMI (Windows Management Instrumentation) Managed Object Format 632au BufNewFile,BufRead *.odl,*.mof setf msidl 633 634" Icewm menu 635au BufNewFile,BufRead */.icewm/menu setf icemenu 636 637" Inform 638au BufNewFile,BufRead .indent.pro setf indent 639 640" IDL (Interactive Data Language) 641au BufNewFile,BufRead *.pro setf idlang 642 643" Inform 644au BufNewFile,BufRead *.inf,*.INF setf inform 645 646" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.) 647au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl setf fgl 648 649" .INI file for MSDOS 650au BufNewFile,BufRead *.ini setf dosini 651 652" SysV Inittab 653au BufNewFile,BufRead inittab setf inittab 654 655" Inno Setup 656au BufNewFile,BufRead *.iss setf iss 657 658" JAL 659au BufNewFile,BufRead *.jal,*.JAL setf jal 660 661" Jam 662au BufNewFile,BufRead *.jpl,*.jpr setf jam 663 664" Java 665au BufNewFile,BufRead *.java,*.jav setf java 666 667" JavaCC 668au BufNewFile,BufRead *.jj,*.jjt setf javacc 669 670" JavaScript 671au BufNewFile,BufRead *.js,*.javascript setf javascript 672 673" Java Server Pages 674au BufNewFile,BufRead *.jsp setf jsp 675 676" Java Properties resource file (note: doesn't catch font.properties.pl) 677au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_??,*.properties_??_??_* setf jproperties 678 679" Jess 680au BufNewFile,BufRead *.clp setf jess 681 682" Jgraph 683au BufNewFile,BufRead *.jgr setf jgraph 684 685" Kixtart 686au BufNewFile,BufRead *.kix setf kix 687 688" Kimwitu[++] 689au BufNewFile,BufRead *.k setf kwt 690 691" KDE script 692au BufNewFile,BufRead *.ks setf kscript 693 694" Lace (ISE) 695au BufNewFile,BufRead *.ace,*.ACE setf lace 696 697" Latte 698au BufNewFile,BufRead *.latte,*.lte setf latte 699 700" LambdaProlog (*.mod too, see Modsim) 701au BufNewFile,BufRead *.sig setf lprolog 702 703" LDAP LDIF 704au BufNewFile,BufRead *.ldif setf ldif 705 706" Lex 707au BufNewFile,BufRead *.lex,*.l setf lex 708 709" Libao 710au BufNewFile,BufRead /etc/libao.conf,*/.libao setf libao 711 712" LFTP 713au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc setf lftp 714 715" Lifelines (or Lex for C++!) 716au BufNewFile,BufRead *.ll setf lifelines 717 718" Lilo: Linux loader 719au BufNewFile,BufRead lilo.conf* setf lilo 720 721" Lisp (*.el = ELisp, *.cl = Common Lisp, *.jl = librep Lisp) 722if has("fname_case") 723 au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,*.L,.emacs,.sawfishrc setf lisp 724else 725 au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp 726endif 727 728" Lite 729au BufNewFile,BufRead *.lite,*.lt setf lite 730 731" Logtalk 732au BufNewFile,BufRead *.lgt setf logtalk 733 734" LOTOS 735au BufNewFile,BufRead *.lot,*.lotos setf lotos 736 737" Lout (also: *.lt) 738au BufNewFile,BufRead *.lou,*.lout setf lout 739 740" Lua 741au BufNewFile,BufRead *.lua setf lua 742 743" Lynx style file (or LotusScript!) 744au BufNewFile,BufRead *.lss setf lss 745 746" M4 747au BufNewFile,BufRead *.m4 748 \ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif 749 750" MaGic Point 751au BufNewFile,BufRead *.mgp setf mgp 752 753" Mail (for Elm, trn, mutt, rn, slrn) 754au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt-*-\w\+,mutt\w\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail 755 756" Mailcap configuration file 757au BufNewFile,BufRead .mailcap,mailcap setf mailcap 758 759" Makefile 760au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make 761 762" MakeIndex 763au BufNewFile,BufRead *.ist,*.mst setf ist 764 765" Manpage 766au BufNewFile,BufRead *.man setf man 767 768" Maple V 769au BufNewFile,BufRead *.mv,*.mpl,*.mws setf maple 770 771" Mason 772au BufNewFile,BufRead *.mason,*.mhtml setf mason 773 774" Matlab or Objective C 775au BufNewFile,BufRead *.m call FTCheck_m() 776 777fun! FTCheck_m() 778 let n = 1 779 while n < 10 780 let line = getline(n) 781 if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)' 782 setf objc 783 return 784 endif 785 if line =~ '^\s*%' 786 setf matlab 787 return 788 endif 789 if line =~ '^\s*(\*' 790 setf mma 791 return 792 endif 793 let n = n + 1 794 endwhile 795 setf matlab 796endfun 797 798" Maya Extension Language 799au BufNewFile,BufRead *.mel setf mel 800 801" Metafont 802au BufNewFile,BufRead *.mf setf mf 803 804" MetaPost 805au BufNewFile,BufRead *.mp setf mp 806 807" MMIX or VMS makefile 808au BufNewFile,BufRead *.mms call FTCheck_mms() 809 810fun! FTCheck_mms() 811 let n = 1 812 while n < 10 813 let line = getline(n) 814 if line =~ '^\s*\(%\|//\)' || line =~ '^\*' 815 setf mmix 816 return 817 endif 818 if line =~ '^\s*#' 819 setf make 820 return 821 endif 822 let n = n + 1 823 endwhile 824 setf mmix 825endfun 826 827 828" Modsim III (or LambdaProlog) 829au BufNewFile,BufRead *.mod 830 \ if getline(1) =~ '\<module\>' | 831 \ setf lprolog | 832 \ else | 833 \ setf modsim3 | 834 \ endif 835 836" Modula 2 837au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2 838 839" Modula 3 (.m3, .i3, .mg, .ig) 840au BufNewFile,BufRead *.[mi][3g] setf modula3 841 842" Monk 843au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc setf monk 844 845" MOO 846au BufNewFile,BufRead *.moo setf moo 847 848" Modconf 849au BufNewFile,BufRead /etc/modules.conf,/etc/conf.modules setf modconf 850au BufNewFile,BufRead /etc/modutils/* 851 \ if executable(expand("<afile>")) != 1 | setf modconf | endif 852 853" Mplayer config 854au BufNewFile,BufRead mplayer.conf,*/.mplayer/config setf mplayerconf 855 856" Moterola S record 857au BufNewFile,BufRead *.s19,*.s28,*.s37 setf srec 858 859" Msql 860au BufNewFile,BufRead *.msql setf msql 861 862" Mysql 863au BufNewFile,BufRead *.mysql setf mysql 864 865" M$ Resource files 866au BufNewFile,BufRead *.rc setf rc 867 868" Mush 869au BufNewFile,BufRead *.mush setf mush 870 871" Mutt setup file 872au BufNewFile,BufRead .muttrc*,*/.mutt/muttrc*,Muttrc setf muttrc 873 874" Nastran input/DMAP 875"au BufNewFile,BufRead *.dat setf nastran 876 877" Natural 878au BufNewFile,BufRead *.NS[ACGLMNPS] setf natural 879 880" Novell netware batch files 881au BufNewFile,BufRead *.ncf setf ncf 882 883" Nroff/Troff (*.ms and *.t are checked below) 884au BufNewFile,BufRead *.me 885 \ if expand("<afile>") != "read.me" && expand("<afile>") != "click.me" | 886 \ setf nroff | 887 \ endif 888au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom setf nroff 889au BufNewFile,BufRead *.[1-9] call <SID>FTnroff() 890 891" This function checks if one of the first five lines start with a dot. In 892" that case it is probably an nroff file: 'filetype' is set and 1 is returned. 893fun! <SID>FTnroff() 894 if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.' 895 setf nroff 896 return 1 897 endif 898 return 0 899endfun 900 901" Nroff or Objective C++ 902au BufNewFile,BufRead *.mm call <SID>FTcheck_mm() 903 904fun! <SID>FTcheck_mm() 905 let n = 1 906 while n < 10 907 let line = getline(n) 908 if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)' 909 setf objcpp 910 return 911 endif 912 let n = n + 1 913 endwhile 914 setf nroff 915endfun 916 917" Not Quite C 918au BufNewFile,BufRead *.nqc setf nqc 919 920" NSIS 921au BufNewFile,BufRead *.nsi setf nsis 922 923" OCAML 924au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly setf ocaml 925 926" Occam 927au BufNewFile,BufRead *.occ setf occam 928 929" Omnimark 930au BufNewFile,BufRead *.xom,*.xin setf omnimark 931 932" OpenROAD 933au BufNewFile,BufRead *.or setf openroad 934 935" OPL 936au BufNewFile,BufRead *.[Oo][Pp][Ll] setf opl 937 938" Oracle config file 939au BufNewFile,BufRead *.ora setf ora 940 941" Packet filter conf 942au BufNewFile,BufRead pf.conf setf pf 943 944" PApp 945au BufNewFile,BufRead *.papp,*.pxml,*.pxsl setf papp 946 947" Pascal (also *.p) 948au BufNewFile,BufRead *.pas setf pascal 949 950" Delphi project file 951au BufNewFile,BufRead *.dpr setf pascal 952 953" Perl 954if has("fname_case") 955 au BufNewFile,BufRead *.pl,*.PL call FTCheck_pl() 956else 957 au BufNewFile,BufRead *.pl call FTCheck_pl() 958endif 959 960fun! FTCheck_pl() 961 if exists("g:filetype_pl") 962 exe "setf " . g:filetype_pl 963 else 964 " recognize Prolog by specific text in the first non-empty line 965 " require a blank after the '%' because Perl uses "%list" and "%translate" 966 let l = getline(nextnonblank(1)) 967 if l =~ '\<prolog\>' || l =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || l =~ ':-' 968 setf prolog 969 else 970 setf perl 971 endif 972 endif 973endfun 974 975" Perl, XPM or XPM2 976au BufNewFile,BufRead *.pm 977 \ if getline(1) =~ "XPM2" | 978 \ setf xpm2 | 979 \ elseif getline(1) =~ "XPM" | 980 \ setf xpm | 981 \ else | 982 \ setf perl | 983 \ endif 984 985" Perl POD 986au BufNewFile,BufRead *.pod setf pod 987 988" Php3 989au BufNewFile,BufRead *.php,*.php3 setf php 990 991" Phtml 992au BufNewFile,BufRead *.phtml setf phtml 993 994" Pike 995au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod setf pike 996 997" Pinfo config 998au BufNewFile,BufRead */etc/pinforc,*/.pinforc setf pinfo 999 1000" Palm Resource compiler 1001au BufNewFile,BufRead *.rcp setf pilrc 1002 1003" Pine config 1004au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex setf pine 1005 1006" PL/M (also: *.inp) 1007au BufNewFile,BufRead *.plm,*.p36,*.pac setf plm 1008 1009" PL/SQL 1010au BufNewFile,BufRead *.pls,*.plsql setf plsql 1011 1012" PLP 1013au BufNewFile,BufRead *.plp setf plp 1014 1015" PO and PO template (GNU gettext) 1016au BufNewFile,BufRead *.po,*.pot setf po 1017 1018" Postfix main config 1019au BufNewFile,BufRead main.cf setf pfmain 1020 1021" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator) 1022au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai setf postscr 1023 1024" PostScript Printer Description 1025au BufNewFile,BufRead *.ppd setf ppd 1026 1027" Povray 1028au BufNewFile,BufRead *.pov setf pov 1029 1030" Povray configuration 1031au BufNewFile,BufRead .povrayrc setf povini 1032 1033" Povray, PHP or assembly 1034au BufNewFile,BufRead *.inc call FTCheck_inc() 1035 1036fun! FTCheck_inc() 1037 if exists("g:filetype_inc") 1038 exe "setf " . g:filetype_inc 1039 else 1040 let lines = getline(1).getline(2).getline(3) 1041 if lines =~? "perlscript" 1042 setf aspperl 1043 elseif lines =~ "<%" 1044 setf aspvbs 1045 elseif lines =~ "<?" 1046 setf php 1047 else 1048 call FTCheck_asmsyntax() 1049 if exists("b:asmsyntax") 1050 exe "setf " . b:asmsyntax 1051 else 1052 setf pov 1053 endif 1054 endif 1055 endif 1056endfun 1057 1058" Printcap and Termcap 1059au BufNewFile,BufRead *printcap 1060 \ let b:ptcap_type = "print" | setf ptcap 1061au BufNewFile,BufRead *termcap 1062 \ let b:ptcap_type = "term" | setf ptcap 1063 1064" PCCTS / ANTRL 1065"au BufNewFile,BufRead *.g setf antrl 1066au BufNewFile,BufRead *.g setf pccts 1067 1068" PPWizard 1069au BufNewFile,BufRead *.it,*.ih setf ppwiz 1070 1071" Oracle Pro*C/C++ 1072au BufNewFile,BufRead .pc setf proc 1073 1074" Procmail 1075au BufNewFile,BufRead .procmail,.procmailrc setf procmail 1076 1077" Progress or CWEB 1078au BufNewFile,BufRead *.w call <SID>FTprogress_cweb() 1079 1080function! <SID>FTprogress_cweb() 1081 if exists("g:filetype_w") 1082 exe "setf " . g:filetype_w 1083 return 1084 endif 1085 if getline(1) =~ '&ANALYZE' || getline(3) =~ '&GLOBAL-DEFINE' 1086 setf progress 1087 else 1088 setf cweb 1089 endif 1090endfun 1091 1092" Progress or assembly 1093au BufNewFile,BufRead *.i call <SID>FTprogress_asm() 1094 1095function! <SID>FTprogress_asm() 1096 if exists("g:filetype_i") 1097 exe "setf " . g:filetype_i 1098 return 1099 endif 1100 " This function checks for an assembly comment the first ten lines. 1101 " If not found, assume Progress. 1102 let lnum = 1 1103 while lnum <= 10 1104 let line = getline(lnum) 1105 if line =~ '^\s*;' || line =~ '^\*' 1106 call FTCheck_asm() 1107 return 1108 elseif line !~ '^\s*$' || line =~ '^/\*' 1109 " Not an empty line: Doesn't look like valid assembly code. 1110 " Or it looks like a Progress /* comment 1111 break 1112 endif 1113 let lnum = lnum + 1 1114 endw 1115 setf progress 1116endfun 1117 1118" Progress or Pascal 1119au BufNewFile,BufRead *.p call <SID>FTprogress_pascal() 1120 1121function! <SID>FTprogress_pascal() 1122 if exists("g:filetype_p") 1123 exe "setf " . g:filetype_p 1124 return 1125 endif 1126 " This function checks for valid Pascal syntax in the first ten lines. 1127 " Look for either an opening comment or a program start. 1128 " If not found, assume Progress. 1129 let lnum = 1 1130 while lnum <= 10 1131 let line = getline(lnum) 1132 if line =~ '^\s*\(program\|procedure\|function\|const\|type\|var\)\>' 1133 \ || line =~ '^\s*{' || line =~ '^\s*(\*' 1134 setf pascal 1135 return 1136 elseif line !~ '^\s*$' || line =~ '^/\*' 1137 " Not an empty line: Doesn't look like valid Pascal code. 1138 " Or it looks like a Progress /* comment 1139 break 1140 endif 1141 let lnum = lnum + 1 1142 endw 1143 setf progress 1144endfun 1145 1146 1147" Software Distributor Product Specification File (POSIX 1387.2-1995) 1148au BufNewFile,BufRead *.psf setf psf 1149au BufNewFile,BufRead INDEX,INFO 1150 \ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' | 1151 \ setf psf | 1152 \ endif 1153 1154" Prolog 1155au BufNewFile,BufRead *.pdb setf prolog 1156 1157" Pyrex 1158au BufNewFile,BufRead *.pyx,*.pxd setf pyrex 1159 1160" Python 1161au BufNewFile,BufRead *.py,*.pyw setf python 1162 1163" Radiance 1164au BufNewFile,BufRead *.rad,*.mat setf radiance 1165 1166" Ratpoison config/command files 1167au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc setf ratpoison 1168 1169" RCS file 1170au BufNewFile,BufRead *\,v setf rcs 1171 1172" Readline 1173au BufNewFile,BufRead .inputrc setf readline 1174 1175" Registry for MS-Windows 1176au BufNewFile,BufRead *.reg 1177 \ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif 1178 1179" Renderman Interface Bytestream 1180au BufNewFile,BufRead *.rib setf rib 1181 1182" Rexx 1183au BufNewFile,BufRead *.rexx,*.rex setf rexx 1184 1185" R (Splus) 1186au BufNewFile,BufRead *.s,*.S setf r 1187 1188" Rexx, Rebol or R 1189au BufNewFile,BufRead *.r,*.R call <SID>FTCheck_r() 1190 1191fun! <SID>FTCheck_r() 1192 if getline(1) =~ '^REBOL' 1193 setf rebol 1194 else 1195 let n = 1 1196 let max = line("$") 1197 if max > 50 1198 let max = 50 1199 endif 1200 while n < max 1201 " R has # comments 1202 if getline(n) =~ '^\s*#' 1203 setf r 1204 break 1205 endif 1206 " Rexx has /* comments */ 1207 if getline(n) =~ '^\s*/\*' 1208 setf rexx 1209 break 1210 endif 1211 let n = n + 1 1212 endwhile 1213 if n >= max 1214 setf rexx 1215 endif 1216 endif 1217endfun 1218 1219" Remind 1220au BufNewFile,BufRead .reminders* setf remind 1221 1222" Resolv.conf 1223au BufNewFile,BufRead resolv.conf setf resolv 1224 1225" Relax NG Compact 1226au BufNewFile,BufRead *.rnc setf rnc 1227 1228" RPL/2 1229au BufNewFile,BufRead *.rpl setf rpl 1230 1231" Robots.txt 1232au BufNewFile,BufRead robots.txt setf robots 1233 1234" Rpcgen 1235au BufNewFile,BufRead *.x setf rpcgen 1236 1237" reStructuredText Documentation Format 1238au BufNewFile,BufRead *.rst setf rst 1239 1240" RTF 1241au BufNewFile,BufRead *.rtf setf rtf 1242 1243" Ruby 1244au BufNewFile,BufRead *.rb,*.rbw,*.gem,*.gemspec setf ruby 1245 1246" S-lang (or shader language!) 1247au BufNewFile,BufRead *.sl setf slang 1248 1249" Samba config 1250au BufNewFile,BufRead smb.conf setf samba 1251 1252" SAS script 1253au BufNewFile,BufRead *.sas setf sas 1254 1255" Sather 1256au BufNewFile,BufRead *.sa setf sather 1257 1258" Scilab 1259au BufNewFile,BufRead *.sci setf scilab 1260 1261" SDL 1262au BufNewFile,BufRead *.sdl,*.pr setf sdl 1263 1264" sed 1265au BufNewFile,BufRead *.sed setf sed 1266 1267" Sendmail 1268au BufNewFile,BufRead sendmail.cf setf sm 1269 1270" Sendmail .mc files are actually m4 1271au BufNewFile,BufRead *.mc setf m4 1272 1273" SGML 1274au BufNewFile,BufRead *.sgm,*.sgml 1275 \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' | 1276 \ setf sgmllnx | 1277 \ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' | 1278 \ let b:docbk_type="sgml" | 1279 \ setf docbk | 1280 \ else | 1281 \ setf sgml | 1282 \ endif 1283 1284" SGMLDECL 1285au BufNewFile,BufRead *.decl,*.dcl,*.dec 1286 \ if getline(1).getline(2).getline(3) =~? '^<!SGML' | 1287 \ setf sgmldecl | 1288 \ endif 1289 1290" SGML catalog file 1291au BufNewFile,BufRead sgml.catalog*,catalog setf catalog 1292 1293" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc. 1294" Gentoo ebuilds are actually bash scripts 1295au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,.bash_logout*,*.bash,*.ebuild call SetFileTypeSH("bash") 1296au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh") 1297au BufNewFile,BufRead /etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1)) 1298 1299fun! SetFileTypeSH(name) 1300 if a:name =~ '\<ksh\>' 1301 let b:is_kornshell = 1 1302 if exists("b:is_bash") 1303 unlet b:is_bash 1304 endif 1305 if exists("b:is_sh") 1306 unlet b:is_sh 1307 endif 1308 elseif exists("g:bash_is_sh") || a:name =~ '\<bash\>' || a:name =~ '\<bash2\>' 1309 let b:is_bash = 1 1310 if exists("b:is_kornshell") 1311 unlet b:is_kornshell 1312 endif 1313 if exists("b:is_sh") 1314 unlet b:is_sh 1315 endif 1316 elseif a:name =~ '\<sh\>' 1317 let b:is_sh = 1 1318 if exists("b:is_kornshell") 1319 unlet b:is_kornshell 1320 endif 1321 if exists("b:is_bash") 1322 unlet b:is_bash 1323 endif 1324 endif 1325 setf sh 1326endfun 1327 1328" tcsh scripts 1329au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login setf tcsh 1330 1331" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh) 1332au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,*.csh,.alias call SetFileTypeCSH() 1333 1334fun! SetFileTypeCSH() 1335 if exists("g:filetype_csh") 1336 exe "setf " . g:filetype_csh 1337 elseif &shell =~ "tcsh" 1338 setf tcsh 1339 else 1340 setf csh 1341 endif 1342endfun 1343 1344" Z-Shell script 1345au BufNewFile,BufRead .zsh*,.zlog*,.zprofile,/etc/zprofile,.zfbfmarks,.zcompdump* setf zsh 1346 1347" Scheme 1348au BufNewFile,BufRead *.scm,*.ss setf scheme 1349 1350" Screen RC 1351au BufNewFile,BufRead .screenrc,screenrc setf screen 1352 1353" Simula 1354au BufNewFile,BufRead *.sim setf simula 1355 1356" SINDA 1357au BufNewFile,BufRead *.sin,*.s85 setf sinda 1358 1359" SKILL 1360au BufNewFile,BufRead *.il setf skill 1361 1362" SLRN 1363au BufNewFile,BufRead .slrnrc setf slrnrc 1364au BufNewFile,BufRead *.score setf slrnsc 1365 1366" Smalltalk 1367au BufNewFile,BufRead *.st,*.cls setf st 1368 1369" Smarty templates 1370au BufNewFile,BufRead *.tpl setf smarty 1371 1372" SMIL or XML 1373au BufNewFile,BufRead *.smil 1374 \ if getline(1) =~ '<?\s*xml.*?>' | 1375 \ setf xml | 1376 \ else | 1377 \ setf smil | 1378 \ endif 1379 1380" SMIL or SNMP MIB file 1381au BufNewFile,BufRead *.smi 1382 \ if getline(1) =~ '\<smil\>' | 1383 \ setf smil | 1384 \ else | 1385 \ setf mib | 1386 \ endif 1387 1388" SMITH 1389au BufNewFile,BufRead *.smt,*.smith setf smith 1390 1391" Snobol4 1392au BufNewFile,BufRead *.sno setf snobol4 1393 1394" SNMP MIB files 1395au BufNewFile,BufRead *.mib,*.my setf mib 1396 1397" Snort Configuration 1398au BufNewFile,BufRead *.hog,snort.conf,vision.conf,*.rules setf hog 1399 1400" Spec (Linux RPM) 1401au BufNewFile,BufRead *.spec setf spec 1402 1403" Speedup (AspenTech plant simulator) 1404au BufNewFile,BufRead *.speedup,*.spdata,*.spd setf spup 1405 1406" Slice 1407au BufNewFile,BufRead *.ice setf slice 1408 1409" Spice 1410au BufNewFile,BufRead *.sp,*.spice setf spice 1411 1412" Spyce 1413au BufNewFile,BufRead *.spy,*.spi setf spyce 1414 1415" Squid 1416au BufNewFile,BufRead squid.conf setf squid 1417 1418" SQL (all but the first one for Oracle Designer) 1419au BufNewFile,BufRead *.sql,*.tyb,*.typ,*.tyc,*.pkb,*.pks setf sql 1420 1421" SQLJ 1422au BufNewFile,BufRead *.sqlj setf sqlj 1423 1424" SQR 1425au BufNewFile,BufRead *.sqr,*.sqi setf sqr 1426 1427" OpenSSH configuration 1428au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig 1429 1430" OpenSSH server configuration 1431au BufNewFile,BufRead sshd_config setf sshdconfig 1432 1433" Stored Procedures 1434au BufNewFile,BufRead *.stp setf stp 1435 1436" Standard ML 1437au BufNewFile,BufRead *.sml setf sml 1438 1439" Tads (or Nroff) 1440au BufNewFile,BufRead *.t 1441 \ if !<SID>FTnroff() | setf tads | endif 1442 1443" Tags 1444au BufNewFile,BufRead tags setf tags 1445 1446" TAK 1447au BufNewFile,BufRead *.tak setf tak 1448 1449" Tcl 1450au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk setf tcl 1451 1452" TealInfo 1453au BufNewFile,BufRead *.tli setf tli 1454 1455" Telix Salt 1456au BufNewFile,BufRead *.slt setf tsalt 1457 1458" Terminfo 1459au BufNewFile,BufRead *.ti setf terminfo 1460 1461" TeX 1462au BufNewFile,BufRead *.tex,*.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex 1463 1464" Texinfo 1465au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo 1466 1467" TeX configuration 1468au BufNewFile,BufRead texmf.cnf setf texmf 1469 1470" Tidy config 1471au BufNewFile,BufRead .tidyrc,tidyrc setf tidy 1472 1473" TF mud client 1474au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf 1475 1476" TSS - Geometry 1477au BufNewFile,BufReadPost *.tssgm setf tssgm 1478 1479" TSS - Optics 1480au BufNewFile,BufReadPost *.tssop setf tssop 1481 1482" TSS - Command Line (temporary) 1483au BufNewFile,BufReadPost *.tsscl setf tsscl 1484 1485" Motif UIT/UIL files 1486au BufNewFile,BufRead *.uit,*.uil setf uil 1487 1488" UnrealScript 1489au BufNewFile,BufRead *.uc setf uc 1490 1491" Verilog HDL 1492au BufNewFile,BufRead *.v setf verilog 1493 1494" VHDL 1495au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vhdl_[0-9]*,*.vbe,*.vst setf vhdl 1496 1497" Vim script 1498au BufNewFile,BufRead *.vim,.exrc,_exrc setf vim 1499 1500" Viminfo file 1501au BufNewFile,BufRead .viminfo,_viminfo setf viminfo 1502 1503" Virata Config Script File 1504au BufRead,BufNewFile *.hw,*.module,*.pkg setf virata 1505 1506" Visual Basic (also uses *.bas) or FORM 1507au BufNewFile,BufRead *.frm call <SID>FTVB("form") 1508 1509" SaxBasic is close to Visual Basic 1510au BufNewFile,BufRead *.sba setf vb 1511 1512" Vgrindefs file 1513au BufNewFile,BufRead vgrindefs setf vgrindefs 1514 1515" VRML V1.0c 1516au BufNewFile,BufRead *.wrl setf vrml 1517 1518" Webmacro 1519au BufNewFile,BufRead *.wm setf webmacro 1520 1521" Wget config 1522au BufNewFile,BufRead .wgetrc,wgetrc setf wget 1523 1524" Website MetaLanguage 1525au BufNewFile,BufRead *.wml setf wml 1526 1527" Winbatch 1528au BufNewFile,BufRead *.wbt setf winbatch 1529 1530" WvDial 1531au BufNewFile,BufRead wvdial.conf,.wvdialrc setf wvdial 1532 1533" CVS RC file 1534au BufNewFile,BufRead .cvsrc setf cvsrc 1535 1536" CVS commit file 1537au BufNewFile,BufRead cvs\d\+ setf cvs 1538 1539" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment 1540" lines in a WEB file). 1541au BufNewFile,BufRead *.web 1542 \ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" | 1543 \ setf web | 1544 \ else | 1545 \ setf winbatch | 1546 \ endif 1547 1548" Windows Scripting Host and Windows Script Component 1549au BufNewFile,BufRead *.ws[fc] setf wsh 1550 1551" X Pixmap (dynamically sets colors, use BufEnter to make it work better) 1552au BufEnter *.xpm 1553 \ if getline(1) =~ "XPM2" | 1554 \ setf xpm2 | 1555 \ else | 1556 \ setf xpm | 1557 \ endif 1558au BufEnter *.xpm2 setf xpm2 1559 1560" XFree86 config 1561au BufNewFile,BufRead XF86Config 1562 \ if getline(1) =~ '\<XConfigurator\>' | 1563 \ let b:xf86c_xfree86_version = 3 | 1564 \ endif | 1565 \ setf xf86conf 1566 1567" Xorg config 1568au BufNewFile,BufRead xorg.conf,xorg.conf-4 let b:xf86c_xfree86_version = 4 | setf xf86conf 1569 1570" XS Perl extension interface language 1571au BufNewFile,BufRead *.xs setf xs 1572 1573" X resources file 1574au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults 1575 1576" Xmath 1577au BufNewFile,BufRead *.msc,*.msf setf xmath 1578au BufNewFile,BufRead *.ms 1579 \ if !<SID>FTnroff() | setf xmath | endif 1580 1581" XML 1582au BufNewFile,BufRead *.xml 1583 \ if getline(1) . getline(2) . getline(3) =~ '<!DOCTYPE.*DocBook' | 1584 \ let b:docbk_type="xml" | 1585 \ setf docbk | 1586 \ else | 1587 \ setf xml | 1588 \ endif 1589 1590" XMI (holding UML models) is also XML 1591au BufNewFile,BufRead *.xmi setf xml 1592 1593" CSPROJ files are Visual Studio.NET's XML-based project config files 1594au BufNewFile,BufRead *.csproj,*.csproj.user setf xml 1595 1596" Qt Linguist translation source and Qt User Interface Files are XML 1597au BufNewFile,BufRead *.ts,*.ui setf xml 1598 1599" XSD 1600au BufNewFile,BufRead *.xsd setf xsd 1601 1602" Xslt 1603au BufNewFile,BufRead *.xsl,*.xslt setf xslt 1604 1605" Yacc 1606au BufNewFile,BufRead *.y,*.yy setf yacc 1607 1608" Yaml 1609au BufNewFile,BufRead *.yaml,*.yml setf yaml 1610 1611" Z80 assembler asz80 1612au BufNewFile,BufRead *.z8a setf z8a 1613 1614augroup END 1615 1616 1617" Source the user-specified filetype file, for backwards compatibility with 1618" Vim 5.x. 1619if exists("myfiletypefile") && file_readable(expand(myfiletypefile)) 1620 execute "source " . myfiletypefile 1621endif 1622 1623 1624" Check for "*" after loading myfiletypefile, so that scripts.vim is only used 1625" when there are no matching file name extensions. 1626" Don't do this for compressed files. 1627augroup filetypedetect 1628au BufNewFile,BufRead * 1629 \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat 1630 \ | runtime! scripts.vim | endif 1631au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif 1632 1633 1634" Extra checks for when no filetype has been detected now. Mostly used for 1635" patterns that end in "*". E.g., "zsh*" matches "zsh.vim", but that's a Vim 1636" script file. 1637 1638" BIND zone 1639au BufNewFile,BufRead /var/named/* setf bindzone 1640 1641" Changelog 1642au BufNewFile,BufRead [cC]hange[lL]og* if getline(1) =~ '; urgency=' 1643 \| setf debchangelog | else | setf changelog | endif 1644 1645" Crontab 1646au BufNewFile,BufRead crontab,crontab.* setf crontab 1647 1648" Dracula 1649au BufNewFile,BufRead drac.* setf dracula 1650 1651" Fvwm 1652au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook 1653 \ let b:fvwm_version = 1 | setf fvwm 1654au BufNewFile,BufRead *fvwm2rc* 1655 \ if expand("<afile>:e") == "m4" | setf fvwm2m4 | else | 1656 \ let b:fvwm_version = 2 | setf fvwm | endif 1657 1658" GTK RC 1659au BufNewFile,BufRead .gtkrc*,gtkrc* setf gtkrc 1660 1661" Jam 1662au BufNewFile,BufRead Prl*.*,JAM*.* setf jam 1663 1664" Jargon 1665au! BufNewFile,BufRead *jarg* 1666 \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE' | 1667 \ setf jargon | 1668 \ endif 1669 1670" Makefile 1671au BufNewFile,BufRead [mM]akefile* setf make 1672 1673" Ruby Makefile 1674au BufNewFile,BufRead [rR]akefile* setf ruby 1675 1676" Mutt setup file 1677au BufNewFile,BufRead muttrc*,Muttrc* setf muttrc 1678 1679" Nroff macros 1680au BufNewFile,BufRead tmac.* setf nroff 1681 1682" Printcap and Termcap 1683au BufNewFile,BufRead *printcap* 1684 \ if !did_filetype() | let b:ptcap_type = "print" | setf ptcap | endif 1685au BufNewFile,BufRead *termcap* 1686 \ if !did_filetype() | let b:ptcap_type = "term" | setf ptcap | endif 1687 1688" Vim script 1689au BufNewFile,BufRead *vimrc* setf vim 1690 1691" Subversion commit file 1692au BufNewFile,BufRead svn-commit.*.tmp setf svn 1693 1694" X resources file 1695au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* setf xdefaults 1696 1697" XFree86 config 1698au BufNewFile,BufRead XF86Config-4* 1699 \ let b:xf86c_xfree86_version = 4 | setf xf86conf 1700au BufNewFile,BufRead XF86Config* 1701 \ if getline(1) =~ '\<XConfigurator\>' | 1702 \ let b:xf86c_xfree86_version = 3 | 1703 \ endif | 1704 \ setf xf86conf 1705 1706" X11 xmodmap 1707au BufNewFile,BufRead *xmodmap* setf xmodmap 1708 1709" Z-Shell script 1710au BufNewFile,BufRead zsh*,zlog* setf zsh 1711 1712 1713" Generic configuration file (check this last, it's just guessing!) 1714au BufNewFile,BufRead,StdinReadPost * 1715 \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat 1716 \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#' 1717 \ || getline(4) =~ '^#' || getline(5) =~ '^#') | 1718 \ setf conf | 1719 \ endif 1720 1721" Use the plugin-filetype checks last, they may overrule any of the previously 1722" detected filetypes. 1723runtime! ftdetect/*.vim 1724 1725augroup END 1726 1727 1728" If the GUI is already running, may still need to install the Syntax menu. 1729" Don't do it when the 'M' flag is included in 'guioptions'. 1730if has("menu") && has("gui_running") 1731 \ && !exists("did_install_syntax_menu") && &guioptions !~# "M" 1732 source <sfile>:p:h/menu.vim 1733endif 1734 1735" Restore 'cpoptions' 1736let &cpo = s:cpo_save 1737unlet s:cpo_save 1738