PageRenderTime 62ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 1ms

/tags/vim7.1.330/runtime/filetype.vim

#
Vim Script | 2296 lines | 2218 code | 36 blank | 42 comment | 25 complexity | 0c48bdfb88af8bdeafb9a9a2f25f370b MD5 | raw file

Large files files are truncated, but you can click here to view the full file

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

Large files files are truncated, but you can click here to view the full file