-
-
Save nickali/89f3743e305db015d0f3ad4ffd325ccb 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 }) | |
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 | |
-- Save the current 'ch' value to a buffer-local variable | |
vim.b.ch_save = vim.opt_local.ch | |
vim.cmd "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 | |
-- Restore the 'ch' value from the buffer-local variable | |
vim.opt_local.ch = vim.b.ch_save | |
vim.cmd "unlet b: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", | |
}) | |
-- Return an empty table to satisfy plugin loader requirements | |
return {} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Great! Though I needed a small fix, see https://gist.github.com/rodolfoap/a50b5fa7758c302ad74fcafe93c46efc
Keep it up :)