org-crypt: when running `org-decrypt-entry', only run `auto-save-mode' check if on an encrypted entry
* lisp/org-crypt.el (org-crypt-check-auto-save): New function, see next change. * lisp/org-crypt.el (org-decrypt-entry): Break the auto-save-mode check out into a separate function, and call it at a later point, to assure it only runs when visiting an encrypted entry. Currently `org-decrypt-entry' is doing the auto-save-mode check whenever it's run, regardless of context, while this only makes sense when run on an entry which is actually encrypted (or looks like it, at least). TINYCHANGE
This commit is contained in:
parent
a5d4783a7e
commit
7e5c0263fc
|
@ -116,6 +116,35 @@ nil : Leave auto-save-mode enabled.
|
|||
(const :tag "Ask" ask)
|
||||
(const :tag "Encrypt" encrypt)))
|
||||
|
||||
(defun org-crypt-check-auto-save ()
|
||||
"Check whether auto-save-mode is enabled for the current buffer.
|
||||
|
||||
`auto-save-mode' may cause leakage when decrypting entries, so
|
||||
check whether it's enabled, and decide what to do about it.
|
||||
|
||||
See `org-crypt-disable-auto-save'."
|
||||
(when buffer-auto-save-file-name
|
||||
(cond
|
||||
((or
|
||||
(eq org-crypt-disable-auto-save t)
|
||||
(and
|
||||
(eq org-crypt-disable-auto-save 'ask)
|
||||
(y-or-n-p "org-decrypt: auto-save-mode may cause leakage. Disable it for current buffer? ")))
|
||||
(message (concat "org-decrypt: Disabling auto-save-mode for " (or (buffer-file-name) (current-buffer))))
|
||||
; The argument to auto-save-mode has to be "-1", since
|
||||
; giving a "nil" argument toggles instead of disabling.
|
||||
(auto-save-mode -1))
|
||||
((eq org-crypt-disable-auto-save nil)
|
||||
(message "org-decrypt: Decrypting entry with auto-save-mode enabled. This may cause leakage."))
|
||||
((eq org-crypt-disable-auto-save 'encrypt)
|
||||
(message "org-decrypt: Enabling re-encryption on auto-save.")
|
||||
(add-hook 'auto-save-hook
|
||||
(lambda ()
|
||||
(message "org-crypt: Re-encrypting all decrypted entries due to auto-save.")
|
||||
(org-encrypt-entries))
|
||||
nil t))
|
||||
(t nil))))
|
||||
|
||||
(defun org-crypt-key-for-heading ()
|
||||
"Return the encryption key for the current heading."
|
||||
(save-excursion
|
||||
|
@ -164,30 +193,6 @@ nil : Leave auto-save-mode enabled.
|
|||
(defun org-decrypt-entry ()
|
||||
"Decrypt the content of the current headline."
|
||||
(interactive)
|
||||
|
||||
; auto-save-mode may cause leakage, so check whether it's enabled.
|
||||
(when buffer-auto-save-file-name
|
||||
(cond
|
||||
((or
|
||||
(eq org-crypt-disable-auto-save t)
|
||||
(and
|
||||
(eq org-crypt-disable-auto-save 'ask)
|
||||
(y-or-n-p "org-decrypt: auto-save-mode may cause leakage. Disable it for current buffer? ")))
|
||||
(message (concat "org-decrypt: Disabling auto-save-mode for " (or (buffer-file-name) (current-buffer))))
|
||||
; The argument to auto-save-mode has to be "-1", since
|
||||
; giving a "nil" argument toggles instead of disabling.
|
||||
(auto-save-mode -1))
|
||||
((eq org-crypt-disable-auto-save nil)
|
||||
(message "org-decrypt: Decrypting entry with auto-save-mode enabled. This may cause leakage."))
|
||||
((eq org-crypt-disable-auto-save 'encrypt)
|
||||
(message "org-decrypt: Enabling re-encryption on auto-save.")
|
||||
(add-hook 'auto-save-hook
|
||||
(lambda ()
|
||||
(message "org-crypt: Re-encrypting all decrypted entries due to auto-save.")
|
||||
(org-encrypt-entries))
|
||||
nil t))
|
||||
(t nil)))
|
||||
|
||||
(require 'epg)
|
||||
(unless (org-before-first-heading-p)
|
||||
(save-excursion
|
||||
|
@ -199,6 +204,7 @@ nil : Leave auto-save-mode enabled.
|
|||
(outline-invisible-p))))
|
||||
(forward-line)
|
||||
(when (looking-at "-----BEGIN PGP MESSAGE-----")
|
||||
(org-crypt-check-auto-save)
|
||||
(let* ((end (save-excursion
|
||||
(search-forward "-----END PGP MESSAGE-----")
|
||||
(forward-line)
|
||||
|
|
Loading…
Reference in New Issue