From 782a6619216c651846661d933ac27c03b8c8b075 Mon Sep 17 00:00:00 2001 From: Ihor Radchenko Date: Thu, 28 Apr 2022 14:24:27 +0800 Subject: [PATCH] org-fold-show-set-visibility: Do not reveal emphasis unless DETAIL is `local' * lisp/org-fold.el (org-fold-show-set-visibility--text-properties): Prevent revealing hidden emphasis unless requested DETAIL is `local'. * lisp/ol.el (org-next-link): Honour `org-fold-show-context-detail'. Reported in https://orgmode.org/list/626a0713.1c69fb81.a3583.1a07SMTPIN_ADDED_BROKEN@mx.google.com --- lisp/ol.el | 2 +- lisp/org-fold.el | 35 +++++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/lisp/ol.el b/lisp/ol.el index 22eaae8fb..d4bd0e40c 100644 --- a/lisp/ol.el +++ b/lisp/ol.el @@ -1456,7 +1456,7 @@ is non-nil, move backward." (`nil nil) (link (goto-char (org-element-property :begin link)) - (when (org-invisible-p) (org-fold-show-context)) + (when (org-invisible-p) (org-fold-show-context 'link-search)) (throw :found t))))) (goto-char pos) (setq org-link--search-failed t) diff --git a/lisp/org-fold.el b/lisp/org-fold.el index 67b8b582c..9739bbed2 100644 --- a/lisp/org-fold.el +++ b/lisp/org-fold.el @@ -830,21 +830,28 @@ DETAIL is either nil, `minimal', `local', `ancestors', (redisplay) (let ((region (org-fold-get-region-at-point))) ;; Reveal emphasis markers. - (let (org-hide-emphasis-markers - org-link-descriptive - org-pretty-entities - org-hide-macro-markers - (region (or (org-find-text-property-region (point) 'org-emphasis) - (org-find-text-property-region (point) 'org-macro) - (org-find-text-property-region (point) 'invisible) - region))) - (when region - (org-with-point-at (car region) - (beginning-of-line) - (let (font-lock-extend-region-functions) - (font-lock-fontify-region (max (point-min) (1- (car region))) (cdr region)))))) + (when (eq detail 'local) + (let (org-hide-emphasis-markers + org-link-descriptive + org-pretty-entities + org-hide-macro-markers + (region (or (org-find-text-property-region (point) 'org-emphasis) + (org-find-text-property-region (point) 'org-macro) + (org-find-text-property-region (point) 'invisible) + region))) + (when region + (org-with-point-at (car region) + (beginning-of-line) + (let (font-lock-extend-region-functions) + (font-lock-fontify-region (max (point-min) (1- (car region))) (cdr region)))))) + ;; Unfold links. + (dolist (spec '(org-link org-link-description)) + (org-fold-region (car region) (cdr region) nil spec))) (when region - (org-fold-region (car region) (cdr region) nil)))) + (dolist (spec (org-fold-core-folding-spec-list)) + ;; Links are taken care by above. + (unless (memq spec '(org-link org-link-description)) + (org-fold-region (car region) (cdr region) nil spec)))))) (unless (org-before-first-heading-p) (org-with-limited-levels (cl-case detail