From: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: martin rudalics <rudalics@gmx.at>,
Chong Yidong <cyd@stupidchicken.com>,
Richard Stallman <rms@gnu.org>,
emacs-devel@gnu.org
Subject: Re: Mysterious fontification/C++ context issue - Patch for beginning-of-defun-raw.
Date: Sun, 17 Dec 2006 19:04:06 -0500 [thread overview]
Message-ID: <jwvirganlzw.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <20061217122130.GA2643@muc.de> (Alan Mackenzie's message of "17 Dec 2006 12\:10\:41 +0100\, Sun\, 17 Dec 2006 12\:21\:30 +0000")
>> >> I still haven't seen any explanation for why this code needs to be
>> >> in beginning-of-defun-raw.
> This isn't true, for any normal value of "needs". I think it's more
> accurate to say that you don't accept that the explanation that has been
> given is a strong enough justification for the extra code in b-d-d-raw,
> which is fair enough.
By "need" I meant "technical need" rather than a philosophical need to make
something work according to some interpretation of the doc.
So you seem to agree that it's not "needed" in the technical sense.
Good.
> No, it's deeper than that. It's to make the function match its
> documentation (see "Left Margin Paren" in the Emacs manual). It's to
> make things work consistently when opic0ids is nil. Everybody in this
> discussion whose native language is English agrees on this point. ;-)
I think it's a bit misleading: your original motivation was to get your code
working in cc-mode, not to fit the code to the doc.
> (i) The meaning of "beginning-of-defun" in a source file is, and always
> has been, a paren at top level. This proved too slow in early versions
> of Emacs, and so the "column 0" heuristic was adopted. This has been
> documented in the Emacs manual since time immemorial; see page "Left
> Margin Paren" in the Emacs 21 manual (i.e. before I made any changes to
> it. ;-)
Other than the last historical paragraph, the emacs21 node only talks about
the fact that open-parens-in-column-0 should only be used when they mean
a beginning-of-defun.
I.e. open-paren-in-column-0-is-defun-start means "if you see a paren in
column-0, it's a defun" and not "all defuns should start at column-0".
So setting it to nil means "a paren in column-0 may be something else than
a defun" rather than "defuns may start in any column".
Furthermore beginning-of-defun is a command bound to C-M-a and thus
available in every major mode, so its meaning can't be nearly as limited as
you make it out to be since in many programming languages there is no
open-paren at the beginning of a defun.
> (iii) This column 0 heuristic is just that - a heuristic, not a
> definition of b-o-d.
Agreed. Which is why I'd agree that b-o-d could be made to check
syntax-ppss *after finding a defun-like thingy* to check that it's not
inside a comment or string.
If you look at the current definition of b-o-d, you shoul dbe shocked at the
lack of consistency in its behavior: if defun-prompt-regexp is nil and
open-paren-in-column-0-is-defun-start is nil (i.e. in the new case you
added), then it works at the level of the parse tree, whereas for every
other setting it only looks at the level of the lex'd tokens (without paying
attention to any parsing state). There's clearly something wrong there.
> (iv) The variable open-paren-in-column-0-is-defun-start was introduced
> in the murky past, and there doesn't seem to be a record of why. I
> can't find any discussion of it in the emacs-devel archives. However,
> it's doc-string states: "Non-nil means an open paren in column 0 denotes
> the start of a defun".
And the contrapositive of "Non-nil means an open paren in column 0 denotes
the start of a defun" is "nil means that an open paren in column 0 does not
necessarily denote the start of a defun".
> Otherwise put, "non-nil means that the column 0 heuristic applies".
> (v) By pure logic, this MUST extend to "nil means the column 0 heuristic
> does NOT apply". Otherwise the variable would be meaningless.
Applying pure logic after adding a fuzzy (natural language) interpretation
doesn't seem very appealing to me.
> Without that code, when opic0ids is nil, beginning-of-defun doesn't do
> the right thing: it finds a column 0 parenthesis rather than one at top
> level. That has been the state up till now, and is _very_ confusing for
> Elisp hackers.
Then let's fix it right for all uses (including those using
defun-prompt-regexp and beginning-of-defun-function) by checking syntax-ppss
after the fact and retrying if we find out we've been confused by some
defun-looking comment or string.
Stefan
next prev parent reply other threads:[~2006-12-18 0:04 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87y7po2e9b.fsf@leeloo.anubex.internal>
[not found] ` <45741FBE.3000107@swipnet.se>
[not found] ` <45742464.1090504@gmx.at>
2006-12-04 21:17 ` Mysterious fontification/C++ context issue Alan Mackenzie
2006-12-06 0:47 ` Richard Stallman
2006-12-06 9:04 ` martin rudalics
2006-12-06 12:22 ` Kim F. Storm
2006-12-06 16:31 ` Chong Yidong
2006-12-07 4:59 ` Richard Stallman
2006-12-09 17:46 ` Chong Yidong
2006-12-09 20:09 ` Stefan Monnier
2006-12-11 1:05 ` Richard Stallman
2006-12-11 2:27 ` Stefan Monnier
2006-12-11 4:38 ` Stefan Monnier
2006-12-12 16:24 ` Chong Yidong
2006-12-12 17:10 ` Stefan Monnier
2006-12-10 4:24 ` Richard Stallman
2006-12-10 0:35 ` Alan Mackenzie
2006-12-10 1:11 ` Chong Yidong
2006-12-10 9:12 ` Alan Mackenzie
2006-12-10 12:46 ` David Kastrup
2006-12-10 14:50 ` Alan Mackenzie
2006-12-10 15:13 ` David Kastrup
2006-12-10 20:30 ` Chong Yidong
2006-12-13 21:29 ` Mysterious fontification/C++ context issue - Patch for beginning-of-defun-raw Alan Mackenzie
2006-12-14 1:02 ` Chong Yidong
2006-12-14 7:36 ` Alan Mackenzie
2006-12-14 10:47 ` martin rudalics
2006-12-14 18:26 ` Alan Mackenzie
2006-12-14 18:53 ` David Kastrup
2006-12-14 20:21 ` Chong Yidong
2006-12-14 20:35 ` Chong Yidong
2006-12-14 22:18 ` Alan Mackenzie
2006-12-14 22:51 ` Chong Yidong
2006-12-15 0:53 ` David Kastrup
2006-12-15 10:35 ` Johan Bockgård
2006-12-14 21:53 ` What `opic0ids' really is [was: Mysterious fontification/C++ context issue - Patch for beginning-of-defun-raw.] Stuart D. Herring
2006-12-15 7:32 ` Mysterious fontification/C++ context issue - Patch for beginning-of-defun-raw martin rudalics
2006-12-15 19:22 ` Alan Mackenzie
2006-12-15 22:20 ` David Kastrup
2006-12-16 10:17 ` martin rudalics
2006-12-17 11:44 ` Alan Mackenzie
2006-12-17 12:02 ` David Kastrup
2006-12-17 12:08 ` Alan Mackenzie
2006-12-17 12:14 ` David Kastrup
2006-12-17 12:26 ` Alan Mackenzie
2006-12-17 12:51 ` David Kastrup
2006-12-17 17:28 ` martin rudalics
2006-12-17 18:36 ` Mysterious fontification/C++ context issue - Patch for c-basic-common-init Alan Mackenzie
2006-12-17 18:45 ` Chong Yidong
2006-12-17 22:18 ` Alan Mackenzie
2006-12-17 22:59 ` Chong Yidong
2006-12-18 0:06 ` Mysterious fontification/C++ context issue - Patch for beginning-of-defun-raw Stefan Monnier
2006-12-15 23:24 ` Stefan Monnier
2006-12-16 10:17 ` martin rudalics
2006-12-16 18:14 ` Chong Yidong
2006-12-16 18:27 ` martin rudalics
2006-12-16 19:00 ` martin rudalics
2006-12-16 19:33 ` Chong Yidong
2006-12-16 19:59 ` martin rudalics
2006-12-16 20:10 ` Chong Yidong
2006-12-16 21:26 ` Chong Yidong
2006-12-16 22:43 ` martin rudalics
2006-12-16 23:30 ` Stefan Monnier
2006-12-16 23:40 ` martin rudalics
2006-12-17 0:04 ` Stefan Monnier
2006-12-17 4:02 ` Chong Yidong
2006-12-17 10:32 ` martin rudalics
2006-12-17 10:26 ` martin rudalics
2006-12-17 10:59 ` David Kastrup
2006-12-17 23:23 ` Stefan Monnier
2006-12-17 11:10 ` Alan Mackenzie
2006-12-17 12:01 ` David Kastrup
2006-12-18 0:04 ` Stefan Monnier [this message]
2006-12-16 22:11 ` martin rudalics
2006-12-16 23:29 ` Stefan Monnier
2006-12-16 23:37 ` martin rudalics
2006-12-16 20:22 ` David Kastrup
2006-12-16 22:21 ` martin rudalics
2006-12-14 17:29 ` Chong Yidong
2006-12-14 18:56 ` David Kastrup
2006-12-14 22:57 ` Alan Mackenzie
2006-12-15 22:56 ` Stefan Monnier
2006-12-15 23:03 ` David Kastrup
2006-12-14 10:45 ` martin rudalics
2006-12-14 18:29 ` Alan Mackenzie
2006-12-15 22:49 ` Stefan Monnier
2006-12-10 21:39 ` Mysterious fontification/C++ context issue Stefan Monnier
2006-12-10 23:14 ` Kim F. Storm
2006-12-14 7:43 ` Alan Mackenzie
2006-12-14 7:51 ` Miles Bader
2006-12-15 23:36 ` Stefan Monnier
2006-12-10 9:18 ` martin rudalics
2006-12-11 1:23 ` Stefan Monnier
2006-12-11 7:23 ` martin rudalics
2006-12-11 7:36 ` Stefan Monnier
2006-12-11 8:32 ` martin rudalics
2006-12-11 16:30 ` Stefan Monnier
2006-12-11 1:05 ` Stefan Monnier
2006-12-11 1:06 ` Richard Stallman
2006-12-06 18:44 ` Richard Stallman
2006-12-06 22:38 ` martin rudalics
2006-12-08 5:05 ` Richard Stallman
2006-12-09 9:42 ` martin rudalics
2006-12-10 4:24 ` Richard Stallman
2006-12-10 8:38 ` martin rudalics
2006-12-10 10:56 ` Alan Mackenzie
2006-12-10 11:58 ` martin rudalics
2006-12-10 14:30 ` Slawomir Nowaczyk
2006-12-11 1:29 ` Stefan Monnier
2006-12-06 20:52 ` Alan Mackenzie
2006-12-06 22:38 ` martin rudalics
2006-12-07 5:07 ` Stefan Monnier
2006-12-15 5:03 Mysterious fontification/C++ context issue - Patch for beginning-of-defun-raw Richard Stallman
2006-12-15 6:31 ` Sean O'Rourke
2006-12-15 16:08 ` Chong Yidong
2006-12-15 16:16 ` Sean O'Rourke
2006-12-15 16:44 ` Chong Yidong
2006-12-15 20:46 ` Stuart D. Herring
2006-12-15 21:24 ` Richard Stallman
2006-12-15 22:31 ` Sean O'Rourke
2006-12-15 16:57 ` Chong Yidong
2006-12-15 23:33 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=jwvirganlzw.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=cyd@stupidchicken.com \
--cc=emacs-devel@gnu.org \
--cc=rms@gnu.org \
--cc=rudalics@gmx.at \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.