Merge branch 'autochdir'

This commit is contained in:
James McCoy 2017-10-24 20:28:32 -04:00
commit 5b069789e2
No known key found for this signature in database
GPG Key ID: DFE691AE331BA3DB

View File

@ -1,5 +1,5 @@
" Name: gnupg.vim " Name: gnupg.vim
" Last Change: 2017 May 31 " Last Change: 2017 Oct 22
" Maintainer: James McCoy <jamessan@jamessan.com> " Maintainer: James McCoy <jamessan@jamessan.com>
" Original Author: Markus Braun <markus.braun@krawel.de> " Original Author: Markus Braun <markus.braun@krawel.de>
" Summary: Vim plugin for transparent editing of gpg encrypted files. " Summary: Vim plugin for transparent editing of gpg encrypted files.
@ -455,7 +455,7 @@ function s:GPGDecrypt(bufread)
call s:GPGDebug(3, printf(">>>>>>>> Entering s:GPGDecrypt(%d)", a:bufread)) call s:GPGDebug(3, printf(">>>>>>>> Entering s:GPGDecrypt(%d)", a:bufread))
" get the filename of the current buffer " get the filename of the current buffer
let filename = expand("<afile>:p") let filename = resolve(expand("<afile>:p"))
" clear GPGRecipients and GPGOptions " clear GPGRecipients and GPGOptions
if type(g:GPGDefaultRecipients) == type([]) if type(g:GPGDefaultRecipients) == type([])
@ -469,7 +469,7 @@ function s:GPGDecrypt(bufread)
let b:GPGOptions = [] let b:GPGOptions = []
" file name minus extension " file name minus extension
let autocmd_filename = expand('<afile>:r') let autocmd_filename = fnamemodify(filename, ':r')
" File doesn't exist yet, so nothing to decrypt " File doesn't exist yet, so nothing to decrypt
if !filereadable(filename) if !filereadable(filename)
@ -478,6 +478,12 @@ function s:GPGDecrypt(bufread)
silent execute ':doautocmd BufNewFile ' . fnameescape(autocmd_filename) silent execute ':doautocmd BufNewFile ' . fnameescape(autocmd_filename)
call s:GPGDebug(2, 'called BufNewFile autocommand for ' . autocmd_filename) call s:GPGDebug(2, 'called BufNewFile autocommand for ' . autocmd_filename)
set buftype=acwrite
" Remove the buffer name ...
silent 0file
" ... so we can force it to be absolute
exe 'silent file' filename
" This is a new file, so force the user to edit the recipient list if " This is a new file, so force the user to edit the recipient list if
" they open a new file and public keys are preferred " they open a new file and public keys are preferred
if (g:GPGPreferSymmetric == 0) if (g:GPGPreferSymmetric == 0)
@ -603,6 +609,10 @@ function s:GPGDecrypt(bufread)
endif endif
" Ensure the buffer is only saved by using our BufWriteCmd " Ensure the buffer is only saved by using our BufWriteCmd
set buftype=acwrite set buftype=acwrite
" Always set the buffer name to the absolute path, otherwise Vim won't
" track the correct buffer name when changing directories (due to
" buftype=acwrite).
exe 'file' filename
else else
execute silent 'read' fnameescape(filename) execute silent 'read' fnameescape(filename)
endif endif
@ -661,7 +671,7 @@ function s:GPGEncrypt()
endif endif
" file name minus extension " file name minus extension
let autocmd_filename = expand('<afile>:r') let autocmd_filename = expand('<afile>:p:r')
silent exe ':doautocmd '. auType .'Pre '. fnameescape(autocmd_filename) silent exe ':doautocmd '. auType .'Pre '. fnameescape(autocmd_filename)
call s:GPGDebug(2, 'called '. auType .'Pre autocommand for ' . autocmd_filename) call s:GPGDebug(2, 'called '. auType .'Pre autocommand for ' . autocmd_filename)
@ -675,7 +685,7 @@ function s:GPGEncrypt()
return return
endif endif
let filename = resolve(expand('<afile>')) let filename = resolve(expand('<afile>:p'))
" initialize GPGOptions if not happened before " initialize GPGOptions if not happened before
if (!exists("b:GPGOptions") || empty(b:GPGOptions)) if (!exists("b:GPGOptions") || empty(b:GPGOptions))
let b:GPGOptions = [] let b:GPGOptions = []
@ -751,7 +761,10 @@ function s:GPGEncrypt()
endif endif
if auType == 'BufWrite' if auType == 'BufWrite'
if expand('%:p') == filename
setl nomodified setl nomodified
endif
setl buftype=acwrite
let &readonly = filereadable(filename) && filewritable(filename) == 0 let &readonly = filereadable(filename) && filewritable(filename) == 0
endif endif
@ -938,7 +951,7 @@ function s:GPGFinishRecipientsBuffer()
" go to buffer before doing work " go to buffer before doing work
if (bufnr("%") != expand("<abuf>")) if (bufnr("%") != expand("<abuf>"))
" switch to scratch buffer window " switch to scratch buffer window
execute 'silent! ' . bufwinnr(expand("<afile>")) . "wincmd w" execute 'silent! ' . bufwinnr(expand("<afile>:p")) . "wincmd w"
endif endif
" delete the autocommand " delete the autocommand
@ -1121,7 +1134,7 @@ function s:GPGFinishOptionsBuffer()
" go to buffer before doing work " go to buffer before doing work
if (bufnr("%") != expand("<abuf>")) if (bufnr("%") != expand("<abuf>"))
" switch to scratch buffer window " switch to scratch buffer window
execute 'silent! ' . bufwinnr(expand("<afile>")) . "wincmd w" execute 'silent! ' . bufwinnr(expand("<afile>:p")) . "wincmd w"
endif endif
" clear options and unknownOptions " clear options and unknownOptions