home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / mac / vim55rt.sit / runtime / filetype.vim < prev    next >
Encoding:
Text File  |  1999-09-25  |  13.4 KB  |  558 lines  |  [TEXT/MPS ]

  1. " Vim support file to detect file types
  2. "
  3. " Maintainer:    Bram Moolenaar <Bram@vim.org>
  4. " Last change:    1999 Sep 12
  5.  
  6. if !exists("did_load_filetypes")
  7. let did_load_filetypes = 1
  8.  
  9. augroup filetype
  10.  
  11. " Ignored extensions
  12. au BufNewFile,BufRead *.orig,*.bak,*.old    exe "doau filetype BufRead " . expand("<afile>:r")
  13. au BufNewFile,BufRead *~        exe "doau filetype BufRead " . substitute(expand("<afile>"), '\~$', '', '')
  14.  
  15.  
  16. " ABC music notation
  17. au BufNewFile,BufRead *.abc            set ft=abc
  18.  
  19. " Ada (83, 9X, 95)
  20. au BufNewFile,BufRead *.adb,*.ads        set ft=ada
  21.  
  22. " AHDL
  23. au BufNewFile,BufRead *.tdf            set ft=ahdl
  24.  
  25. " Applix ELF
  26. au BufNewFile,BufRead *.am            set ft=elf
  27.  
  28. " ASN.1
  29. au BufNewFile,BufRead *.asn,*.asn1        set ft=asn
  30.  
  31. " Active Server Pages (with Visual Basic Script)
  32. au BufNewFile,BufRead *.asp,*.asa        set ft=aspvbs
  33.  
  34. " Assembly (all kinds)
  35. au BufNewFile,BufRead *.asm,*.s,*.i,*.mac    call FTCheck_asm()
  36.  
  37. " This function checks for the kind of assembly that is wanted by the user, or
  38. " can be detected from the first five lines of the file.
  39. fun! FTCheck_asm()
  40.   " make sure b:asmsyntax exists
  41.   if !exists("b:asmsyntax")
  42.     let b:asmsyntax = ""
  43.   endif
  44.  
  45.   if b:asmsyntax == ""
  46.     " see if file contains any asmsyntax=foo overrides. If so, change
  47.     " b:asmsyntax appropriately
  48.     let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4).
  49.     \" ".getline(5)." "
  50.     if head =~ '\sasmsyntax=\S\+\s'
  51.       let b:asmsyntax = substitute(head, '.*\sasmsyntax=\(\S\+\)\s.*','\1', "")
  52.     endif
  53.   endif
  54.  
  55.   " if b:asmsyntax still isn't set, default to asmsyntax or GNU
  56.   if b:asmsyntax == ""
  57.     if exists("g:asmsyntax")
  58.       let b:asmsyntax = g:asmsyntax
  59.     else
  60.       let b:asmsyntax = "asm"
  61.     endif
  62.   endif
  63.  
  64.   exe "set ft=" . b:asmsyntax
  65. endfun
  66.  
  67. " Atlas
  68. au BufNewFile,BufRead *.atl,*.as        set ft=atlas
  69.  
  70. " Avenue
  71. au BufNewFile,BufRead *.ave            set ft=ave
  72.  
  73. " Awk
  74. au BufNewFile,BufRead *.awk            set ft=awk
  75.  
  76. " BASIC or Visual Basic
  77. " Check if one of the first five lines contains "VB_Name".  In that case it is
  78. " probably a Visual Basic file.  Otherwise it's assumed to be 'normal' basic.
  79. au BufNewFile,BufRead *.bas            if getline(1).getline(2).
  80.     \getline(3).getline(4).getline(5) =~? 'VB_Name'|set ft=vb|
  81.     \else|set ft=basic|endif
  82.  
  83. " Batch file for MSDOS
  84. au BufNewFile,BufRead *.bat,*.sys        set ft=dosbatch
  85.  
  86. " Batch file for 4DOS
  87. au BufNewFile,BufRead *.btm            set ft=btm
  88.  
  89. " BibTeX bibliography database file
  90. au BufNewFile,BufRead *.bib            set ft=bib
  91.  
  92. " C
  93. au BufNewFile,BufRead *.c            set ft=c
  94.  
  95. " C++
  96. if has("fname_case")
  97.   au BufNewFile,BufRead *.cpp,*.cc,*.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.inl set ft=cpp
  98. else
  99.   au BufNewFile,BufRead *.cpp,*.cc,*.cxx,*.c++,*.hh,*.hxx,*.hpp,*.inl set ft=cpp
  100. endif
  101.  
  102. " .h files can be C or C++, set c_syntax_for_h if you want C
  103. au BufNewFile,BufRead *.h            if exists("c_syntax_for_h")|set ft=c|else|set ft=cpp|endif
  104.  
  105. " Cascading Style Sheets
  106. au BufNewFile,BufRead *.css            set ft=css
  107.  
  108. " Century Term Command Scripts
  109. au BufNewFile,BufRead *.cmd,*.con        set ft=cterm
  110.  
  111. " Clean
  112. au BufNewFile,BufReadPost *.dcl,*.icl        set ft=clean
  113.  
  114. " Clipper
  115. au BufNewFile,BufRead *.prg            set ft=clipper
  116.  
  117. " Cobol
  118. au BufNewFile,BufRead *.cbl,*.cob,*.cpy,*.lib    set ft=cobol
  119.  
  120. " Configure scripts
  121. au BufNewFile,BufRead configure.in        set ft=config
  122.  
  123. " Diff files
  124. au BufNewFile,BufRead *.diff,*.rej        set ft=diff
  125.  
  126. " Diva (with Skill) or InstallShield
  127. au BufNewFile,BufRead *.rul            if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield'|set ft=ishd|else|set ft=diva|endif
  128.  
  129. " DCL (Digital Command Language - vms)
  130. au BufNewFile,BufRead *.com            set ft=dcl
  131.  
  132. " Microsoft Module Definition
  133. au BufNewFile,BufRead *.def            set ft=def
  134.  
  135. " Dracula
  136. au BufNewFile,BufRead drac.*,*.drac,*.drc,*lvs,*lpe set ft=dracula
  137.  
  138. " DTD (Document Type Definition for XML)
  139. au BufNewFile,BufRead *.dtd            set ft=dtd
  140.  
  141. " Eiffel
  142. au BufNewFile,BufRead *.e,*.E            set ft=eiffel
  143.  
  144. " Elm Filter Rules file
  145. au BufNewFile,BufReadPost filter-rules        set ft=elmfilt
  146.  
  147. " ESQL-C
  148. au BufNewFile,BufRead *.ec,*.EC            set ft=esqlc
  149.  
  150. " Exports
  151. au BufNewFile,BufRead exports            set ft=exports
  152.  
  153. " Focus Executable
  154. au BufNewFile,BufRead *.fex,*.focexec        set ft=focexec
  155.  
  156. " Focus Master file
  157. au BufNewFile,BufRead *.mas,*.master        set ft=master
  158.  
  159. " Forth
  160. au BufNewFile,BufRead *.fs,*.ft            set ft=forth
  161.  
  162. " Fortran
  163. au BufNewFile,BufRead *.f,*.F,*.for,*.fpp    set ft=fortran
  164.  
  165. " Fvwm
  166. au BufNewFile,BufRead *fvwm*rc*            set ft=fvwm
  167.  
  168. " GDB command files
  169. au BufNewFile,BufRead .gdbinit            set ft=gdb
  170.  
  171. " GDMO
  172. au BufNewFile,BufRead *.mo,*.gdmo        set ft=gdmo
  173.  
  174. " GP scripts (2.0 and onward)
  175. au BufNewFile,BufRead *.gp            set ft=gp
  176.  
  177. " Gnuplot scripts
  178. au BufNewFile,BufRead *.gpi            set ft=gnuplot
  179.  
  180. " Haskell
  181. au BufNewFile,BufRead *.hs            set ft=haskell
  182. au BufNewFile,BufRead *.lhs            set ft=lhaskell
  183.  
  184. " HTML (.shtml for server side)
  185. au BufNewFile,BufRead *.html,*.htm,*.shtml    set ft=html
  186.  
  187. " HTML with M4
  188. au BufNewFile,BufRead *.html.m4            set ft=htmlm4
  189.  
  190. " IDL (Interface Description Language)
  191. au BufNewFile,BufRead *.idl            set ft=idl
  192.  
  193. " IDL (Interactive Data Language)
  194. au BufNewFile,BufRead *.pro            set ft=idlang
  195.  
  196. " Inform
  197. au BufNewFile,BufRead *.inf,*.INF        set ft=inform
  198.  
  199. " .INI file for MSDOS
  200. au BufNewFile,BufRead *.ini            set ft=dosini
  201.  
  202. " Java
  203. au BufNewFile,BufRead *.java,*.jav        set ft=java
  204.  
  205. " JavaCC
  206. au BufNewFile,BufRead *.jj,*.jjt        set ft=javacc
  207.  
  208. " JavaScript
  209. au BufNewFile,BufRead *.js,*.javascript        set ft=javascript
  210.  
  211. " Jgraph
  212. au BufNewFile,BufRead *.jgr            set ft=jgraph
  213.  
  214. " Kimwitu[++]
  215. au BufNewFile,BufRead *.k            set ft=kwt
  216.  
  217. " Lace (ISE)
  218. au BufNewFile,BufRead *.ace,*.ACE        set ft=lace
  219.  
  220. " Lex
  221. au BufNewFile,BufRead *.lex,*.l            set ft=lex
  222.  
  223. " Lilo: Linux loader
  224. au BufNewFile,BufRead lilo.conf*        set ft=lilo
  225.  
  226. " Lisp
  227. if has("fname_case")
  228.   au BufNewFile,BufRead *.lsp,*.L        set ft=lisp
  229. else
  230.   au BufNewFile,BufRead *.lsp            set ft=lisp
  231. endif
  232.  
  233. " Lite
  234. au BufNewFile,BufRead *.lite,*.lt        set ft=lite
  235.  
  236. " LOTOS
  237. au BufNewFile,BufRead *.lot,*.lotos        set ft=lotos
  238.  
  239. " Lout (also: *.lt)
  240. au BufNewFile,BufRead *.lou,*.lout        set ft=lout
  241.  
  242. " Lua
  243. au BufNewFile,BufRead *.lua            set ft=lua
  244.  
  245. " Lynx style file
  246. au BufNewFile,BufRead *.lss            set ft=lss
  247.  
  248. " M4
  249. au BufNewFile,BufRead *.m4            if expand("<afile>") !~?  "html.m4$" | set ft=m4 | endif
  250.  
  251. " Mail (for Elm, trn and rn)
  252. au BufNewFile,BufRead snd.*,.letter,.followup,.article,.article.[0-9]\+,pico.[0-9]\+,mutt*[0-9],ae[0-9]\+.txt set ft=mail
  253.  
  254. " Makefile
  255. au BufNewFile,BufRead [mM]akefile*,GNUmakefile,*.mk,*.mak,*.dsp set ft=make
  256.  
  257. " Manpage
  258. au BufNewFile,BufRead *.man            set ft=man
  259.  
  260. " Maple V
  261. au BufNewFile,BufRead *.mv,*.mpl,*.mws        set ft=maple
  262.  
  263. " Matlab
  264. au BufNewFile,BufRead *.m            set ft=matlab
  265.  
  266. " Metafont
  267. au BufNewFile,BufRead *.mf            set ft=mf
  268.  
  269. " MetaPost
  270. au BufNewFile,BufRead *.mp            set ft=mp
  271.  
  272. " Modsim III
  273. au BufNewFile,BufRead *.mod            set ft=modsim3
  274.  
  275. " Modula 2
  276. au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi set ft=modula2
  277.  
  278. " Modula 3
  279. au BufNewFile,BufRead *.m3,*.i3            set ft=modula3
  280.  
  281. " Msql
  282. au BufNewFile,BufRead *.msql            set ft=msql
  283.  
  284. " M$ Resource files
  285. au BufNewFile,BufRead *.rc            set ft=rc
  286.  
  287. " Mutt setup file
  288. au BufNewFile,BufRead .muttrc*,Muttrc        set ft=muttrc
  289.  
  290. " Novell netware batch files
  291. au BufNewFile,BufRead *.ncf            set ft=ncf
  292.  
  293. " Nroff/Troff (*.ms is checked below)
  294. au BufNewFile,BufRead *.me,*.mm,*.tr,*.nr    set ft=nroff
  295. au BufNewFile,BufRead *.[1-9]            call FTCheck_nroff()
  296.  
  297. " This function checks if one of the first five lines start with a dot.  In
  298. " that case it is probably an nroff file: 'filetype' is set and 1 is returned.
  299. fun! FTCheck_nroff()
  300.   if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.'
  301.     set ft=nroff
  302.     return 1
  303.   endif
  304.   return 0
  305. endfun
  306.  
  307. " OCAML
  308. au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly    set ft=ocaml
  309.  
  310. " OPL
  311. au BufNewFile,BufRead *.[Oo][Pp][Ll]        set ft=opl
  312.  
  313. " Pascal
  314. au BufNewFile,BufRead *.p,*.pas            set ft=pascal
  315.  
  316. " Perl
  317. if has("fname_case")
  318.   au BufNewFile,BufRead *.pl,*.PL        set ft=perl
  319. else
  320.   au BufNewFile,BufRead *.pl            set ft=perl
  321. endif
  322.  
  323. " Perl or XPM
  324. au BufNewFile,BufRead *.pm        if getline(1) =~ "XPM"|set ft=xpm|else|set ft=perl|endif
  325.  
  326. " Perl POD
  327. au BufNewFile,BufRead *.pod            set ft=pod
  328.  
  329. " Php3
  330. au BufNewFile,BufRead *.php3            set ft=php3
  331.  
  332. " Phtml
  333. au BufNewFile,BufRead *.phtml            set ft=phtml
  334.  
  335. " Pike
  336. au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod set ft=pike
  337.  
  338. " Pine config
  339. au BufNewFile,BufRead .pinerc,pinerc        set ft=pine
  340.  
  341. " PL/SQL
  342. au BufNewFile,BufRead *.pls,*.plsql        set ft=plsql
  343.  
  344. " PO (GNU gettext)
  345. au BufNewFile,BufRead *.po            set ft=po
  346.  
  347. " PostScript
  348. au BufNewFile,BufRead *.ps,*.eps        set ft=postscr
  349.  
  350. " Povray
  351. au BufNewFile,BufRead *.pov,*.inc        set ft=pov
  352.  
  353. " Printcap and Termcap
  354. au BufNewFile,BufRead *printcap*,*termcap*    set ft=ptcap
  355.  
  356. " PCCTS
  357. au BufNewFile,BufRead *.g            set ft=pccts
  358.  
  359. " Procmail
  360. au BufNewFile,BufRead .procmail,.procmailrc    set ft=procmail
  361.  
  362. " Prolog
  363. au BufNewFile,BufRead *.pdb            set ft=prolog
  364.  
  365. " Python
  366. au BufNewFile,BufRead *.py            set ft=python
  367.  
  368. " Radiance
  369. au BufNewFile,BufRead *.rad,*.mat        set ft=radiance
  370.  
  371. " Rexx
  372. au BufNewFile,BufRead *.rexx,*.rex        set ft=rexx
  373.  
  374. " Rexx or Rebol
  375. au BufNewFile,BufRead *.r            if getline(1) =~ '^REBOL'|set ft=rebol|else|set ft=rexx|endif
  376.  
  377. " Rpcgen
  378. au BufNewFile,BufRead *.x            set ft=rpcgen
  379.  
  380. " S-lang (or shader language!)
  381. au BufNewFile,BufRead *.sl            set ft=slang
  382.  
  383. " SAS script
  384. au BufNewFile,BufRead *.sas            set ft=sas
  385.  
  386. " Sather
  387. au BufNewFile,BufRead *.sa            set ft=sather
  388.  
  389. " SDL
  390. au BufNewFile,BufRead *.sdl,*.pr        set ft=sdl
  391.  
  392. " sed
  393. au BufNewFile,BufRead *.sed            set ft=sed
  394.  
  395. " Sendmail
  396. au BufNewFile,BufRead sendmail.cf        set ft=sm
  397.  
  398. " SGML
  399. au BufNewFile,BufRead *.sgm,*.sgml        if getline(1).getline(2).
  400.     \getline(3).getline(4).getline(5) =~? 'linuxdoc'|set ft=sgmllnx|
  401.     \else|set ft=sgml|endif
  402.  
  403. " Shell scripts (sh, ksh, bash, csh); Allow .profile_foo etc.
  404. au BufNewFile,BufRead /etc/profile,.profile*,.bashrc*,.bash_profile*,.kshrc*,*.sh,*.ksh,*.bash,*.env set ft=sh
  405. au BufNewFile,BufRead .login*,.cshrc*,.tcshrc*,*.csh,*.tcsh set ft=csh
  406.  
  407. " Z-Shell script
  408. au BufNewFile,BufRead .z*,zsh*,zlog*        set ft=zsh
  409.  
  410. " Scheme
  411. au BufNewFile,BufRead *.scm            set ft=scheme
  412.  
  413. " Simula
  414. au BufNewFile,BufRead *.sim            set ft=simula
  415.  
  416. " SKILL
  417. au BufNewFile,BufRead *.il            set ft=skill
  418.  
  419. " SLRN
  420. au BufNewFile,BufRead .slrnrc            set ft=slrnrc
  421. au BufNewFile,BufRead *.score            set ft=slrnsc
  422.  
  423. " Smalltalk
  424. au BufNewFile,BufRead *.st,*.cls        set ft=st
  425.  
  426. " SMIL
  427. au BufNewFile,BufReadPost *.smil        set ft=smil
  428.  
  429. " SMIL or SNMP MIB file
  430. au BufNewFile,BufRead *.smi        if getline(1) =~ '\<smil\>'|set ft=smil|else|set ft=mib|endif
  431.  
  432. " SNMP MIB files
  433. au BufNewFile,BufReadPost *.mib            set ft=mib
  434.  
  435. " Spec (Linux RPM)
  436. au BufNewFile,BufRead *.spec            set ft=spec
  437.  
  438. " Speedup (AspenTech plant simulator)
  439. au BufNewFile,BufRead *.speedup,*.spdata,*.spd    set ft=spup
  440.  
  441. " Spice
  442. au BufNewFile,BufRead *.sp,*.spice        set ft=spice
  443.  
  444. " Squid: Removed, because there are too many *.conf files that aren't Squid.
  445. "au BufNewFile,BufRead *.conf            set ft=squid
  446.  
  447. " SQL (all but the first one for Oracle Designer)
  448. au BufNewFile,BufRead *.sql,*.tyb,*.typ,*.tyc,*.pkb,*.pks    set ft=sql
  449.  
  450. " Tags
  451. au BufNewFile,BufRead tags            set ft=tags
  452.  
  453. " Tcl
  454. au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk    set ft=tcl
  455.  
  456. " Telix Salt
  457. au BufNewFile,BufRead *.slt            set ft=tsalt
  458.  
  459. " TeX
  460. au BufNewFile,BufRead *.tex,*.sty,*.dtx,*.ltx    set ft=tex
  461.  
  462. " TF mud client
  463. au BufNewFile,BufRead *.tf            set ft=tf
  464.  
  465. " Motif UIT/UIL files
  466. au BufNewFile,BufRead *.uit,*.uil        set ft=uil
  467.  
  468. " Verilog HDL
  469. au BufNewFile,BufRead *.v            set ft=verilog
  470.  
  471. " VHDL
  472. au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vhdl_[0-9]*,*.vbe,*.vst  set ft=vhdl
  473.  
  474. " Vim Help file
  475. if has("mac")
  476.   au BufNewFile,BufRead *[/:]vim*[/:]doc[/:]*.txt,*[/:]runtime[/:]doc[/:]*.txt set ft=help
  477. else
  478.   au BufNewFile,BufRead */vim*/doc/*.txt,*/runtime/doc/*.txt    set ft=help
  479. endif
  480.  
  481. " Vim script
  482. au BufNewFile,BufRead *vimrc*,*.vim,.exrc,_exrc set ft=vim
  483.  
  484. " Viminfo file
  485. au BufNewFile,BufRead .viminfo,_viminfo        set ft=viminfo
  486.  
  487. " Visual Basic (also uses *.bas)
  488. au BufNewFile,BufRead *.frm            set ft=vb
  489.  
  490. " Vgrindefs file
  491. au BufNewFile,BufRead vgrindefs            set ft=vgrindefs
  492.  
  493. " VRML V1.0c
  494. au BufNewFile,BufRead *.wrl            set ft=vrml
  495.  
  496. " Winbatch
  497. au BufNewFile,BufRead *.wbt            set ft=winbatch
  498.  
  499. " CWEB
  500. au BufNewFile,BufRead *.w            set ft=cweb
  501.  
  502. " WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
  503. " lines in a WEB file).
  504. au BufNewFile,BufRead *.web            if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" | set ft=web | else | set ft=winbatch | endif
  505.  
  506. " Changes for WEB and CWEB
  507. au BufNewFile,BufRead *.ch            set ft=change
  508.  
  509. " X Pixmap (dynamically sets colors, use BufEnter to make it work better)
  510. au BufEnter *.xpm                set ft=xpm
  511.  
  512. " XS Perl extension interface language
  513. au BufEnter *.xs                set ft=xs
  514.  
  515. " X resources file
  516. au BufNewFile,BufRead .Xdefaults,.Xresources,*/app-defaults/* set ft=xdefaults
  517.  
  518. " Xmath
  519. au BufNewFile,BufRead *.msc,*.msf        set ft=xmath
  520. au BufNewFile,BufRead *.ms            if !FTCheck_nroff() | set ft=xmath | endif
  521.  
  522. " vim: ts=8
  523. " XML
  524. au BufNewFile,BufRead *.xml            set ft=xml
  525.  
  526. " Yacc
  527. au BufNewFile,BufRead *.y            set ft=yacc
  528.  
  529. " Z80 assembler asz80
  530. au BufNewFile,BufRead *.z8a            set ft=z8a
  531.  
  532. augroup END
  533.  
  534.  
  535. " Source the user-specified filetype file
  536. if exists("myfiletypefile") && file_readable(expand(myfiletypefile))
  537.   execute "source " . myfiletypefile
  538. endif
  539.  
  540.  
  541. " Check for "*" after loading myfiletypefile, so that scripts.vim is only used
  542. " when there are no matching file name extensions.
  543. augroup filetype
  544.   au BufNewFile,BufRead,StdinReadPost *        if !did_filetype()|so <sfile>:p:h/scripts.vim|endif
  545. augroup END
  546.  
  547.  
  548. " If the GUI is already running, may still need to install the Syntax menu.
  549. " Don't do it when the 'M' flag is included in 'guioptions'
  550. if has("gui_running") && !exists("did_install_syntax_menu") && &guioptions !~# "M"
  551.   source <sfile>:p:h/menu.vim
  552. endif
  553.  
  554.  
  555. endif " !exists("did_load_filetypes")
  556.  
  557. " vim: ts=8
  558.