RailsEditor 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/INSTALL ADDED
@@ -0,0 +1,20 @@
1
+ REQUIRES:
2
+ screen
3
+ vim (must be vim that supports directory browsing)
4
+ rubygems
5
+ rails rubygem
6
+ rake
7
+
8
+ to install:
9
+ build the gem if it doesn't already exist, with
10
+ rake pkg/RailsEditor-$VERSION.gem
11
+ install the gem
12
+ gem install pkg/RailsEditor-$VERSION.gem
13
+
14
+ CD to a RAILS_ROOT
15
+ run RailsEditor
16
+
17
+ In that RAILS_ROOT, there will be a .vimrc that you can adjust to your liking,
18
+ it will use this instead of your regular ~/.vimrc
19
+
20
+ See README.rails-editor for licensing and more complete usage.
@@ -0,0 +1,41 @@
1
+ Copyright 2005, by The Rubyists (bougyman,trey,deathsyn)*
2
+ Licensed under the Gnu Public License, which should be
3
+ included in licence/GPL.txt.
4
+
5
+ If you did not receive this licence file you can contact the author
6
+ for a copy at bougy dot man at gmail dot com, or see the latest
7
+ version at http://www.gnu.org/copyleft/gpl.html.
8
+
9
+ This is a little command wrapper for screen + vim to give
10
+ you a nice IDE session for rails development. Console junkies
11
+ should like it, but through the use of Escreen it can be
12
+ GUI friendly as well.
13
+
14
+ After installing the gem, change to a rails_root and run the command:
15
+ RailsEditor
16
+
17
+ The gem install should have linked RailsEditor to a location in your run path
18
+ Then you'll have ./script/editor available
19
+
20
+ ./script/editor -? for usage (from the RAILS_ROOT).
21
+
22
+ BASIC USAGE
23
+
24
+ This is most likely only useful for console junkies, but may help for
25
+ any vim user in a pinch that has to make console edits (ssh or what-not).
26
+
27
+ On startup you'll have a variety of windows set up for rails development.
28
+ Many will have VIM sessions in File Browser mode, others will be shells dedicated
29
+ to a certain task. In Screen 1 you'll have a ./script/console session that
30
+ will restart itself on exit. The ide gets more powerful for experienced 'screen'
31
+ users with split screen modes and other goodies.
32
+
33
+ SPLIT SCREEN
34
+
35
+ A new caption line will appear when you split screens in 'screen' (ctrl-a S). At
36
+ this time there is no way to remove the hardstatus global statusline automatically,
37
+ so i've bound F8 and F9 to turning on and off (respectively) the hardstatus line
38
+ to avoid duplicate statusbars.
39
+
40
+ * tj vanderpoel,trey dempsey,kevin berry
41
+
data/bin/RailsEditor ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This script will create an editor in a RAILS_ROOT
3
+
4
+ path = ARGV[0]
5
+ args = path.nil? ? {:rails_root => ENV['PWD']} : {:rails_root => path}
6
+ RailsEditor.new(args).create
@@ -0,0 +1,33 @@
1
+ EDITOR_LIB_HOME = File.expand_path(File.dirname(__FILE__) + "/../")
2
+ require "rubygems"
3
+ require "rake/gempackagetask"
4
+ class RailsEditor
5
+ attr_accessor :rails_root
6
+ def initialize(args = {:rails_root => ENV['PWD']})
7
+ @rails_root = args[:rails_root]
8
+ end
9
+
10
+ def create
11
+ rails_home = EDITOR_LIB_HOME + "/rails"
12
+ files = FileList[rails_home + "/**/*"].to_a
13
+ files += FileList[rails_home + "/.vim/**/*"]
14
+ files += [rails_home + "/.vimrc",rails_home + "/config/.screenrc.code.erb"]
15
+ files.to_a.each do |editor_file|
16
+ save_dir = @rails_root + File.dirname(editor_file.split(rails_home)[1])
17
+ if FileTest.directory?(editor_file)
18
+ if not File.exists?(save_dir)
19
+ puts 'Dir.mkdir("' + save_dir + '")'
20
+ Dir.mkdir(save_dir)
21
+ end
22
+ next
23
+ end
24
+ if not File.exists?(save_dir) or not FileTest.directory?(save_dir)
25
+ puts "Dir.mkdir(" + save_dir + ") "
26
+ Dir.mkdir(save_dir)
27
+ end
28
+ puts "File.cp(" + editor_file + "," + save_dir + "/" + File.basename(editor_file) + ") "
29
+ File.cp(editor_file,save_dir + "/" + File.basename(editor_file))
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,1741 @@
1
+ " Vim support file to detect file types
2
+ "
3
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
4
+ " Last Change: 2004 May 30
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
+ " ERuby
1247
+ au BufNewFile,BufRead *.rhtml setf eruby
1248
+
1249
+ " S-lang (or shader language!)
1250
+ au BufNewFile,BufRead *.sl setf slang
1251
+
1252
+ " Samba config
1253
+ au BufNewFile,BufRead smb.conf setf samba
1254
+
1255
+ " SAS script
1256
+ au BufNewFile,BufRead *.sas setf sas
1257
+
1258
+ " Sather
1259
+ au BufNewFile,BufRead *.sa setf sather
1260
+
1261
+ " Scilab
1262
+ au BufNewFile,BufRead *.sci setf scilab
1263
+
1264
+ " SDL
1265
+ au BufNewFile,BufRead *.sdl,*.pr setf sdl
1266
+
1267
+ " sed
1268
+ au BufNewFile,BufRead *.sed setf sed
1269
+
1270
+ " Sendmail
1271
+ au BufNewFile,BufRead sendmail.cf setf sm
1272
+
1273
+ " Sendmail .mc files are actually m4
1274
+ au BufNewFile,BufRead *.mc setf m4
1275
+
1276
+ " SGML
1277
+ au BufNewFile,BufRead *.sgm,*.sgml
1278
+ \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' |
1279
+ \ setf sgmllnx |
1280
+ \ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
1281
+ \ let b:docbk_type="sgml" |
1282
+ \ setf docbk |
1283
+ \ else |
1284
+ \ setf sgml |
1285
+ \ endif
1286
+
1287
+ " SGMLDECL
1288
+ au BufNewFile,BufRead *.decl,*.dcl,*.dec
1289
+ \ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
1290
+ \ setf sgmldecl |
1291
+ \ endif
1292
+
1293
+ " SGML catalog file
1294
+ au BufNewFile,BufRead sgml.catalog*,catalog setf catalog
1295
+
1296
+ " Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
1297
+ " Gentoo ebuilds are actually bash scripts
1298
+ au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,.bash_logout*,*.bash,*.ebuild call SetFileTypeSH("bash")
1299
+ au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")
1300
+ au BufNewFile,BufRead /etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
1301
+
1302
+ fun! SetFileTypeSH(name)
1303
+ if a:name =~ '\<ksh\>'
1304
+ let b:is_kornshell = 1
1305
+ if exists("b:is_bash")
1306
+ unlet b:is_bash
1307
+ endif
1308
+ if exists("b:is_sh")
1309
+ unlet b:is_sh
1310
+ endif
1311
+ elseif exists("g:bash_is_sh") || a:name =~ '\<bash\>' || a:name =~ '\<bash2\>'
1312
+ let b:is_bash = 1
1313
+ if exists("b:is_kornshell")
1314
+ unlet b:is_kornshell
1315
+ endif
1316
+ if exists("b:is_sh")
1317
+ unlet b:is_sh
1318
+ endif
1319
+ elseif a:name =~ '\<sh\>'
1320
+ let b:is_sh = 1
1321
+ if exists("b:is_kornshell")
1322
+ unlet b:is_kornshell
1323
+ endif
1324
+ if exists("b:is_bash")
1325
+ unlet b:is_bash
1326
+ endif
1327
+ endif
1328
+ setf sh
1329
+ endfun
1330
+
1331
+ " tcsh scripts
1332
+ au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login setf tcsh
1333
+
1334
+ " csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
1335
+ au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,*.csh,.alias call SetFileTypeCSH()
1336
+
1337
+ fun! SetFileTypeCSH()
1338
+ if exists("g:filetype_csh")
1339
+ exe "setf " . g:filetype_csh
1340
+ elseif &shell =~ "tcsh"
1341
+ setf tcsh
1342
+ else
1343
+ setf csh
1344
+ endif
1345
+ endfun
1346
+
1347
+ " Z-Shell script
1348
+ au BufNewFile,BufRead .zsh*,.zlog*,.zprofile,/etc/zprofile,.zfbfmarks,.zcompdump* setf zsh
1349
+
1350
+ " Scheme
1351
+ au BufNewFile,BufRead *.scm,*.ss setf scheme
1352
+
1353
+ " Screen RC
1354
+ au BufNewFile,BufRead .screenrc,screenrc setf screen
1355
+
1356
+ " Simula
1357
+ au BufNewFile,BufRead *.sim setf simula
1358
+
1359
+ " SINDA
1360
+ au BufNewFile,BufRead *.sin,*.s85 setf sinda
1361
+
1362
+ " SKILL
1363
+ au BufNewFile,BufRead *.il setf skill
1364
+
1365
+ " SLRN
1366
+ au BufNewFile,BufRead .slrnrc setf slrnrc
1367
+ au BufNewFile,BufRead *.score setf slrnsc
1368
+
1369
+ " Smalltalk
1370
+ au BufNewFile,BufRead *.st,*.cls setf st
1371
+
1372
+ " Smarty templates
1373
+ au BufNewFile,BufRead *.tpl setf smarty
1374
+
1375
+ " SMIL or XML
1376
+ au BufNewFile,BufRead *.smil
1377
+ \ if getline(1) =~ '<?\s*xml.*?>' |
1378
+ \ setf xml |
1379
+ \ else |
1380
+ \ setf smil |
1381
+ \ endif
1382
+
1383
+ " SMIL or SNMP MIB file
1384
+ au BufNewFile,BufRead *.smi
1385
+ \ if getline(1) =~ '\<smil\>' |
1386
+ \ setf smil |
1387
+ \ else |
1388
+ \ setf mib |
1389
+ \ endif
1390
+
1391
+ " SMITH
1392
+ au BufNewFile,BufRead *.smt,*.smith setf smith
1393
+
1394
+ " Snobol4
1395
+ au BufNewFile,BufRead *.sno setf snobol4
1396
+
1397
+ " SNMP MIB files
1398
+ au BufNewFile,BufRead *.mib,*.my setf mib
1399
+
1400
+ " Snort Configuration
1401
+ au BufNewFile,BufRead *.hog,snort.conf,vision.conf,*.rules setf hog
1402
+
1403
+ " Spec (Linux RPM)
1404
+ au BufNewFile,BufRead *.spec setf spec
1405
+
1406
+ " Speedup (AspenTech plant simulator)
1407
+ au BufNewFile,BufRead *.speedup,*.spdata,*.spd setf spup
1408
+
1409
+ " Slice
1410
+ au BufNewFile,BufRead *.ice setf slice
1411
+
1412
+ " Spice
1413
+ au BufNewFile,BufRead *.sp,*.spice setf spice
1414
+
1415
+ " Spyce
1416
+ au BufNewFile,BufRead *.spy,*.spi setf spyce
1417
+
1418
+ " Squid
1419
+ au BufNewFile,BufRead squid.conf setf squid
1420
+
1421
+ " SQL (all but the first one for Oracle Designer)
1422
+ au BufNewFile,BufRead *.sql,*.tyb,*.typ,*.tyc,*.pkb,*.pks setf sql
1423
+
1424
+ " SQLJ
1425
+ au BufNewFile,BufRead *.sqlj setf sqlj
1426
+
1427
+ " SQR
1428
+ au BufNewFile,BufRead *.sqr,*.sqi setf sqr
1429
+
1430
+ " OpenSSH configuration
1431
+ au BufNewFile,BufRead ssh_config,.ssh/config setf sshconfig
1432
+
1433
+ " OpenSSH server configuration
1434
+ au BufNewFile,BufRead sshd_config setf sshdconfig
1435
+
1436
+ " Stored Procedures
1437
+ au BufNewFile,BufRead *.stp setf stp
1438
+
1439
+ " Standard ML
1440
+ au BufNewFile,BufRead *.sml setf sml
1441
+
1442
+ " Tads (or Nroff)
1443
+ au BufNewFile,BufRead *.t
1444
+ \ if !<SID>FTnroff() | setf tads | endif
1445
+
1446
+ " Tags
1447
+ au BufNewFile,BufRead tags setf tags
1448
+
1449
+ " TAK
1450
+ au BufNewFile,BufRead *.tak setf tak
1451
+
1452
+ " Tcl
1453
+ au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk setf tcl
1454
+
1455
+ " TealInfo
1456
+ au BufNewFile,BufRead *.tli setf tli
1457
+
1458
+ " Telix Salt
1459
+ au BufNewFile,BufRead *.slt setf tsalt
1460
+
1461
+ " Terminfo
1462
+ au BufNewFile,BufRead *.ti setf terminfo
1463
+
1464
+ " TeX
1465
+ au BufNewFile,BufRead *.tex,*.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex
1466
+
1467
+ " Texinfo
1468
+ au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo
1469
+
1470
+ " TeX configuration
1471
+ au BufNewFile,BufRead texmf.cnf setf texmf
1472
+
1473
+ " Tidy config
1474
+ au BufNewFile,BufRead .tidyrc,tidyrc setf tidy
1475
+
1476
+ " TF mud client
1477
+ au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf
1478
+
1479
+ " TSS - Geometry
1480
+ au BufNewFile,BufReadPost *.tssgm setf tssgm
1481
+
1482
+ " TSS - Optics
1483
+ au BufNewFile,BufReadPost *.tssop setf tssop
1484
+
1485
+ " TSS - Command Line (temporary)
1486
+ au BufNewFile,BufReadPost *.tsscl setf tsscl
1487
+
1488
+ " Motif UIT/UIL files
1489
+ au BufNewFile,BufRead *.uit,*.uil setf uil
1490
+
1491
+ " UnrealScript
1492
+ au BufNewFile,BufRead *.uc setf uc
1493
+
1494
+ " Verilog HDL
1495
+ au BufNewFile,BufRead *.v setf verilog
1496
+
1497
+ " VHDL
1498
+ au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vhdl_[0-9]*,*.vbe,*.vst setf vhdl
1499
+
1500
+ " Vim script
1501
+ au BufNewFile,BufRead *.vim,.exrc,_exrc setf vim
1502
+
1503
+ " Viminfo file
1504
+ au BufNewFile,BufRead .viminfo,_viminfo setf viminfo
1505
+
1506
+ " Virata Config Script File
1507
+ au BufRead,BufNewFile *.hw,*.module,*.pkg setf virata
1508
+
1509
+ " Visual Basic (also uses *.bas) or FORM
1510
+ au BufNewFile,BufRead *.frm call <SID>FTVB("form")
1511
+
1512
+ " SaxBasic is close to Visual Basic
1513
+ au BufNewFile,BufRead *.sba setf vb
1514
+
1515
+ " Vgrindefs file
1516
+ au BufNewFile,BufRead vgrindefs setf vgrindefs
1517
+
1518
+ " VRML V1.0c
1519
+ au BufNewFile,BufRead *.wrl setf vrml
1520
+
1521
+ " Webmacro
1522
+ au BufNewFile,BufRead *.wm setf webmacro
1523
+
1524
+ " Wget config
1525
+ au BufNewFile,BufRead .wgetrc,wgetrc setf wget
1526
+
1527
+ " Website MetaLanguage
1528
+ au BufNewFile,BufRead *.wml setf wml
1529
+
1530
+ " Winbatch
1531
+ au BufNewFile,BufRead *.wbt setf winbatch
1532
+
1533
+ " WvDial
1534
+ au BufNewFile,BufRead wvdial.conf,.wvdialrc setf wvdial
1535
+
1536
+ " CVS RC file
1537
+ au BufNewFile,BufRead .cvsrc setf cvsrc
1538
+
1539
+ " CVS commit file
1540
+ au BufNewFile,BufRead cvs\d\+ setf cvs
1541
+
1542
+ " WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
1543
+ " lines in a WEB file).
1544
+ au BufNewFile,BufRead *.web
1545
+ \ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" |
1546
+ \ setf web |
1547
+ \ else |
1548
+ \ setf winbatch |
1549
+ \ endif
1550
+
1551
+ " Windows Scripting Host and Windows Script Component
1552
+ au BufNewFile,BufRead *.ws[fc] setf wsh
1553
+
1554
+ " X Pixmap (dynamically sets colors, use BufEnter to make it work better)
1555
+ au BufEnter *.xpm
1556
+ \ if getline(1) =~ "XPM2" |
1557
+ \ setf xpm2 |
1558
+ \ else |
1559
+ \ setf xpm |
1560
+ \ endif
1561
+ au BufEnter *.xpm2 setf xpm2
1562
+
1563
+ " XFree86 config
1564
+ au BufNewFile,BufRead XF86Config
1565
+ \ if getline(1) =~ '\<XConfigurator\>' |
1566
+ \ let b:xf86c_xfree86_version = 3 |
1567
+ \ endif |
1568
+ \ setf xf86conf
1569
+
1570
+ " Xorg config
1571
+ au BufNewFile,BufRead xorg.conf,xorg.conf-4 let b:xf86c_xfree86_version = 4 | setf xf86conf
1572
+
1573
+ " XS Perl extension interface language
1574
+ au BufNewFile,BufRead *.xs setf xs
1575
+
1576
+ " X resources file
1577
+ au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults
1578
+
1579
+ " Xmath
1580
+ au BufNewFile,BufRead *.msc,*.msf setf xmath
1581
+ au BufNewFile,BufRead *.ms
1582
+ \ if !<SID>FTnroff() | setf xmath | endif
1583
+
1584
+ " XML
1585
+ au BufNewFile,BufRead *.xml
1586
+ \ if getline(1) . getline(2) . getline(3) =~ '<!DOCTYPE.*DocBook' |
1587
+ \ let b:docbk_type="xml" |
1588
+ \ setf docbk |
1589
+ \ else |
1590
+ \ setf xml |
1591
+ \ endif
1592
+
1593
+ " XMI (holding UML models) is also XML
1594
+ au BufNewFile,BufRead *.xmi setf xml
1595
+
1596
+ " CSPROJ files are Visual Studio.NET's XML-based project config files
1597
+ au BufNewFile,BufRead *.csproj,*.csproj.user setf xml
1598
+
1599
+ " Qt Linguist translation source and Qt User Interface Files are XML
1600
+ au BufNewFile,BufRead *.ts,*.ui setf xml
1601
+
1602
+ " XSD
1603
+ au BufNewFile,BufRead *.xsd setf xsd
1604
+
1605
+ " Xslt
1606
+ au BufNewFile,BufRead *.xsl,*.xslt setf xslt
1607
+
1608
+ " Yacc
1609
+ au BufNewFile,BufRead *.y,*.yy setf yacc
1610
+
1611
+ " Yaml
1612
+ au BufNewFile,BufRead *.yaml,*.yml setf yaml
1613
+
1614
+ " Z80 assembler asz80
1615
+ au BufNewFile,BufRead *.z8a setf z8a
1616
+
1617
+ augroup END
1618
+
1619
+
1620
+ " Source the user-specified filetype file, for backwards compatibility with
1621
+ " Vim 5.x.
1622
+ if exists("myfiletypefile") && file_readable(expand(myfiletypefile))
1623
+ execute "source " . myfiletypefile
1624
+ endif
1625
+
1626
+
1627
+ " Check for "*" after loading myfiletypefile, so that scripts.vim is only used
1628
+ " when there are no matching file name extensions.
1629
+ " Don't do this for compressed files.
1630
+ augroup filetypedetect
1631
+ au BufNewFile,BufRead *
1632
+ \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
1633
+ \ | runtime! scripts.vim | endif
1634
+ au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif
1635
+
1636
+
1637
+ " Extra checks for when no filetype has been detected now. Mostly used for
1638
+ " patterns that end in "*". E.g., "zsh*" matches "zsh.vim", but that's a Vim
1639
+ " script file.
1640
+
1641
+ " BIND zone
1642
+ au BufNewFile,BufRead /var/named/* setf bindzone
1643
+
1644
+ " Changelog
1645
+ au BufNewFile,BufRead [cC]hange[lL]og* if getline(1) =~ '; urgency='
1646
+ \| setf debchangelog | else | setf changelog | endif
1647
+
1648
+ " Crontab
1649
+ au BufNewFile,BufRead crontab,crontab.* setf crontab
1650
+
1651
+ " Dracula
1652
+ au BufNewFile,BufRead drac.* setf dracula
1653
+
1654
+ " Fvwm
1655
+ au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
1656
+ \ let b:fvwm_version = 1 | setf fvwm
1657
+ au BufNewFile,BufRead *fvwm2rc*
1658
+ \ if expand("<afile>:e") == "m4" | setf fvwm2m4 | else |
1659
+ \ let b:fvwm_version = 2 | setf fvwm | endif
1660
+
1661
+ " GTK RC
1662
+ au BufNewFile,BufRead .gtkrc*,gtkrc* setf gtkrc
1663
+
1664
+ " Jam
1665
+ au BufNewFile,BufRead Prl*.*,JAM*.* setf jam
1666
+
1667
+ " Jargon
1668
+ au! BufNewFile,BufRead *jarg*
1669
+ \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE' |
1670
+ \ setf jargon |
1671
+ \ endif
1672
+
1673
+ " Makefile
1674
+ au BufNewFile,BufRead [mM]akefile* setf make
1675
+
1676
+ " Ruby Makefile
1677
+ au BufNewFile,BufRead [rR]akefile* setf ruby
1678
+
1679
+ " Mutt setup file
1680
+ au BufNewFile,BufRead muttrc*,Muttrc* setf muttrc
1681
+
1682
+ " Nroff macros
1683
+ au BufNewFile,BufRead tmac.* setf nroff
1684
+
1685
+ " Printcap and Termcap
1686
+ au BufNewFile,BufRead *printcap*
1687
+ \ if !did_filetype() | let b:ptcap_type = "print" | setf ptcap | endif
1688
+ au BufNewFile,BufRead *termcap*
1689
+ \ if !did_filetype() | let b:ptcap_type = "term" | setf ptcap | endif
1690
+
1691
+ " Vim script
1692
+ au BufNewFile,BufRead *vimrc* setf vim
1693
+
1694
+ " Subversion commit file
1695
+ au BufNewFile,BufRead svn-commit.*.tmp setf svn
1696
+ au BufNewFile,BufRead svn-commit.tmp setf svn
1697
+
1698
+ " X resources file
1699
+ au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* setf xdefaults
1700
+
1701
+ " XFree86 config
1702
+ au BufNewFile,BufRead XF86Config-4*
1703
+ \ let b:xf86c_xfree86_version = 4 | setf xf86conf
1704
+ au BufNewFile,BufRead XF86Config*
1705
+ \ if getline(1) =~ '\<XConfigurator\>' |
1706
+ \ let b:xf86c_xfree86_version = 3 |
1707
+ \ endif |
1708
+ \ setf xf86conf
1709
+
1710
+ " X11 xmodmap
1711
+ au BufNewFile,BufRead *xmodmap* setf xmodmap
1712
+
1713
+ " Z-Shell script
1714
+ au BufNewFile,BufRead zsh*,zlog* setf zsh
1715
+
1716
+
1717
+ " Generic configuration file (check this last, it's just guessing!)
1718
+ au BufNewFile,BufRead,StdinReadPost *
1719
+ \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
1720
+ \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
1721
+ \ || getline(4) =~ '^#' || getline(5) =~ '^#') |
1722
+ \ setf conf |
1723
+ \ endif
1724
+
1725
+ " Use the plugin-filetype checks last, they may overrule any of the previously
1726
+ " detected filetypes.
1727
+ runtime! ftdetect/*.vim
1728
+
1729
+ augroup END
1730
+
1731
+
1732
+ " If the GUI is already running, may still need to install the Syntax menu.
1733
+ " Don't do it when the 'M' flag is included in 'guioptions'.
1734
+ if has("menu") && has("gui_running")
1735
+ \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
1736
+ source <sfile>:p:h/menu.vim
1737
+ endif
1738
+
1739
+ " Restore 'cpoptions'
1740
+ let &cpo = s:cpo_save
1741
+ unlet s:cpo_save