diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2018-12-07 13:42:30 +1300 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2018-12-08 11:48:00 +1300 |
commit | c3e2ac92f72ac85967bdaf8d740d040f6e9c36b4 (patch) | |
tree | b92dce7a46745985a48e1725ebdff5a253192598 /vim/filetype.vim | |
parent | Fix a local var name in openssl(1ssl) completion (diff) | |
download | dotfiles-c3e2ac92f72ac85967bdaf8d740d040f6e9c36b4.tar.gz dotfiles-c3e2ac92f72ac85967bdaf8d740d040f6e9c36b4.zip |
Move filetype.vim helper funcs into autoload
May as well, now that we've dropped support for versions of Vim that
don't have it.
Diffstat (limited to 'vim/filetype.vim')
-rw-r--r-- | vim/filetype.vim | 81 |
1 files changed, 3 insertions, 78 deletions
diff --git a/vim/filetype.vim b/vim/filetype.vim index cc0de4e4..3ac816d4 100644 --- a/vim/filetype.vim +++ b/vim/filetype.vim @@ -10,81 +10,6 @@ if !has('autocmd') || &compatible finish endif -" Helper function to run the 'filetypedetect' group on a file with its -" extension stripped off -function! s:StripRepeat() - - " Check we have the fnameescape() function - if !exists('*fnameescape') - return - endif - - " Expand the match result - let l:fn = expand('<afile>') - - " Strip leading and trailing #hashes# - if l:fn =~# '^#\+.*#\+$' - let l:fn = substitute(l:fn, '^#\+\(.\+\)#\+$', '\1', '') - - " Strip trailing tilde~ - elseif l:fn =~# '\~$' - let l:fn = substitute(l:fn, '\~$', '', '') - - " Strip generic .extension - else - let l:fn = expand('<afile>:r') - endif - - " Re-run the group if there's anything left - if strlen(l:fn) - execute 'doautocmd filetypedetect BufRead ' . fnameescape(l:fn) - endif - -endfunction - -" Helper function to run the 'filetypedetect' group on a file in a temporary -" sudoedit(8) directory, modifying it with an attempt to reverse the temporary -" filename change -function! s:SudoRepeat() - - " Check we have the fnameescape() function - if !exists('*fnameescape') - return - endif - - " Expand the match result - let l:fn = expand('<afile>') - - " myfileXXQGS16A.conf: strip eight chars before final period - if l:fn =~# '/[^./]\+\w\{8}\.[^./]\+$' - let l:fr = expand('<afile>:r') - let l:fe = expand('<afile>:e') - let l:fn = strpart(l:fr, -8, strlen(l:fr)) . '.' . l:fe - - " myfile.XXQGS16A: strip extension - elseif l:fn =~# '/[^./]\+\.\w\{8}$' - let l:fn = expand('<afile>:r') - - " Unrecognised pattern; return, don't repeat - else - return - endif - - " Re-run the group if there's anything left - if strlen(l:fn) - execute 'doautocmd filetypedetect BufRead ' . fnameescape(l:fn) - endif - -endfunction - -" Check whether the first line was changed and looks like a shebang, and if -" so, re-run filetype detection -function! s:CheckShebang() - if line('''[') == 1 && getline(1) =~# '^#!' - doautocmd filetypedetect BufRead - endif -endfunction - " Use our own filetype detection rules augroup filetypedetect autocmd! @@ -97,7 +22,7 @@ augroup filetypedetect \,?*~ \,?*.{bak,example,in,new,old,orig,sample,test} \,?*.dpkg-{bak,dist,new,old} - \ call s:StripRepeat() + \ call filetype#StripRepeat() " Stuff Tom cares about enough and edits often enough to type based on " filename patterns follows. @@ -534,7 +459,7 @@ augroup filetypedetect \ /var/tmp/?*????????.* \,/var/tmp/?*.???????? \ if !did_filetype() - \| call s:SudoRepeat() + \| call filetype#SudoRepeat() \|endif " Generic text, config, and log files, if no type assigned yet @@ -568,6 +493,6 @@ augroup filetypedetect " On leaving insert mode, check whether the first line was changed and looks " like a shebang format, and if so, re-run filetype detection - autocmd InsertLeave * call s:CheckShebang() + autocmd InsertLeave * call filetype#CheckShebang() augroup END |