From e2f85d4c4091e029f689efe81d41bae8477d72ca Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Thu, 29 May 2025 19:52:20 +0300 Subject: [PATCH] Use 'outline-heading-end-regexp' consistently. * lisp/outline.el (outline-font-lock-keywords): For non-nil 'outline-search-function' also search for 'outline-heading-end-regexp' afterwards like there is 'outline-heading-end-regexp' at the end of the regexp counterpart. (outline-minor-mode-highlight-buffer): Use 'outline-heading-end-regexp' like in 'outline-font-lock-keywords' instead of "$". For non-nil 'outline-search-function' also use 'outline-heading-end-regexp' the same way. * lisp/help.el (describe-bindings): Remove unnecessary buffer-local 'outline-heading-end-regexp'. (cherry picked from commit c9cb89edd500e8a142a7e7cc44a4f8335795d038) --- lisp/help.el | 1 - lisp/outline.el | 26 ++++++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lisp/help.el b/lisp/help.el index 213b5de4c50..8e65ec19fe3 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -939,7 +939,6 @@ or a buffer name." (when describe-bindings-outline (setq-local outline-regexp ".*:$") - (setq-local outline-heading-end-regexp ":\n") (setq-local outline-level (lambda () 1)) (setq-local outline-minor-mode-cycle t outline-minor-mode-highlight t diff --git a/lisp/outline.el b/lisp/outline.el index 9db47cdaf21..71aa33c8b04 100644 --- a/lisp/outline.el +++ b/lisp/outline.el @@ -259,14 +259,19 @@ non-nil and point is located on the heading line.") map)) (defvar outline-font-lock-keywords - '( + `( ;; Highlight headings according to the level. (eval . (list (or (when outline-search-function - (lambda (limit) - (when-let* ((ret (funcall outline-search-function limit))) - ;; This is equivalent to adding ".*" in the regexp below. - (set-match-data (list (match-beginning 0) (pos-eol))) - ret))) + ,(lambda (limit) + (when-let* ((ret (funcall outline-search-function limit))) + ;; This is equivalent to adding ".*" in the regexp below. + (set-match-data + (list (match-beginning 0) + (save-excursion + (save-match-data + (re-search-forward + (concat ".*" outline-heading-end-regexp) nil t))))) + ret))) (concat "^\\(?:" outline-regexp "\\).*" outline-heading-end-regexp)) 0 '(if outline-minor-mode (if outline-minor-mode-highlight @@ -520,11 +525,16 @@ outline font-lock faces to those of major mode." (save-excursion (goto-char (point-min)) (let ((regexp (unless outline-search-function - (concat "^\\(?:" outline-regexp "\\).*$")))) + (concat "^\\(?:" outline-regexp "\\).*" outline-heading-end-regexp)))) (while (if outline-search-function (when-let* ((ret (funcall outline-search-function))) ;; This is equivalent to adding ".*" in the regexp above. - (set-match-data (list (match-beginning 0) (pos-eol))) + (set-match-data + (list (match-beginning 0) + (save-excursion + (save-match-data + (re-search-forward + (concat ".*" outline-heading-end-regexp) nil t))))) ret) (re-search-forward regexp nil t)) (let ((overlay (make-overlay (match-beginning 0) (match-end 0)))) -- 2.39.5