diff options
Diffstat (limited to 'vim')
-rw-r--r-- | vim/.vim/scripts.vim | 55 | ||||
-rwxr-xr-x | vim/.vim/vimrc | 1 |
2 files changed, 56 insertions, 0 deletions
diff --git a/vim/.vim/scripts.vim b/vim/.vim/scripts.vim new file mode 100644 index 0000000..6221c55 --- /dev/null +++ b/vim/.vim/scripts.vim @@ -0,0 +1,55 @@ +" Additional scripts' filetype detections + +" This file is called by an autocommand for every file that has just been +" loaded into a buffer. It checks if the type of file can be recognized by +" the file contents. The autocommand is in $VIMRUNTIME/filetype.vim. +" +" Note that the pattern matches are done with =~# to avoid the value of the +" 'ignorecase' option making a difference. Where case is to be ignored use +" =~? instead. Do not use =~ anywhere. + +" Only do the rest when the FileType autocommand has not been triggered yet. +if did_filetype() + finish +endif + +" Line continuation is used here, remove 'C' from 'cpoptions' +let s:cpo_save = &cpo +set cpo&vim + +let s:line1 = getline(1) +if s:line1 =~# "^#!" + " A script that starts with "#!". + " Check for a line like "#!/usr/bin/env VAR=val bash". Turn it into + " "#!/usr/bin/bash" to make matching easier. + if s:line1 =~# '^#!\s*\S*\<env\s' + let s:line1 = substitute(s:line1, '\S\+=\S\+', '', 'g') + let s:line1 = substitute(s:line1, '\<env\s\+', '', '') + endif + + " Get the program name. + " Only accept spaces in PC style paths: "#!c:/program files/perl [args]". + " If the word env is used, use the first word after the space: + " "#!/usr/bin/env perl [path/args]" + " If there is no path use the first word: "#!perl [path/args]". + " Otherwise get the last word after a slash: "#!/usr/bin/perl [path/args]". + if s:line1 =~# '^#!\s*\a:[/\\]' + let s:name = substitute(s:line1, '^#!.*[/\\]\(\i\+\).*', '\1', '') + elseif s:line1 =~# '^#!.*\<env\>' + let s:name = substitute(s:line1, '^#!.*\<env\>\s\+\(\i\+\).*', '\1', '') + elseif s:line1 =~# '^#!\s*[^/\\ ]*\>\([^/\\]\|$\)' + let s:name = substitute(s:line1, '^#!\s*\([^/\\ ]*\>\).*', '\1', '') + else + let s:name = substitute(s:line1, '^#!\s*\S*[/\\]\(\i\+\).*', '\1', '') + endif + + " GNU Octave + if s:name =~# 'octave' + set ft=octave + endif + unlet s:name +endif + +" Restore 'cpoptions' +let &cpo = s:cpo_save +unlet s:cpo_save s:line1 diff --git a/vim/.vim/vimrc b/vim/.vim/vimrc index e93cb2b..b8c5ed3 100755 --- a/vim/.vim/vimrc +++ b/vim/.vim/vimrc @@ -16,6 +16,7 @@ set omnifunc=syntaxcomplete#Complete set diffopt+=algorithm:patience autocmd BufWinEnter * let w:m1=matchadd('ColorColumn', '\%<81v.\%>80v', -1) autocmd BufNewFile,BufRead *.PAS setlocal filetype=pascal +autocmd BufNewFile,BufRead *.m setlocal filetype=octave autocmd FileType c,h,go,glsl setlocal cindent cinoptions=(0 noexpandtab shiftwidth=8 autocmd FileType rst setlocal shiftwidth=3 autocmd FileType css,javascript,python,perl6 setlocal shiftwidth=4 |