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
This commit is contained in:
Ihor Radchenko 2022-04-28 14:24:27 +08:00
parent a0b8adf08a
commit 782a661921
No known key found for this signature in database
GPG key ID: 6470762A7DA11D8B
2 changed files with 22 additions and 15 deletions

View file

@ -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)

View file

@ -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