diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/autoload/dist/ft.vim | 54 | ||||
-rw-r--r-- | runtime/doc/filetype.txt | 1 | ||||
-rw-r--r-- | runtime/filetype.vim | 13 |
3 files changed, 47 insertions, 21 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim index 01cde4631..5f48f4b10 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -72,22 +72,35 @@ export def FTbas() # most frequent FreeBASIC-specific keywords in distro files var fb_keywords = '\c^\s*\%(extern\|var\|enum\|private\|scope\|union\|byref\|operator\|constructor\|delete\|namespace\|public\|property\|with\|destructor\|using\)\>\%(\s*[:=(]\)\@!' - var fb_preproc = '\c^\s*\%(#\a\+\|option\s\+\%(byval\|dynamic\|escape\|\%(no\)\=gosub\|nokeyword\|private\|static\)\>\)' + var fb_preproc = '\c^\s*\%(' .. + # preprocessor + '#\s*\a\+\|' .. + # compiler option + 'option\s\+\%(byval\|dynamic\|escape\|\%(no\)\=gosub\|nokeyword\|private\|static\)\>\|' .. + # metacommand + '\%(''\|rem\)\s*\$lang\>\|' .. + # default datatype + 'def\%(byte\|longint\|short\|ubyte\|uint\|ulongint\|ushort\)\>' .. + '\)' var fb_comment = "^\\s*/'" + # OPTION EXPLICIT, without the leading underscore, is common to many dialects var qb64_preproc = '\c^\s*\%($\a\+\|option\s\+\%(_explicit\|_\=explicitarray\)\>\)' - var lines = getline(1, min([line("$"), 100])) - - if match(lines, fb_preproc) > -1 || match(lines, fb_comment) > -1 || match(lines, fb_keywords) > -1 - setf freebasic - elseif match(lines, qb64_preproc) > -1 - setf qb64 - elseif match(lines, ft_visual_basic_content) > -1 - setf vb - else - setf basic - endif + for lnum in range(1, min([line("$"), 100])) + var line = getline(lnum) + if line =~ ft_visual_basic_content + setf vb + return + elseif line =~ fb_preproc || line =~ fb_comment || line =~ fb_keywords + setf freebasic + return + elseif line =~ qb64_preproc + setf qb64 + return + endif + endfor + setf basic enddef export def FTbtm() @@ -126,6 +139,23 @@ export def FTcfg() endif enddef +export def FTcls() + if exists("g:filetype_cls") + exe "setf " .. g:filetype_cls + return + endif + + if getline(1) =~ '^%' + setf tex + elseif getline(1)[0] == '#' && getline(1) =~ 'rexx' + setf rexx + elseif getline(1) == 'VERSION 1.0 CLASS' + setf vb + else + setf st + endif +enddef + export def FTlpc() if exists("g:lpc_syntax_for_c") var lnum = 1 diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index 06eff2da1..282a7966c 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -143,6 +143,7 @@ variables can be used to overrule the filetype used for certain extensions: *.asp g:filetype_asp |ft-aspvbs-syntax| |ft-aspperl-syntax| *.bas g:filetype_bas |ft-basic-syntax| *.cfg g:filetype_cfg + *.cls g:filetype_cls *.csh g:filetype_csh |ft-csh-syntax| *.dat g:filetype_dat *.frm g:filetype_frm |ft-form-syntax| diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 6280d32e5..1648e82ab 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1798,16 +1798,11 @@ au BufNewFile,BufRead *.il,*.ils,*.cdf setf skill au BufNewFile,BufRead .slrnrc setf slrnrc au BufNewFile,BufRead *.score setf slrnsc -" Smalltalk (and TeX) +" Smalltalk au BufNewFile,BufRead *.st setf st -au BufNewFile,BufRead *.cls - \ if getline(1) =~ '^%' | - \ setf tex | - \ elseif getline(1)[0] == '#' && getline(1) =~ 'rexx' | - \ setf rexx | - \ else | - \ setf st | - \ endif + +" Smalltalk (and Rexx, TeX, and Visual Basic) +au BufNewFile,BufRead *.cls call dist#ft#FTcls() " Smarty templates au BufNewFile,BufRead *.tpl setf smarty |