From ee35f41d6b41dbf71cb558ecd8c69883738ff98a Mon Sep 17 00:00:00 2001 From: Israel Chauca Fuentes Date: Tue, 17 Sep 2013 23:51:43 -0400 Subject: Update vim_file_chooser.vim Allow choosing multiple files. Add ex command :RangerChooser. Use the value of mapleader for the keybinding. --- doc/examples/vim_file_chooser.vim | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/doc/examples/vim_file_chooser.vim b/doc/examples/vim_file_chooser.vim index 4f5fa3f2..064fbab6 100644 --- a/doc/examples/vim_file_chooser.vim +++ b/doc/examples/vim_file_chooser.vim @@ -2,16 +2,32 @@ " " Add ranger as a file chooser in vim " -" If you add this function and the key binding to the .vimrc, ranger can be -" started using the keybinding ",r". Once you select a file by pressing -" enter, ranger will quit again and vim will open the selected file. +" If you add this code to the .vimrc, ranger can be started using the command +" ":RagerChooser" or the keybinding "r". Once you select one or more +" files, press enter and ranger will quit again and vim will open the selected +" files. -fun! RangerChooser() - exec "silent !ranger --choosefile=/tmp/chosenfile " . expand("%:p:h") - if filereadable('/tmp/chosenfile') - exec 'edit ' . system('cat /tmp/chosenfile') - call system('rm /tmp/chosenfile') +function! RangeChooser() + let temp = tempname() + " The option "--choosefiles" was added in ranger 1.5.1. Use the next line + " with ranger 1.4.2 through 1.5.0 instead. + "exec 'silent !ranger --choosefile=' . shellescape(temp) + exec 'silent !ranger --choosefiles=' . shellescape(temp) + if !filereadable(temp) + " Nothing to read. + return endif - redraw! -endfun -map ,r :call RangerChooser() + let names = readfile(temp) + if empty(names) + " Nothing to open. + return + endif + " Edit the first item. + exec 'edit ' . fnameescape(names[0]) + " Add any remaning items to the arg list/buffer list. + for name in names[1:] + exec 'argadd ' . fnameescape(name) + endfor +endfunction +command! -bar RangerChooser call RangeChooser() +nnoremap r :RangerChooser -- cgit 1.4.1-2-gfad0