From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: David Kastrup Newsgroups: gmane.emacs.devel Subject: Re: lisp-outline-level. Date: Sun, 13 Feb 2005 18:37:22 +0100 Message-ID: References: <87ekfke9hk.fsf@xs4all.nl> <873bw0e6e9.fsf@xs4all.nl> NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1108317011 16266 80.91.229.2 (13 Feb 2005 17:50:11 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sun, 13 Feb 2005 17:50:11 +0000 (UTC) Cc: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Feb 13 18:50:11 2005 Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1D0Nsk-0001A9-4J for ged-emacs-devel@m.gmane.org; Sun, 13 Feb 2005 18:50:06 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1D0O87-0006yg-M9 for ged-emacs-devel@m.gmane.org; Sun, 13 Feb 2005 13:05:59 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1D0O0W-0003Kv-6e for emacs-devel@gnu.org; Sun, 13 Feb 2005 12:58:08 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1D0O0F-0003D9-D8 for emacs-devel@gnu.org; Sun, 13 Feb 2005 12:57:52 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1D0O0F-0003Av-0T for emacs-devel@gnu.org; Sun, 13 Feb 2005 12:57:51 -0500 Original-Received: from [199.232.76.164] (helo=fencepost.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1D0NgP-0004p4-68 for emacs-devel@gnu.org; Sun, 13 Feb 2005 12:37:21 -0500 Original-Received: from localhost ([127.0.0.1] helo=lola.goethe.zz) by fencepost.gnu.org with esmtp (Exim 4.34) id 1D0NcU-0006ox-Gy; Sun, 13 Feb 2005 12:33:19 -0500 Original-To: Lute Kamstra In-Reply-To: <873bw0e6e9.fsf@xs4all.nl> (Lute Kamstra's message of "Sun, 13 Feb 2005 18:06:38 +0100") User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org X-MailScanner-To: ged-emacs-devel@m.gmane.org Xref: main.gmane.org gmane.emacs.devel:33347 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:33347 Lute Kamstra writes: > David Kastrup writes: > >> Lute Kamstra writes: >> >>> In (Emacs) Lisp mode, outline-regexp is ";;;;* [^ \t\n]\\|(" and >>> outline-level is lisp-outline-level: >>> >>> (defun lisp-outline-level () >>> "Lisp mode `outline-level' function." >>> (if (looking-at "(\\|;;;###autoload") >>> 1000 >>> (looking-at outline-regexp) >>> (- (match-end 0) (match-beginning 0)))) >>> >>> This is a bit strange as outline-regexp doesn't match >>> ";;;###autoload". >> >> Why is that strange? outline-regexp is not even consulted when >> ;###autoload is found, so I don't see how it would come into play >> here. >> >>> Shall I commit the patch below? >> >>> *** lisp/emacs-lisp/lisp-mode.el 1 Feb 2005 15:48:50 -0000 1.171 >>> --- lisp/emacs-lisp/lisp-mode.el 13 Feb 2005 11:03:02 -0000 >>> *************** >>> *** 212,223 **** >>> >>> (defun lisp-outline-level () >>> "Lisp mode `outline-level' function." >>> ! (if (looking-at "(\\|;;;###autoload") >>> 1000 >>> - (looking-at outline-regexp) >>> (- (match-end 0) (match-beginning 0)))) >>> >>> - >>> --- 212,221 ---- >>> >>> (defun lisp-outline-level () >>> "Lisp mode `outline-level' function." >>> ! (if (eq (following-char) ?\() >>> 1000 >>> (- (match-end 0) (match-beginning 0)))) >> >> The patch is completely nonsensical. It returns rubbish in almost all >> cases since it is the "looking-at" that established match-end and >> match-beginning in the first place. > > The variables outline-regexp and outline-level are used by Outline > minor mode. Did you take a look at their docstrings? Outline minor > mode searches for matches of outline-regexp and at each match the > function in outline-level is called to determine the nesting level: > > ,----[ C-h v outline-level RET ] > | outline-level's value is outline-level > | > | *Function of no args to compute a header's nesting level in an outline. > | It can assume point is at the beginning of a header line and that the match > | data reflects the `outline-regexp'. > | > | Defined in `outline'. > `---- > > Does my patch make more sense now? Ok, I did not realize that those functions were essentially hook functions, sorry. However, I find that within a Lisp buffer I have outline-regexp's value is ";;;;* [^ \n]\\|(" Local in buffer loaddefs.el; global value is "[*\f]+" *Regular expression to match the beginning of a heading. Any line whose beginning matches this regexp is considered to start a heading. Note that Outline mode only checks this regexp at the start of a line, so the regexp need not (and usually does not) start with `^'. The recommended way to set this is with a Local Variables: list in the file it applies to. See also `outline-heading-end-regexp'. You can customize this variable. Defined in `outline'. [back] and this just barely manages to avoid matching ;;;###autoload. I am not sure whether this really is intentional. Especially in light of the lisp-outline-level definition. So while I have no clue about the matter at hand, I would just want to suggest that it might be possible from the look of the previous code that outline-regexp was intended to also match ;;;###autoload, or at least that it was considered a valid possibility for a user customization of outline-regexp in Lisp mode. In either case it would not be wrong to keep the check. -- David Kastrup, Kriemhildstr. 15, 44793 Bochum