From: Juri Linkov Date: Fri, 16 Sep 2022 16:16:10 +0000 (+0300) Subject: * lisp/outline.el: Optimize performance of S-TAB (bug#57813) X-Git-Tag: emacs-29.0.90~1856^2~442 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=dd1aa62642e9c121c783b4973c1289d409d915ef;p=emacs.git * lisp/outline.el: Optimize performance of S-TAB (bug#57813) (outline-hide-subtree): Don't call outline--insert-close-button, because it's handled by outline--fix-up-all-buttons called from outline-flag-region. (outline-show-subtree): Don't call outline--insert-open-button, same reason. (outline--fix-up-all-buttons): Check invisible outlines explicitly instead of using slow outline--cycle-state. --- diff --git a/lisp/outline.el b/lisp/outline.el index 8281f24291d..25ef1616b93 100644 --- a/lisp/outline.el +++ b/lisp/outline.el @@ -986,8 +986,6 @@ If non-nil, EVENT should be a mouse event." (interactive (list last-nonmenu-event)) (when (mouse-event-p event) (mouse-set-point event)) - (when (outline--use-buttons-p) - (outline--insert-close-button)) (outline-flag-subtree t)) (defun outline--make-button-overlay (type) @@ -1052,12 +1050,12 @@ If non-nil, EVENT should be a mouse event." (setq from (line-beginning-position)))) (outline-map-region (lambda () - ;; `outline--cycle-state' will fail if we're in a totally - ;; collapsed buffer -- but in that case, we're not in a - ;; `show-all' situation. - (if (eq (ignore-errors (outline--cycle-state)) 'show-all) - (outline--insert-open-button) - (outline--insert-close-button))) + (if (save-excursion + (outline-end-of-heading) + (seq-some (lambda (o) (eq (overlay-get o 'invisible) 'outline)) + (overlays-at (point)))) + (outline--insert-close-button) + (outline--insert-open-button))) (or from (point-min)) (or to (point-max))))) (define-obsolete-function-alias 'hide-subtree #'outline-hide-subtree "25.1") @@ -1080,8 +1078,6 @@ If non-nil, EVENT should be a mouse event." (interactive (list last-nonmenu-event)) (when (mouse-event-p event) (mouse-set-point event)) - (when (outline--use-buttons-p) - (outline--insert-open-button)) (outline-flag-subtree nil)) (define-obsolete-function-alias 'show-subtree #'outline-show-subtree "25.1")