--- lisp/org-macs.el | 32 +++++++++++++++++--------------- lisp/org.el | 7 ++++++- 2 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/lisp/org-macs.el b/lisp/org-macs.el index 3c902b603..d5d4c205d 100644 --- a/lisp/org-macs.el +++ b/lisp/org-macs.el @@ -722,7 +722,7 @@ (defsubst org-current-line (&optional pos) -;;; Overlays +;;; Overlays and text properties (defun org-overlay-display (ovl text &optional face evap) "Make overlay OVL display TEXT with face FACE." @@ -745,20 +745,22 @@ (defun org-find-overlays (prop &optional pos delete) (delete (delete-overlay ov)) (t (push ov found)))))) -(defun org-flag-region (from to flag spec) - "Hide or show lines from FROM to TO, according to FLAG. -SPEC is the invisibility spec, as a symbol." - (remove-overlays from to 'invisible spec) - ;; Use `front-advance' since text right before to the beginning of - ;; the overlay belongs to the visible line than to the contents. - (when flag - (let ((o (make-overlay from to nil 'front-advance))) - (overlay-put o 'evaporate t) - (overlay-put o 'invisible spec) - (overlay-put o - 'isearch-open-invisible - (lambda (&rest _) (org-show-context 'isearch)))))) - +(defun org-find-text-property-region (pos prop) + "Find a region around POS containing same non-nil value of PROP text property. +Return nil when PROP is not set at POS." + (let* ((beg (and (get-text-property pos prop) pos)) + (end beg)) + (when beg + (unless (or (equal beg (point-min)) + (not (eq (get-text-property beg prop) + (get-text-property (1- beg) prop)))) + (setq beg (previous-single-property-change pos prop nil (point-min)))) + (unless (or (equal end (point-max)) + ;; (not (eq (get-text-property end prop) + ;; (get-text-property (1+ end) prop))) + ) + (setq end (next-single-property-change pos prop nil (point-max)))) + (cons beg end)))) ;;; Regexp matching diff --git a/lisp/org.el b/lisp/org.el index d279edae4..f59d2cfb0 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -5596,7 +5596,10 @@ (defun org-fontify-like-in-org-mode (s &optional odd-levels) (let ((org-odd-levels-only odd-levels)) (org-mode) (org-font-lock-ensure) - (buffer-string)))) + (if org-link-descriptive + (org-link-display-format + (buffer-string)) + (buffer-string))))) (defun org-get-level-face (n) "Get the right face for match N in font-lock matching of headlines." @@ -5726,6 +5729,8 @@ (defun org-raise-scripts (limit) (if (equal (char-after (match-beginning 2)) ?^) (nth (if table-p 3 1) org-script-display) (nth (if table-p 2 0) org-script-display))) + (put-text-property (match-beginning 2) (match-end 3) + 'org-emphasis t) (add-text-properties (match-beginning 2) (match-end 2) (list 'invisible t)) (when (and (eq (char-after (match-beginning 3)) ?{)