comparison runtime/filetype.vim @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children 4424b47a0797
comparison
equal deleted inserted replaced
6:c2daee826b8f 7:3fc0f57ecb91
1 " Vim support file to detect file types
2 "
3 " Maintainer: Bram Moolenaar <Bram@vim.org>
4 " Last Change: 2004 Jun 10
5
6 " Listen very carefully, I will say this only once
7 if exists("did_load_filetypes")
8 finish
9 endif
10 let did_load_filetypes = 1
11
12 " Line continuation is used here, remove 'C' from 'cpoptions'
13 let s:cpo_save = &cpo
14 set cpo&vim
15
16 augroup filetypedetect
17
18 " Ignored extensions
19 au BufNewFile,BufRead *.orig,*.bak,*.old,*.new,*.rpmsave,*.rpmnew
20 \ exe "doau filetypedetect BufRead " . expand("<afile>:r")
21 au 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
29 au 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.
36 if !exists("g:ft_ignore_pat")
37 let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
38 endif
39
40 " Abaqus or Trasys
41 au BufNewFile,BufRead *.inp call FTCheck_inp()
42
43 fun! 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
61 endfun
62
63 " A-A-P recipe
64 au BufNewFile,BufRead *.aap setf aap
65
66 " ABC music notation
67 au BufNewFile,BufRead *.abc setf abc
68
69 " ABEL
70 au BufNewFile,BufRead *.abl setf abel
71
72 " AceDB
73 au BufNewFile,BufRead *.wrm setf acedb
74
75 " Ada (83, 9X, 95)
76 au BufNewFile,BufRead *.adb,*.ads,*.ada setf ada
77
78 " AHDL
79 au BufNewFile,BufRead *.tdf setf ahdl
80
81 " AMPL
82 au BufNewFile,BufRead *.run setf ampl
83
84 " Ant
85 au BufNewFile,BufRead build.xml setf ant
86
87 " Apache style config file
88 au BufNewFile,BufRead proftpd.conf* setf apachestyle
89
90 " Apache config file
91 au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,.htaccess,apache.conf* setf apache
92
93 " XA65 MOS6510 cross assembler
94 au BufNewFile,BufRead *.a65 setf a65
95
96 " Applix ELF
97 au BufNewFile,BufRead *.am
98 \ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif
99
100 " Arc Macro Language
101 au BufNewFile,BufRead *.aml setf aml
102
103 " Arch Inventory file
104 au BufNewFile,BufRead .arch-inventory,=tagging-method setf arch
105
106 " ART*Enterprise (formerly ART-IM)
107 au BufNewFile,BufRead *.art setf art
108
109 " ASN.1
110 au BufNewFile,BufRead *.asn,*.asn1 setf asn
111
112 " Active Server Pages (with Visual Basic Script)
113 au 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)
121 au 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)
131 au 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)
135 au 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.
139 fun! <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
159 endfun
160
161 fun! 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
171 endfun
172
173 " Macro (VAX)
174 au BufNewFile,BufRead *.mar setf vmasm
175
176 " Atlas
177 au BufNewFile,BufRead *.atl,*.as setf atlas
178
179 " Automake
180 au BufNewFile,BufRead [mM]akefile.am setf automake
181
182 " Avenue
183 au BufNewFile,BufRead *.ave setf ave
184
185 " Awk
186 au BufNewFile,BufRead *.awk setf awk
187
188 " B
189 au BufNewFile,BufRead *.mch,*.ref,*.imp setf b
190
191 " BASIC or Visual Basic
192 au 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.
196 fun! <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
202 endfun
203
204 " Visual Basic Script (close to Visual Basic)
205 au BufNewFile,BufRead *.vbs,*.dsm,*.ctl setf vb
206
207 " Batch file for MSDOS.
208 au BufNewFile,BufRead *.bat,*.btm,*.sys setf dosbatch
209 " *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd.
210 au BufNewFile,BufRead *.cmd
211 \ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif
212
213 " Batch file for 4DOS
214 au BufNewFile,BufRead *.btm setf btm
215
216 " BC calculator
217 au BufNewFile,BufRead *.bc setf bc
218
219 " BDF font
220 au BufNewFile,BufRead *.bdf setf bdf
221
222 " BibTeX bibliography database file
223 au BufNewFile,BufRead *.bib setf bib
224
225 " BIND configuration
226 au BufNewFile,BufRead named.conf setf named
227
228 " BIND zone
229 au BufNewFile,BufRead named.root setf bindzone
230
231 " Blank
232 au BufNewFile,BufRead *.bl setf blank
233
234 " C or lpc
235 au BufNewFile,BufRead *.c call <SID>FTlpc()
236
237 fun! <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
249 endfun
250
251 " Calendar
252 au BufNewFile,BufRead calendar,*/.calendar/*,
253 \*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
254 \ setf calendar
255
256 " C#
257 au BufNewFile,BufRead *.cs setf cs
258
259 " Comshare Dimension Definition Language
260 au BufNewFile,BufRead *.cdl setf cdl
261
262 " Controllable Regex Mutilator
263 au BufNewFile,BufRead *.crm setf crm
264
265 " Cyn++
266 au BufNewFile,BufRead *.cyn setf cynpp
267
268 " Cynlib
269 " .cc and .cpp files can be C++ or Cynlib.
270 au BufNewFile,BufRead *.cc
271 \ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif
272 au BufNewFile,BufRead *.cpp
273 \ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif
274
275 " C++
276 if has("fname_case")
277 au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
278 else
279 au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
280 endif
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.
284 au 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)
290 au BufNewFile,BufRead *.chf setf ch
291
292 " TLH files are C++ headers generated by Visual C++'s #import from typelibs
293 au BufNewFile,BufRead *.tlh setf cpp
294
295 " Cascading Style Sheets
296 au BufNewFile,BufRead *.css setf css
297
298 " Century Term Command Scripts (*.cmd too)
299 au BufNewFile,BufRead *.con setf cterm
300
301 " Changelog
302 au BufNewFile,BufRead changelog.Debian,changelog.dch setf debchangelog
303 au BufNewFile,BufRead [cC]hange[lL]og if getline(1) =~ '; urgency='
304 \| setf debchangelog | else | setf changelog | endif
305
306 " CHILL
307 au BufNewFile,BufRead *..ch setf chill
308
309 " Changes for WEB and CWEB or CHILL
310 au 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.
317 fun! <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
339 endfun
340
341 " Clean
342 au BufNewFile,BufRead *.dcl,*.icl setf clean
343
344 " Clever
345 au BufNewFile,BufRead *.eni setf cl
346
347 " Clever or dtd
348 au BufNewFile,BufRead *.ent call <SID>FTent()
349
350 fun! <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
368 endfun
369
370 " Clipper (or FoxPro)
371 au 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
379 au BufNewFile,BufRead *.cbl,*.cob,*.cpy,*.lib setf cobol
380
381 " Cold Fusion
382 au BufNewFile,BufRead *.cfm,*.cfi,*.cfc setf cf
383
384 " Configure scripts
385 au BufNewFile,BufRead configure.in,configure.ac setf config
386
387 " WildPackets EtherPeek Decoder
388 au BufNewFile,BufRead *.dcd setf dcd
389
390 " Enlightenment configuration files
391 au BufNewFile,BufRead *enlightenment/*.cfg setf c
392
393 " Eterm
394 au BufNewFile,BufRead *Eterm/*.cfg setf eterm
395
396 " Lynx config files
397 au BufNewFile,BufRead lynx.cfg setf lynx
398
399 " Quake
400 au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg setf quake
401 au BufNewFile,BufRead *quake[1-3]/*.cfg setf quake
402
403 " Quake C
404 au BufNewFile,BufRead *.qc setf c
405
406 " Configure files
407 au BufNewFile,BufRead *.cfg setf cfg
408
409 " Communicating Sequential Processes
410 au BufNewFile,BufRead *.csp,*.fdr setf csp
411
412 " CUPL logic description and simulation
413 au BufNewFile,BufRead *.pld setf cupl
414 au BufNewFile,BufRead *.si setf cuplsim
415
416 " Debian Control
417 au BufNewFile,BufRead */debian/control setf debcontrol
418
419 " ROCKLinux package description
420 au BufNewFile,BufRead *.desc setf desc
421
422 " the D language
423 au BufNewFile,BufRead *.d setf d
424
425 " Desktop files
426 au BufNewFile,BufRead *.desktop,.directory setf desktop
427
428 " Diff files
429 au BufNewFile,BufRead *.diff,*.rej,*.patch setf diff
430
431 " Dircolors
432 au BufNewFile,BufRead .dir_colors,/etc/DIR_COLORS setf dircolors
433
434 " Diva (with Skill) or InstallShield
435 au 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
443 au 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
449 au BufNewFile,BufRead *.dot setf dot
450
451 " Dylan - lid files
452 au BufNewFile,BufRead *.lid setf dylanlid
453
454 " Dylan - intr files (melange)
455 au BufNewFile,BufRead *.intr setf dylanintr
456
457 " Dylan
458 au BufNewFile,BufRead *.dylan setf dylan
459
460 " Microsoft Module Definition
461 au BufNewFile,BufRead *.def setf def
462
463 " Dracula
464 au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe setf dracula
465
466 " dsl
467 au BufNewFile,BufRead *.dsl setf dsl
468
469 " DTD (Document Type Definition for XML)
470 au BufNewFile,BufRead *.dtd setf dtd
471
472 " EDIF (*.edf,*.edif,*.edn,*.edo)
473 au BufNewFile,BufRead *.ed\(f\|if\|n\|o\) setf edif
474
475 " Embedix Component Description
476 au BufNewFile,BufRead *.ecd setf ecd
477
478 " Eiffel or Specman
479 au BufNewFile,BufRead *.e,*.E call FTCheck_e()
480
481 " Elinks configuration
482 au BufNewFile,BufRead */etc/elinks.conf,*/.elinks/elinks.conf setf elinks
483
484 fun! 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
494 endfun
495
496 " ERicsson LANGuage
497 au BufNewFile,BufRead *.erl setf erlang
498
499 " Elm Filter Rules file
500 au BufNewFile,BufRead filter-rules setf elmfilt
501
502 " ESQL-C
503 au BufNewFile,BufRead *.ec,*.EC setf esqlc
504
505 " Essbase script
506 au BufNewFile,BufRead *.csc setf csc
507
508 " Exim
509 au BufNewFile,BufRead exim.conf setf exim
510
511 " Expect
512 au BufNewFile,BufRead *.exp setf expect
513
514 " Exports
515 au BufNewFile,BufRead exports setf exports
516
517 " Fetchmail RC file
518 au BufNewFile,BufRead .fetchmailrc setf fetchmail
519
520 " Focus Executable
521 au BufNewFile,BufRead *.fex,*.focexec setf focexec
522
523 " Focus Master file (but not for auto.master)
524 au BufNewFile,BufRead auto.master setf conf
525 au BufNewFile,BufRead *.mas,*.master setf master
526
527 " Forth
528 au BufNewFile,BufRead *.fs,*.ft setf forth
529
530 " Fortran
531 au BufNewFile,BufRead *.f,*.F,*.for,*.fpp,*.ftn,*.f77,*.F77,*.f90,*.F90,*.f95,*.F95 setf fortran
532
533 " FStab
534 au BufNewFile,BufRead fstab setf fstab
535
536 " GDB command files
537 au BufNewFile,BufRead .gdbinit setf gdb
538
539 " GDMO
540 au BufNewFile,BufRead *.mo,*.gdmo setf gdmo
541
542 " Gedcom
543 au BufNewFile,BufRead *.ged setf gedcom
544
545 " Gkrellmrc
546 au BufNewFile,BufRead gkrellmrc,gkrellmrc_? setf gkrellmrc
547
548 " GP scripts (2.0 and onward)
549 au BufNewFile,BufRead *.gp setf gp
550
551 " GPG
552 au BufNewFile,BufRead */.gnupg/options setf gpg
553 au BufNewFile,BufRead */.gnupg/gpg.conf setf gpg
554 au BufNewFile,BufRead /usr/**/gnupg/options.skel setf gpg
555
556 " Gnuplot scripts
557 au BufNewFile,BufRead *.gpi setf gnuplot
558
559 " GrADS scripts
560 au BufNewFile,BufRead *.gs setf grads
561
562 " Groovy
563 au BufNewFile,BufRead *.groovy setf groovy
564
565 " GNU Server Pages
566 au BufNewFile,BufRead *.gsp setf gsp
567
568 " GTK RC
569 au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc
570
571 " Haskell
572 au BufNewFile,BufRead *.hs setf haskell
573 au BufNewFile,BufRead *.lhs setf lhaskell
574 au BufNewFile,BufRead *.chs setf chaskell
575
576 " Hercules
577 au BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum setf hercules
578
579 " HEX (Intel)
580 au BufNewFile,BufRead *.hex,*.h32 setf hex
581
582 " Tilde (must be before HTML)
583 au BufNewFile,BufRead *.t.html setf tilde
584
585 " HTML (.shtml and .stm for server side)
586 au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call <SID>FTCheck_html()
587
588 " Distinguish between HTML and XHTML
589 fun! <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
599 endfun
600
601
602 " HTML with M4
603 au BufNewFile,BufRead *.html.m4 setf htmlm4
604
605 " HTML Cheetah template
606 au BufNewFile,BufRead *.tmpl setf htmlcheetah
607
608 " Hyper Builder
609 au BufNewFile,BufRead *.hb setf hb
610
611 " Icon
612 au BufNewFile,BufRead *.icn setf icon
613
614 " IDL (Interface Description Language)
615 au BufNewFile,BufRead *.idl call <SID>FTCheck_idl()
616
617 " Distinguish between standard IDL and MS-IDL
618 fun! <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
628 endfun
629
630 " Microsoft IDL (Interface Description Language) Also *.idl
631 " MOF = WMI (Windows Management Instrumentation) Managed Object Format
632 au BufNewFile,BufRead *.odl,*.mof setf msidl
633
634 " Icewm menu
635 au BufNewFile,BufRead */.icewm/menu setf icemenu
636
637 " Inform
638 au BufNewFile,BufRead .indent.pro setf indent
639
640 " IDL (Interactive Data Language)
641 au BufNewFile,BufRead *.pro setf idlang
642
643 " Inform
644 au BufNewFile,BufRead *.inf,*.INF setf inform
645
646 " Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
647 au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl setf fgl
648
649 " .INI file for MSDOS
650 au BufNewFile,BufRead *.ini setf dosini
651
652 " SysV Inittab
653 au BufNewFile,BufRead inittab setf inittab
654
655 " Inno Setup
656 au BufNewFile,BufRead *.iss setf iss
657
658 " JAL
659 au BufNewFile,BufRead *.jal,*.JAL setf jal
660
661 " Jam
662 au BufNewFile,BufRead *.jpl,*.jpr setf jam
663
664 " Java
665 au BufNewFile,BufRead *.java,*.jav setf java
666
667 " JavaCC
668 au BufNewFile,BufRead *.jj,*.jjt setf javacc
669
670 " JavaScript
671 au BufNewFile,BufRead *.js,*.javascript setf javascript
672
673 " Java Server Pages
674 au BufNewFile,BufRead *.jsp setf jsp
675
676 " Java Properties resource file (note: doesn't catch font.properties.pl)
677 au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_??,*.properties_??_??_* setf jproperties
678
679 " Jess
680 au BufNewFile,BufRead *.clp setf jess
681
682 " Jgraph
683 au BufNewFile,BufRead *.jgr setf jgraph
684
685 " Kixtart
686 au BufNewFile,BufRead *.kix setf kix
687
688 " Kimwitu[++]
689 au BufNewFile,BufRead *.k setf kwt
690
691 " KDE script
692 au BufNewFile,BufRead *.ks setf kscript
693
694 " Lace (ISE)
695 au BufNewFile,BufRead *.ace,*.ACE setf lace
696
697 " Latte
698 au BufNewFile,BufRead *.latte,*.lte setf latte
699
700 " LambdaProlog (*.mod too, see Modsim)
701 au BufNewFile,BufRead *.sig setf lprolog
702
703 " LDAP LDIF
704 au BufNewFile,BufRead *.ldif setf ldif
705
706 " Lex
707 au BufNewFile,BufRead *.lex,*.l setf lex
708
709 " Libao
710 au BufNewFile,BufRead /etc/libao.conf,*/.libao setf libao
711
712 " LFTP
713 au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc setf lftp
714
715 " Lifelines (or Lex for C++!)
716 au BufNewFile,BufRead *.ll setf lifelines
717
718 " Lilo: Linux loader
719 au BufNewFile,BufRead lilo.conf* setf lilo
720
721 " Lisp (*.el = ELisp, *.cl = Common Lisp, *.jl = librep Lisp)
722 if has("fname_case")
723 au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,*.L,.emacs,.sawfishrc setf lisp
724 else
725 au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp
726 endif
727
728 " Lite
729 au BufNewFile,BufRead *.lite,*.lt setf lite
730
731 " Logtalk
732 au BufNewFile,BufRead *.lgt setf logtalk
733
734 " LOTOS
735 au BufNewFile,BufRead *.lot,*.lotos setf lotos
736
737 " Lout (also: *.lt)
738 au BufNewFile,BufRead *.lou,*.lout setf lout
739
740 " Lua
741 au BufNewFile,BufRead *.lua setf lua
742
743 " Lynx style file (or LotusScript!)
744 au BufNewFile,BufRead *.lss setf lss
745
746 " M4
747 au BufNewFile,BufRead *.m4
748 \ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif
749
750 " MaGic Point
751 au BufNewFile,BufRead *.mgp setf mgp
752
753 " Mail (for Elm, trn, mutt, rn, slrn)
754 au 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
757 au BufNewFile,BufRead .mailcap,mailcap setf mailcap
758
759 " Makefile
760 au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make
761
762 " MakeIndex
763 au BufNewFile,BufRead *.ist,*.mst setf ist
764
765 " Manpage
766 au BufNewFile,BufRead *.man setf man
767
768 " Maple V
769 au BufNewFile,BufRead *.mv,*.mpl,*.mws setf maple
770
771 " Mason
772 au BufNewFile,BufRead *.mason,*.mhtml setf mason
773
774 " Matlab or Objective C
775 au BufNewFile,BufRead *.m call FTCheck_m()
776
777 fun! 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
796 endfun
797
798 " Maya Extension Language
799 au BufNewFile,BufRead *.mel setf mel
800
801 " Metafont
802 au BufNewFile,BufRead *.mf setf mf
803
804 " MetaPost
805 au BufNewFile,BufRead *.mp setf mp
806
807 " MMIX or VMS makefile
808 au BufNewFile,BufRead *.mms call FTCheck_mms()
809
810 fun! 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
825 endfun
826
827
828 " Modsim III (or LambdaProlog)
829 au BufNewFile,BufRead *.mod
830 \ if getline(1) =~ '\<module\>' |
831 \ setf lprolog |
832 \ else |
833 \ setf modsim3 |
834 \ endif
835
836 " Modula 2
837 au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2
838
839 " Modula 3 (.m3, .i3, .mg, .ig)
840 au BufNewFile,BufRead *.[mi][3g] setf modula3
841
842 " Monk
843 au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc setf monk
844
845 " MOO
846 au BufNewFile,BufRead *.moo setf moo
847
848 " Modconf
849 au BufNewFile,BufRead /etc/modules.conf,/etc/conf.modules setf modconf
850 au BufNewFile,BufRead /etc/modutils/*
851 \ if executable(expand("<afile>")) != 1 | setf modconf | endif
852
853 " Mplayer config
854 au BufNewFile,BufRead mplayer.conf,*/.mplayer/config setf mplayerconf
855
856 " Moterola S record
857 au BufNewFile,BufRead *.s19,*.s28,*.s37 setf srec
858
859 " Msql
860 au BufNewFile,BufRead *.msql setf msql
861
862 " Mysql
863 au BufNewFile,BufRead *.mysql setf mysql
864
865 " M$ Resource files
866 au BufNewFile,BufRead *.rc setf rc
867
868 " Mush
869 au BufNewFile,BufRead *.mush setf mush
870
871 " Mutt setup file
872 au BufNewFile,BufRead .muttrc*,*/.mutt/muttrc*,Muttrc setf muttrc
873
874 " Nastran input/DMAP
875 "au BufNewFile,BufRead *.dat setf nastran
876
877 " Natural
878 au BufNewFile,BufRead *.NS[ACGLMNPS] setf natural
879
880 " Novell netware batch files
881 au BufNewFile,BufRead *.ncf setf ncf
882
883 " Nroff/Troff (*.ms and *.t are checked below)
884 au BufNewFile,BufRead *.me
885 \ if expand("<afile>") != "read.me" && expand("<afile>") != "click.me" |
886 \ setf nroff |
887 \ endif
888 au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom setf nroff
889 au 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.
893 fun! <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
899 endfun
900
901 " Nroff or Objective C++
902 au BufNewFile,BufRead *.mm call <SID>FTcheck_mm()
903
904 fun! <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
915 endfun
916
917 " Not Quite C
918 au BufNewFile,BufRead *.nqc setf nqc
919
920 " NSIS
921 au BufNewFile,BufRead *.nsi setf nsis
922
923 " OCAML
924 au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly setf ocaml
925
926 " Occam
927 au BufNewFile,BufRead *.occ setf occam
928
929 " Omnimark
930 au BufNewFile,BufRead *.xom,*.xin setf omnimark
931
932 " OpenROAD
933 au BufNewFile,BufRead *.or setf openroad
934
935 " OPL
936 au BufNewFile,BufRead *.[Oo][Pp][Ll] setf opl
937
938 " Oracle config file
939 au BufNewFile,BufRead *.ora setf ora
940
941 " Packet filter conf
942 au BufNewFile,BufRead pf.conf setf pf
943
944 " PApp
945 au BufNewFile,BufRead *.papp,*.pxml,*.pxsl setf papp
946
947 " Pascal (also *.p)
948 au BufNewFile,BufRead *.pas setf pascal
949
950 " Delphi project file
951 au BufNewFile,BufRead *.dpr setf pascal
952
953 " Perl
954 if has("fname_case")
955 au BufNewFile,BufRead *.pl,*.PL call FTCheck_pl()
956 else
957 au BufNewFile,BufRead *.pl call FTCheck_pl()
958 endif
959
960 fun! 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
973 endfun
974
975 " Perl, XPM or XPM2
976 au 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
986 au BufNewFile,BufRead *.pod setf pod
987
988 " Php3
989 au BufNewFile,BufRead *.php,*.php3 setf php
990
991 " Phtml
992 au BufNewFile,BufRead *.phtml setf phtml
993
994 " Pike
995 au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod setf pike
996
997 " Pinfo config
998 au BufNewFile,BufRead */etc/pinforc,*/.pinforc setf pinfo
999
1000 " Palm Resource compiler
1001 au BufNewFile,BufRead *.rcp setf pilrc
1002
1003 " Pine config
1004 au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex setf pine
1005
1006 " PL/M (also: *.inp)
1007 au BufNewFile,BufRead *.plm,*.p36,*.pac setf plm
1008
1009 " PL/SQL
1010 au BufNewFile,BufRead *.pls,*.plsql setf plsql
1011
1012 " PLP
1013 au BufNewFile,BufRead *.plp setf plp
1014
1015 " PO and PO template (GNU gettext)
1016 au BufNewFile,BufRead *.po,*.pot setf po
1017
1018 " Postfix main config
1019 au BufNewFile,BufRead main.cf setf pfmain
1020
1021 " PostScript (+ font files, encapsulated PostScript, Adobe Illustrator)
1022 au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai setf postscr
1023
1024 " PostScript Printer Description
1025 au BufNewFile,BufRead *.ppd setf ppd
1026
1027 " Povray
1028 au BufNewFile,BufRead *.pov setf pov
1029
1030 " Povray configuration
1031 au BufNewFile,BufRead .povrayrc setf povini
1032
1033 " Povray, PHP or assembly
1034 au BufNewFile,BufRead *.inc call FTCheck_inc()
1035
1036 fun! 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
1056 endfun
1057
1058 " Printcap and Termcap
1059 au BufNewFile,BufRead *printcap
1060 \ let b:ptcap_type = "print" | setf ptcap
1061 au BufNewFile,BufRead *termcap
1062 \ let b:ptcap_type = "term" | setf ptcap
1063
1064 " PCCTS / ANTRL
1065 "au BufNewFile,BufRead *.g setf antrl
1066 au BufNewFile,BufRead *.g setf pccts
1067
1068 " PPWizard
1069 au BufNewFile,BufRead *.it,*.ih setf ppwiz
1070
1071 " Oracle Pro*C/C++
1072 au BufNewFile,BufRead .pc setf proc
1073
1074 " Procmail
1075 au BufNewFile,BufRead .procmail,.procmailrc setf procmail
1076
1077 " Progress or CWEB
1078 au BufNewFile,BufRead *.w call <SID>FTprogress_cweb()
1079
1080 function! <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
1090 endfun
1091
1092 " Progress or assembly
1093 au BufNewFile,BufRead *.i call <SID>FTprogress_asm()
1094
1095 function! <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
1116 endfun
1117
1118 " Progress or Pascal
1119 au BufNewFile,BufRead *.p call <SID>FTprogress_pascal()
1120
1121 function! <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
1144 endfun
1145
1146
1147 " Software Distributor Product Specification File (POSIX 1387.2-1995)
1148 au BufNewFile,BufRead *.psf setf psf
1149 au BufNewFile,BufRead INDEX,INFO
1150 \ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
1151 \ setf psf |
1152 \ endif
1153
1154 " Prolog
1155 au BufNewFile,BufRead *.pdb setf prolog
1156
1157 " Pyrex
1158 au BufNewFile,BufRead *.pyx,*.pxd setf pyrex
1159
1160 " Python
1161 au BufNewFile,BufRead *.py,*.pyw setf python
1162
1163 " Radiance
1164 au BufNewFile,BufRead *.rad,*.mat setf radiance
1165
1166 " Ratpoison config/command files
1167 au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc setf ratpoison
1168
1169 " RCS file
1170 au BufNewFile,BufRead *\,v setf rcs
1171
1172 " Readline
1173 au BufNewFile,BufRead .inputrc setf readline
1174
1175 " Registry for MS-Windows
1176 au 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
1180 au BufNewFile,BufRead *.rib setf rib
1181
1182 " Rexx
1183 au BufNewFile,BufRead *.rexx,*.rex setf rexx
1184
1185 " R (Splus)
1186 au BufNewFile,BufRead *.s,*.S setf r
1187
1188 " Rexx, Rebol or R
1189 au BufNewFile,BufRead *.r,*.R call <SID>FTCheck_r()
1190
1191 fun! <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
1217 endfun
1218
1219 " Remind
1220 au BufNewFile,BufRead .reminders* setf remind
1221
1222 " Resolv.conf
1223 au BufNewFile,BufRead resolv.conf setf resolv
1224
1225 " Relax NG Compact
1226 au BufNewFile,BufRead *.rnc setf rnc
1227
1228 " RPL/2
1229 au BufNewFile,BufRead *.rpl setf rpl
1230
1231 " Robots.txt
1232 au BufNewFile,BufRead robots.txt setf robots
1233
1234 " Rpcgen
1235 au BufNewFile,BufRead *.x setf rpcgen
1236
1237 " reStructuredText Documentation Format
1238 au BufNewFile,BufRead *.rst setf rst
1239
1240 " RTF
1241 au BufNewFile,BufRead *.rtf setf rtf
1242
1243 " Ruby
1244 au BufNewFile,BufRead *.rb,*.rbw,*.gem,*.gemspec setf ruby
1245
1246 " S-lang (or shader language!)
1247 au BufNewFile,BufRead *.sl setf slang
1248
1249 " Samba config
1250 au BufNewFile,BufRead smb.conf setf samba
1251
1252 " SAS script
1253 au BufNewFile,BufRead *.sas setf sas
1254
1255 " Sather
1256 au BufNewFile,BufRead *.sa setf sather
1257
1258 " Scilab
1259 au BufNewFile,BufRead *.sci setf scilab
1260
1261 " SDL
1262 au BufNewFile,BufRead *.sdl,*.pr setf sdl
1263
1264 " sed
1265 au BufNewFile,BufRead *.sed setf sed
1266
1267 " Sendmail
1268 au BufNewFile,BufRead sendmail.cf setf sm
1269
1270 " Sendmail .mc files are actually m4
1271 au BufNewFile,BufRead *.mc setf m4
1272
1273 " SGML
1274 au 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
1285 au BufNewFile,BufRead *.decl,*.dcl,*.dec
1286 \ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
1287 \ setf sgmldecl |
1288 \ endif
1289
1290 " SGML catalog file
1291 au 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
1295 au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,.bash_logout*,*.bash,*.ebuild call SetFileTypeSH("bash")
1296 au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")
1297 au BufNewFile,BufRead /etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
1298
1299 fun! 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
1326 endfun
1327
1328 " tcsh scripts
1329 au 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)
1332 au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,*.csh,.alias call SetFileTypeCSH()
1333
1334 fun! 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
1342 endfun
1343
1344 " Z-Shell script
1345 au BufNewFile,BufRead .zsh*,.zlog*,.zprofile,/etc/zprofile,.zfbfmarks,.zcompdump* setf zsh
1346
1347 " Scheme
1348 au BufNewFile,BufRead *.scm,*.ss setf scheme
1349
1350 " Screen RC
1351 au BufNewFile,BufRead .screenrc,screenrc setf screen
1352
1353 " Simula
1354 au BufNewFile,BufRead *.sim setf simula
1355
1356 " SINDA
1357 au BufNewFile,BufRead *.sin,*.s85 setf sinda
1358
1359 " SKILL
1360 au BufNewFile,BufRead *.il setf skill
1361
1362 " SLRN
1363 au BufNewFile,BufRead .slrnrc setf slrnrc
1364 au BufNewFile,BufRead *.score setf slrnsc
1365
1366 " Smalltalk
1367 au BufNewFile,BufRead *.st,*.cls setf st
1368
1369 " Smarty templates
1370 au BufNewFile,BufRead *.tpl setf smarty
1371
1372 " SMIL or XML
1373 au 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
1381 au BufNewFile,BufRead *.smi
1382 \ if getline(1) =~ '\<smil\>' |
1383 \ setf smil |
1384 \ else |
1385 \ setf mib |
1386 \ endif
1387
1388 " SMITH
1389 au BufNewFile,BufRead *.smt,*.smith setf smith
1390
1391 " Snobol4
1392 au BufNewFile,BufRead *.sno setf snobol4
1393
1394 " SNMP MIB files
1395 au BufNewFile,BufRead *.mib,*.my setf mib
1396
1397 " Snort Configuration
1398 au BufNewFile,BufRead *.hog,snort.conf,vision.conf,*.rules setf hog
1399
1400 " Spec (Linux RPM)
1401 au BufNewFile,BufRead *.spec setf spec
1402
1403 " Speedup (AspenTech plant simulator)
1404 au BufNewFile,BufRead *.speedup,*.spdata,*.spd setf spup
1405
1406 " Slice
1407 au BufNewFile,BufRead *.ice setf slice
1408
1409 " Spice
1410 au BufNewFile,BufRead *.sp,*.spice setf spice
1411
1412 " Spyce
1413 au BufNewFile,BufRead *.spy,*.spi setf spyce
1414
1415 " Squid
1416 au BufNewFile,BufRead squid.conf setf squid
1417
1418 " SQL (all but the first one for Oracle Designer)
1419 au BufNewFile,BufRead *.sql,*.tyb,*.typ,*.tyc,*.pkb,*.pks setf sql
1420
1421 " SQLJ
1422 au BufNewFile,BufRead *.sqlj setf sqlj
1423
1424 " SQR
1425 au BufNewFile,BufRead *.sqr,*.sqi setf sqr
1426
1427 " OpenSSH configuration
1428 au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig
1429
1430 " OpenSSH server configuration
1431 au BufNewFile,BufRead sshd_config setf sshdconfig
1432
1433 " Stored Procedures
1434 au BufNewFile,BufRead *.stp setf stp
1435
1436 " Standard ML
1437 au BufNewFile,BufRead *.sml setf sml
1438
1439 " Tads (or Nroff)
1440 au BufNewFile,BufRead *.t
1441 \ if !<SID>FTnroff() | setf tads | endif
1442
1443 " Tags
1444 au BufNewFile,BufRead tags setf tags
1445
1446 " TAK
1447 au BufNewFile,BufRead *.tak setf tak
1448
1449 " Tcl
1450 au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk setf tcl
1451
1452 " TealInfo
1453 au BufNewFile,BufRead *.tli setf tli
1454
1455 " Telix Salt
1456 au BufNewFile,BufRead *.slt setf tsalt
1457
1458 " Terminfo
1459 au BufNewFile,BufRead *.ti setf terminfo
1460
1461 " TeX
1462 au BufNewFile,BufRead *.tex,*.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex
1463
1464 " Texinfo
1465 au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo
1466
1467 " TeX configuration
1468 au BufNewFile,BufRead texmf.cnf setf texmf
1469
1470 " Tidy config
1471 au BufNewFile,BufRead .tidyrc,tidyrc setf tidy
1472
1473 " TF mud client
1474 au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf
1475
1476 " TSS - Geometry
1477 au BufNewFile,BufReadPost *.tssgm setf tssgm
1478
1479 " TSS - Optics
1480 au BufNewFile,BufReadPost *.tssop setf tssop
1481
1482 " TSS - Command Line (temporary)
1483 au BufNewFile,BufReadPost *.tsscl setf tsscl
1484
1485 " Motif UIT/UIL files
1486 au BufNewFile,BufRead *.uit,*.uil setf uil
1487
1488 " UnrealScript
1489 au BufNewFile,BufRead *.uc setf uc
1490
1491 " Verilog HDL
1492 au BufNewFile,BufRead *.v setf verilog
1493
1494 " VHDL
1495 au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vhdl_[0-9]*,*.vbe,*.vst setf vhdl
1496
1497 " Vim script
1498 au BufNewFile,BufRead *.vim,.exrc,_exrc setf vim
1499
1500 " Viminfo file
1501 au BufNewFile,BufRead .viminfo,_viminfo setf viminfo
1502
1503 " Virata Config Script File
1504 au BufRead,BufNewFile *.hw,*.module,*.pkg setf virata
1505
1506 " Visual Basic (also uses *.bas) or FORM
1507 au BufNewFile,BufRead *.frm call <SID>FTVB("form")
1508
1509 " SaxBasic is close to Visual Basic
1510 au BufNewFile,BufRead *.sba setf vb
1511
1512 " Vgrindefs file
1513 au BufNewFile,BufRead vgrindefs setf vgrindefs
1514
1515 " VRML V1.0c
1516 au BufNewFile,BufRead *.wrl setf vrml
1517
1518 " Webmacro
1519 au BufNewFile,BufRead *.wm setf webmacro
1520
1521 " Wget config
1522 au BufNewFile,BufRead .wgetrc,wgetrc setf wget
1523
1524 " Website MetaLanguage
1525 au BufNewFile,BufRead *.wml setf wml
1526
1527 " Winbatch
1528 au BufNewFile,BufRead *.wbt setf winbatch
1529
1530 " WvDial
1531 au BufNewFile,BufRead wvdial.conf,.wvdialrc setf wvdial
1532
1533 " CVS RC file
1534 au BufNewFile,BufRead .cvsrc setf cvsrc
1535
1536 " CVS commit file
1537 au 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).
1541 au 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
1549 au BufNewFile,BufRead *.ws[fc] setf wsh
1550
1551 " X Pixmap (dynamically sets colors, use BufEnter to make it work better)
1552 au BufEnter *.xpm
1553 \ if getline(1) =~ "XPM2" |
1554 \ setf xpm2 |
1555 \ else |
1556 \ setf xpm |
1557 \ endif
1558 au BufEnter *.xpm2 setf xpm2
1559
1560 " XFree86 config
1561 au BufNewFile,BufRead XF86Config
1562 \ if getline(1) =~ '\<XConfigurator\>' |
1563 \ let b:xf86c_xfree86_version = 3 |
1564 \ endif |
1565 \ setf xf86conf
1566
1567 " Xorg config
1568 au BufNewFile,BufRead xorg.conf,xorg.conf-4 let b:xf86c_xfree86_version = 4 | setf xf86conf
1569
1570 " XS Perl extension interface language
1571 au BufNewFile,BufRead *.xs setf xs
1572
1573 " X resources file
1574 au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults
1575
1576 " Xmath
1577 au BufNewFile,BufRead *.msc,*.msf setf xmath
1578 au BufNewFile,BufRead *.ms
1579 \ if !<SID>FTnroff() | setf xmath | endif
1580
1581 " XML
1582 au 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
1591 au BufNewFile,BufRead *.xmi setf xml
1592
1593 " CSPROJ files are Visual Studio.NET's XML-based project config files
1594 au BufNewFile,BufRead *.csproj,*.csproj.user setf xml
1595
1596 " Qt Linguist translation source and Qt User Interface Files are XML
1597 au BufNewFile,BufRead *.ts,*.ui setf xml
1598
1599 " XSD
1600 au BufNewFile,BufRead *.xsd setf xsd
1601
1602 " Xslt
1603 au BufNewFile,BufRead *.xsl,*.xslt setf xslt
1604
1605 " Yacc
1606 au BufNewFile,BufRead *.y,*.yy setf yacc
1607
1608 " Yaml
1609 au BufNewFile,BufRead *.yaml,*.yml setf yaml
1610
1611 " Z80 assembler asz80
1612 au BufNewFile,BufRead *.z8a setf z8a
1613
1614 augroup END
1615
1616
1617 " Source the user-specified filetype file, for backwards compatibility with
1618 " Vim 5.x.
1619 if exists("myfiletypefile") && file_readable(expand(myfiletypefile))
1620 execute "source " . myfiletypefile
1621 endif
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.
1627 augroup filetypedetect
1628 au BufNewFile,BufRead *
1629 \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
1630 \ | runtime! scripts.vim | endif
1631 au 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
1639 au BufNewFile,BufRead /var/named/* setf bindzone
1640
1641 " Changelog
1642 au BufNewFile,BufRead [cC]hange[lL]og* if getline(1) =~ '; urgency='
1643 \| setf debchangelog | else | setf changelog | endif
1644
1645 " Crontab
1646 au BufNewFile,BufRead crontab,crontab.* setf crontab
1647
1648 " Dracula
1649 au BufNewFile,BufRead drac.* setf dracula
1650
1651 " Fvwm
1652 au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
1653 \ let b:fvwm_version = 1 | setf fvwm
1654 au 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
1659 au BufNewFile,BufRead .gtkrc*,gtkrc* setf gtkrc
1660
1661 " Jam
1662 au BufNewFile,BufRead Prl*.*,JAM*.* setf jam
1663
1664 " Jargon
1665 au! 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
1671 au BufNewFile,BufRead [mM]akefile* setf make
1672
1673 " Ruby Makefile
1674 au BufNewFile,BufRead [rR]akefile* setf ruby
1675
1676 " Mutt setup file
1677 au BufNewFile,BufRead muttrc*,Muttrc* setf muttrc
1678
1679 " Nroff macros
1680 au BufNewFile,BufRead tmac.* setf nroff
1681
1682 " Printcap and Termcap
1683 au BufNewFile,BufRead *printcap*
1684 \ if !did_filetype() | let b:ptcap_type = "print" | setf ptcap | endif
1685 au BufNewFile,BufRead *termcap*
1686 \ if !did_filetype() | let b:ptcap_type = "term" | setf ptcap | endif
1687
1688 " Vim script
1689 au BufNewFile,BufRead *vimrc* setf vim
1690
1691 " Subversion commit file
1692 au BufNewFile,BufRead svn-commit.*.tmp setf svn
1693
1694 " X resources file
1695 au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* setf xdefaults
1696
1697 " XFree86 config
1698 au BufNewFile,BufRead XF86Config-4*
1699 \ let b:xf86c_xfree86_version = 4 | setf xf86conf
1700 au BufNewFile,BufRead XF86Config*
1701 \ if getline(1) =~ '\<XConfigurator\>' |
1702 \ let b:xf86c_xfree86_version = 3 |
1703 \ endif |
1704 \ setf xf86conf
1705
1706 " X11 xmodmap
1707 au BufNewFile,BufRead *xmodmap* setf xmodmap
1708
1709 " Z-Shell script
1710 au BufNewFile,BufRead zsh*,zlog* setf zsh
1711
1712
1713 " Generic configuration file (check this last, it's just guessing!)
1714 au 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.
1723 runtime! ftdetect/*.vim
1724
1725 augroup 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'.
1730 if has("menu") && has("gui_running")
1731 \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
1732 source <sfile>:p:h/menu.vim
1733 endif
1734
1735 " Restore 'cpoptions'
1736 let &cpo = s:cpo_save
1737 unlet s:cpo_save