Last Modified:

epa-fileでパスフレーズを間違えた場合にリトライできるようにするEmacs

epa-file-cache-passphrase-for-symmetric-encryptionを設定するとパスフレーズをキャッシュしてくれるようになりますが、 パスフレーズを間違ってしまった場合もキャッシュされてしまうので、リトライしても再度パスフレーズを聞いてくれずにファイルを開けなくなります。

解決方法

(use-package epa-file
  :config
  (defun advice:before/epa-file--find-file-not-found-function ()
    "失敗したパスフレーズを削除する"
    (when (equal "Decryption failed" (cadr epa-file-error))
      (setq epa-file-passphrase-alist
            (delq (assoc (file-truename buffer-file-name) epa-file-passphrase-alist) epa-file-passphrase-alist))))
  (advice-add 'epa-file--find-file-not-found-function :before #'advice:before/epa-file--find-file-not-found-function)

  (setq epa-file-cache-passphrase-for-symmetric-encryption t))