From: Antonio Ospite Date: Wed, 8 Jun 2016 09:05:46 +0000 (+0200) Subject: signature_block.vim: check that the signature file is readable X-Git-Tag: 0.2~4 X-Git-Url: https://git.ao2.it/vim/signature_block.vim.git/commitdiff_plain/b7fd78cba105d437fc2b6230c2e7a4f110e2d163?ds=inline signature_block.vim: check that the signature file is readable Check that the signature file is readable before appending it. This changes the behavior of the script when the signature file is NOT readable: - before this change the old signature would be removed even if the new one could not be read; - after this change the buffer content would not be changed if the new signature could not be read. --- diff --git a/plugin/signature_block.vim b/plugin/signature_block.vim index cc6223c..d7eb8e0 100644 --- a/plugin/signature_block.vim +++ b/plugin/signature_block.vim @@ -31,6 +31,19 @@ if exists("g:loaded_signaturePlugin") | finish | endif let g:loaded_signaturePlugin = 1 +" Function: SigFileReadable() +" Purpose: Check if the signature file is readable +"--------------------------------------------------------------------------- +func! SigFileReadable(sigfile) + let filename = expand(a:sigfile) + if !filereadable(filename) + echoerr "E484: Can't open file " . filename + return v:false + endif + + return v:true +endfunc + "--------------------------------------------------------------------------- " Function: AppendSignature() " Purpose: Append a signature block at the end of message @@ -49,6 +62,10 @@ endfunc " Purpose: Add a signature block if there isn't one already "--------------------------------------------------------------------------- func! AddSignature(sigfile) + if !SigFileReadable(a:sigfile) + return v:false + endif + " Save current cursor position in mark 'z' normal mz @@ -63,6 +80,8 @@ func! AddSignature(sigfile) " restore cursor position from mark 'z' if the mark is still valid silent! normal `z + + return v:true endfunc @@ -71,6 +90,10 @@ endfunc " Purpose: Replace all signature blocks in the message "--------------------------------------------------------------------------- func! ReplaceAllSignatures(sigfile) + if !SigFileReadable(a:sigfile) + return v:false + endif + " Save current cursor position in mark 'z' normal mz @@ -85,6 +108,8 @@ func! ReplaceAllSignatures(sigfile) " restore cursor position from mark 'z' if the mark is still valid silent! normal `z + + return v:true endfunc @@ -93,6 +118,10 @@ endfunc " Purpose: Replace only the last signature block in the message "--------------------------------------------------------------------------- func! ReplaceLastSignature(sigfile) + if !SigFileReadable(a:sigfile) + return v:false + endif + " Save current cursor position in mark 'z' normal mz @@ -107,4 +136,6 @@ func! ReplaceLastSignature(sigfile) " restore cursor position from mark 'z' if the mark is still valid silent! normal `z + + return v:true endfunc