Last active
November 19, 2024 04:12
-
-
Save traut/cd19ae2817ab13e0bade1f8a9995029f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local gpgGroup = vim.api.nvim_create_augroup('customGpg', { clear = true }) | |
-- autocmds execute in the order in which they were defined. | |
-- https://neovim.io/doc/user/autocmd.html#autocmd-define | |
vim.api.nvim_create_autocmd({ 'BufReadPre', 'FileReadPre' }, { | |
pattern = '*.gpg', | |
group = gpgGroup, | |
callback = function () | |
-- Make sure nothing is written to shada file while editing an encrypted file. | |
vim.opt_local.shada = nil | |
-- We don't want a swap file, as it writes unencrypted data to disk | |
vim.opt_local.swapfile = false | |
-- Switch to binary mode to read the encrypted file | |
vim.opt_local.bin = true | |
vim.cmd("let ch_save = &ch|set ch=2") | |
end | |
}) | |
vim.api.nvim_create_autocmd({ 'BufReadPost', 'FileReadPost' }, { | |
pattern = '*.gpg', | |
group = gpgGroup, | |
callback = function () | |
vim.cmd("'[,']!gpg --decrypt 2> /dev/null") | |
-- Switch to normal mode for editing | |
vim.opt_local.bin = false | |
vim.cmd('let &ch = ch_save|unlet ch_save') | |
vim.cmd(":doautocmd BufReadPost " .. vim.fn.expand("%:r")) | |
end | |
}) | |
-- Convert all text to encrypted text before writing | |
vim.api.nvim_create_autocmd({ 'BufWritePre', 'FileWritePre' }, { | |
pattern = '*.gpg', | |
group = gpgGroup, | |
command = "'[,']!gpg --default-recipient-self -ae 2>/dev/null", | |
}) | |
-- Undo the encryption so we are back in the normal text, directly | |
-- after the file has been written. | |
vim.api.nvim_create_autocmd({ 'BufWritePost', 'FileWritePost' }, { | |
pattern = '*.gpg', | |
group = gpgGroup, | |
command = 'u' | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
awesome, thank you @nickali