aboutsummaryrefslogtreecommitdiff
path: root/.vim/ftplugin/gpg.vim
diff options
context:
space:
mode:
authorRyan Kavanagh <ryanakca@kubuntu.org>2011-08-14 17:16:55 -0400
committerRyan Kavanagh <ryanakca@kubuntu.org>2011-08-25 07:42:57 -0400
commit1c019761dfaf6be82de9284fa5e2b9dbfbdec27d (patch)
tree7ed6bd2f437d3a334bd7a81f62e6dfa63689272b /.vim/ftplugin/gpg.vim
Initial import
Diffstat (limited to '.vim/ftplugin/gpg.vim')
-rw-r--r--.vim/ftplugin/gpg.vim33
1 files changed, 33 insertions, 0 deletions
diff --git a/.vim/ftplugin/gpg.vim b/.vim/ftplugin/gpg.vim
new file mode 100644
index 0000000..20f641f
--- /dev/null
+++ b/.vim/ftplugin/gpg.vim
@@ -0,0 +1,33 @@
+" Transparent editing of gpg encrypted files.
+" By Wouter Hanegraaff <wouter@blub.net>
+augroup encrypted
+au!
+" First make sure nothing is written to ~/.viminfo while editing
+" an encrypted file.
+autocmd BufReadPre,FileReadPre *.gpg set viminfo=
+" We don't want a swap file, as it writes unencrypted data to disk
+autocmd BufReadPre,FileReadPre *.gpg set noswapfile
+" Switch to binary mode to read the encrypted file
+autocmd BufReadPre,FileReadPre *.gpg set bin
+autocmd BufReadPre,FileReadPre *.gpg let ch_save = &ch|set ch=2
+autocmd BufReadPre,FileReadPre *.gpg let shsave=&sh
+autocmd BufReadPre,FileReadPre *.gpg let &sh='sh'
+autocmd BufReadPre,FileReadPre *.gpg let ch_save = &ch|set ch=2
+autocmd BufReadPost,FileReadPost *.gpg '[,']!gpg --decrypt --default-recipient-self 2> /dev/null
+autocmd BufReadPost,FileReadPost *.gpg let &sh=shsave
+" Switch to normal mode for editing
+autocmd BufReadPost,FileReadPost *.gpg set nobin
+autocmd BufReadPost,FileReadPost *.gpg let &ch = ch_save|unlet ch_save
+autocmd BufReadPost,FileReadPost *.gpg execute ":doautocmd BufReadPost " . expand("%:r")
+" Convert all text to encrypted text before writing
+autocmd BufWritePre,FileWritePre *.gpg set bin
+autocmd BufWritePre,FileWritePre *.gpg let shsave=&sh
+autocmd BufWritePre,FileWritePre *.gpg let &sh='sh'
+autocmd BufWritePre,FileWritePre *.gpg '[,']!gpg --encrypt --default-recipient-self 2>/dev/null
+autocmd BufWritePre,FileWritePre *.gpg let &sh=shsave
+" Undo the encryption so we are back in the normal text, directly
+" after the file has been written.
+autocmd BufWritePost,FileWritePost *.gpg silent u
+autocmd BufWritePost,FileWritePost *.gpg set nobin
+augroup END
+