|
@@ -195,43 +195,43 @@ See `org-crypt-disable-auto-save'."
|
|
|
(interactive)
|
|
|
(require 'epg)
|
|
|
(unless (org-before-first-heading-p)
|
|
|
- (save-excursion
|
|
|
- (org-back-to-heading t)
|
|
|
- (let ((heading-point (point))
|
|
|
- (heading-was-invisible-p
|
|
|
- (save-excursion
|
|
|
- (outline-end-of-heading)
|
|
|
- (outline-invisible-p))))
|
|
|
- (forward-line)
|
|
|
- (when (looking-at "-----BEGIN PGP MESSAGE-----")
|
|
|
- (org-crypt-check-auto-save)
|
|
|
- (setq-local epg-context (epg-make-context nil t t))
|
|
|
- (let* ((end (save-excursion
|
|
|
- (search-forward "-----END PGP MESSAGE-----")
|
|
|
- (forward-line)
|
|
|
- (point)))
|
|
|
- (encrypted-text (buffer-substring-no-properties (point) end))
|
|
|
- (decrypted-text
|
|
|
- (decode-coding-string
|
|
|
- (epg-decrypt-string
|
|
|
- epg-context
|
|
|
- encrypted-text)
|
|
|
- 'utf-8)))
|
|
|
- ;; Delete region starting just before point, because the
|
|
|
- ;; outline property starts at the \n of the heading.
|
|
|
- (delete-region (1- (point)) end)
|
|
|
- ;; Store a checksum of the decrypted and the encrypted
|
|
|
- ;; text value. This allows reusing the same encrypted text
|
|
|
- ;; if the text does not change, and therefore avoid a
|
|
|
- ;; re-encryption process.
|
|
|
- (insert "\n" (propertize decrypted-text
|
|
|
- 'org-crypt-checksum (sha1 decrypted-text)
|
|
|
- 'org-crypt-key (org-crypt-key-for-heading)
|
|
|
- 'org-crypt-text encrypted-text))
|
|
|
- (when heading-was-invisible-p
|
|
|
- (goto-char heading-point)
|
|
|
- (org-flag-subtree t))
|
|
|
- nil))))))
|
|
|
+ (org-with-wide-buffer
|
|
|
+ (org-back-to-heading t)
|
|
|
+ (let ((heading-point (point))
|
|
|
+ (heading-was-invisible-p
|
|
|
+ (save-excursion
|
|
|
+ (outline-end-of-heading)
|
|
|
+ (outline-invisible-p))))
|
|
|
+ (org-end-of-meta-data)
|
|
|
+ (when (looking-at "-----BEGIN PGP MESSAGE-----")
|
|
|
+ (org-crypt-check-auto-save)
|
|
|
+ (setq-local epg-context (epg-make-context nil t t))
|
|
|
+ (let* ((end (save-excursion
|
|
|
+ (search-forward "-----END PGP MESSAGE-----")
|
|
|
+ (forward-line)
|
|
|
+ (point)))
|
|
|
+ (encrypted-text (buffer-substring-no-properties (point) end))
|
|
|
+ (decrypted-text
|
|
|
+ (decode-coding-string
|
|
|
+ (epg-decrypt-string
|
|
|
+ epg-context
|
|
|
+ encrypted-text)
|
|
|
+ 'utf-8)))
|
|
|
+ ;; Delete region starting just before point, because the
|
|
|
+ ;; outline property starts at the \n of the heading.
|
|
|
+ (delete-region (1- (point)) end)
|
|
|
+ ;; Store a checksum of the decrypted and the encrypted
|
|
|
+ ;; text value. This allows reusing the same encrypted text
|
|
|
+ ;; if the text does not change, and therefore avoid a
|
|
|
+ ;; re-encryption process.
|
|
|
+ (insert "\n" (propertize decrypted-text
|
|
|
+ 'org-crypt-checksum (sha1 decrypted-text)
|
|
|
+ 'org-crypt-key (org-crypt-key-for-heading)
|
|
|
+ 'org-crypt-text encrypted-text))
|
|
|
+ (when heading-was-invisible-p
|
|
|
+ (goto-char heading-point)
|
|
|
+ (org-flag-subtree t))
|
|
|
+ nil))))))
|
|
|
|
|
|
(defun org-encrypt-entries ()
|
|
|
"Encrypt all top-level entries in the current buffer."
|