* org-crypt.el (org-decrypt-entry): Delete \n on top level heading. This avoids a display bug showing the heading outlined where the text is not since it does not have the outline property. Restore subtree visibility state after decryption.
Cc: John Wiegley <jo...@gnu.org> Cc: Peter Jones <pjo...@pmade.com> Signed-off-by: Julien Danjou <jul...@danjou.info> --- lisp/org-crypt.el | 43 ++++++++++++++++++++++++++----------------- 1 files changed, 26 insertions(+), 17 deletions(-) diff --git a/lisp/org-crypt.el b/lisp/org-crypt.el index 1758a81..7c28d70 100644 --- a/lisp/org-crypt.el +++ b/lisp/org-crypt.el @@ -140,23 +140,32 @@ This setting can also be overridden in the CRYPTKEY property." (unless (org-before-first-heading-p) (save-excursion (org-back-to-heading t) - (forward-line) - (when (looking-at "-----BEGIN PGP MESSAGE-----") - (let* ((beg (point)) - (end (save-excursion - (search-forward "-----END PGP MESSAGE-----") - (forward-line) - (point))) - (epg-context (epg-make-context nil t t)) - (decrypted-text - (decode-coding-string - (epg-decrypt-string - epg-context - (buffer-substring-no-properties beg end)) - 'utf-8))) - (delete-region beg end) - (insert decrypted-text) - nil))))) + (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-----") + (let* ((end (save-excursion + (search-forward "-----END PGP MESSAGE-----") + (forward-line) + (point))) + (epg-context (epg-make-context nil t t)) + (decrypted-text + (decode-coding-string + (epg-decrypt-string + epg-context + (buffer-substring-no-properties (point) end)) + 'utf-8))) + ;; Delete region starting just before point, because the + ;; outline property starts at the \n of the heading. + (delete-region (1- (point)) end) + (insert "\n" decrypted-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." -- 1.7.2.3 _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode