63 lines
1.4 KiB
VimL
63 lines
1.4 KiB
VimL
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
|
|
|
|
" Filetype plugin for vifm rename buffer
|
|
" Maintainer: xaizek <xaizek@posteo.net>
|
|
" Last Change: October 05, 2014
|
|
|
|
if exists("b:did_ftplugin")
|
|
finish
|
|
endif
|
|
|
|
let b:did_ftplugin = 1
|
|
|
|
" Copy list of original file names
|
|
let s:files = getline(1, '$')
|
|
|
|
" Closes window/tab/Vim when buffer is left alone in there
|
|
function! s:QuitIfOnlyWindow()
|
|
" Boil out if there is more than one window
|
|
if winbufnr(2) != -1
|
|
return
|
|
endif
|
|
|
|
" Just close tab with this single window or quit Vim with last tab
|
|
if tabpagenr('$') == 1
|
|
bdelete
|
|
quit
|
|
else
|
|
close
|
|
endif
|
|
endfunction
|
|
|
|
" Create a vertical split window for original file names and configure it
|
|
belowright vsplit __VifmRenameOrig__
|
|
enew
|
|
call setline(1, s:files)
|
|
setlocal buftype=nofile
|
|
setlocal bufhidden=hide
|
|
setlocal noswapfile
|
|
setlocal nobuflisted
|
|
setlocal cursorbind
|
|
setlocal scrollbind
|
|
setlocal nocursorline
|
|
|
|
" Free now useless list of file names
|
|
unlet s:files
|
|
|
|
" Setup a hook in auxiliary local window to do not leave it alone, when it's
|
|
" useless
|
|
augroup VifmRenameAutoCmds
|
|
autocmd! * <buffer>
|
|
autocmd BufEnter <buffer> call s:QuitIfOnlyWindow()
|
|
augroup END
|
|
|
|
" Go back to the original window and ensure it will remain synchronized with
|
|
" the auxiliary one
|
|
wincmd w
|
|
setlocal cursorbind
|
|
setlocal scrollbind
|
|
|
|
" vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 :
|
|
|
|
endif
|