From: Juri Linkov Date: Tue, 18 May 2021 20:35:57 +0000 (+0300) Subject: * lisp/emacs-lisp/lisp-mode.el (lisp-outline-level): Fix imprecise numbers. X-Git-Tag: emacs-28.0.90~2422 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=502e3ce614ce9cec60a9f8fb9b6beb216131e362;p=emacs.git * lisp/emacs-lisp/lisp-mode.el (lisp-outline-level): Fix imprecise numbers. (lisp-outline-level): Return right levels starting from 1 instead of 5. Suggested by Howard Melman in bug#46878. --- diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 67b75460941..59325d647d8 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -682,10 +682,16 @@ font-lock keywords will not be case sensitive." (defun lisp-outline-level () "Lisp mode `outline-level' function." + ;; Expects outline-regexp is ";;;\\(;* [^ \t\n]\\|###autoload\\)\\|(" + ;; and point is at the beginning of a matching line. (let ((len (- (match-end 0) (match-beginning 0)))) - (if (looking-at "(\\|;;;###autoload") - 1000 - len))) + (cond ((looking-at "(\\|;;;###autoload") + 1000) + ((looking-at ";;\\(;+\\) ") + (- (match-end 1) (match-beginning 1))) + ;; Above should match everything but just in case. + (t + len)))) (defun lisp-current-defun-name () "Return the name of the defun at point, or nil."