Subject: bug#74156: 29.4; Incorrect face with outline-minor-mode-highlight in lisp-mode

From: Andreas Matthias <[email-masked]>
Date: Fri, 1 Nov 2024 14:11:54 +0100

Take this example Elisp file:

;;; xxx -- OK: face is outline-1
;;;; xxx -- OK: face is outline-2
(defun test ()) ; WRONG: face is outline-8

;; Local Variables:
;; outline-minor-mode-highlight: override
;; eval: (outline-minor-mode 1)
;; End:

After loading this file into Emacs you will see that the function definition
is displayed incorrectly in face outline-8.

I guess this is due to the definition of outline-regexp in lisp-mode.el:

";;;;* [^
\t\n]\\|(\\|\\(^;;;###\\(\\([-[:alnum:]]+?\\)-\\)?\\(autoload\\)\\)"

Notice the opening parenthesis in the regular expression that causes
the function definition to be recognized as an outline heading.

I removed the opening parenthesis and now the face of the function
definition
is correct. This is fine for me. But note that you loose the ability to move
to top-level expressions, like this function definition, with
(outline-next-visible-heading) and (outline-previous-visible-heading).

Andreas