Release version 0.2
[vim/signature_block.vim.git] / plugin / signature_block.vim
index cc6223c..156cb18 100644 (file)
@@ -1,11 +1,18 @@
 "---------------------------------------------------------------------------
 " Vim global plugin for adding and manipulating signature blocks in e-mails
-" Maintainer:  Antonio Ospite <ospite@studenti.unina.it>
-" Version:     0.1
-" Last Change: 2009-11-24
+" Maintainer:  Antonio Ospite <ao2@ao2.it>
+" Version:     0.2
+" Last Change: 2016-06-08
 " License:     This script is free software; you can redistribute it and/or
 "              modify it under the terms of the GNU General Public License.
 "
+" History:
+"   1.0: Initial upload
+"   2.0:
+"     - Check that the signature file is readable before removing the old
+"       signature and append the new one.
+"     - Minor fixes.
+"
 " Install Details:
 " Drop this file into your $HOME/.vim/plugin directory.
 "
 " map <Leader>R :call ReplaceAllSignatures('~/.signature')<CR>
 "
 " " Append a signature block to all e-mails
-" autocmd FileType mail silent call AddSignature('~/.signature') | w
+" autocmd FileType mail if AddSignature('~/.signature') | w | endif
 "
-" " Append a signature block to cover letters generated with git-format-patch
-" autocmd BufRead 0000-cover-letter.patch silent call AddSignature('~/.signature') | w
+" " Replace the git version with a signature in cover letters generated with git-format-patch
+" autocmd BufRead 0000-cover-letter.patch if ReplaceLastSignature('~/.signature') | w | endif
 " autocmd BufRead 0000-cover-letter.patch autocmd! BufRead 0000-cover-letter.patch
 "
 " References:
 " http://en.wikipedia.org/wiki/Signature_block
 " http://tools.ietf.org/html/rfc1855
 "
+" The latest version of this script is available at these locations:
+" https://git.ao2.it/vim/signature_block.vim.git
+" http://www.vim.org/scripts/script.php?script_id=2872
+" https://github.com/vim-scripts/signature_block.vim
+"
 "---------------------------------------------------------------------------
 
 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 +74,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 +92,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 +102,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
 
@@ -82,9 +117,11 @@ func! ReplaceAllSignatures(sigfile)
        endtry
 
        call AppendSignature(a:sigfile)
-       
+
        " restore cursor position from mark 'z' if the mark is still valid
        silent! normal `z
+
+       return v:true
 endfunc
 
 
@@ -93,6 +130,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
 
@@ -104,7 +145,9 @@ func! ReplaceLastSignature(sigfile)
        endtry
 
        call AppendSignature(a:sigfile)
-       
+
        " restore cursor position from mark 'z' if the mark is still valid
        silent! normal `z
+
+       return v:true
 endfunc