From: Alan Mackenzie <acm@muc.de>
Cc: emacs-devel@gnu.org
Subject: Re: Fight: font-lock.el 1.289 vs. cc-defs.el
Date: Mon, 30 Jan 2006 14:01:44 +0000 (GMT) [thread overview]
Message-ID: <Pine.LNX.3.96.1060130122504.624F-100000@acm.acm> (raw)
In-Reply-To: <87fyn62vre.fsf-monnier+emacs@gnu.org>
On Sun, 29 Jan 2006, Stefan Monnier wrote:
>> CC Mode calls (font-lock-compile-keywords "\\<\\>") at initialisation,
>> to test for a bug in middle aged XEmacsen which splatted
>> font-lock-keywords. The new check in V1.289 causes CC Mode to bail
>> out with an error.
>I must admit I have very little sympathy for ugly code that tries to
>work around old bugs that've been fixed a long time ago.
The alternative is CC Mode not working properly (or at all) in some
versions. For example, but for a similar test and correction, it would
fail in Emacs 21.[1234] because of a bug in regexp-opt-depth. These old
bugs in the XEmacs and Emacs cores have only been fixed in recent
versions, not in all the versions currently in the field. It's a core
objective of CC Mode to be compatible with all recent versions of both
Emacsen.
>> Andreas Schwab patched a work-around into cc-defs.el V1.38, placing a
>> condition-case around the call. This seems suboptimal: If some error
>> occurs whilst calling some Font Lock function, we definitely want to
>> know about it.
>> A better(??) kludge would be for cc-defs to bind font-lock-set-defaults
>> to non-nil before calling (font-lock-compile-keywords "\\<\\>"), but this
>> is really ghastly coding practise.
>So a better/real fix would be to remove this workaround altogether and
>if someone complains, tell him to fix it himself or upgrade his old
>XEmacs or stick to an old cc-mode. Plenty of choice left.
There is indeed! There's vim, Eclipse, CodeWrite, MS Visual Studio, ....
Actually, thinking about it, it would be better to test explicitly for
XEmacs in this case. That's what I'll do.
>> I'm asking that this change to font-lock.el be reconsidered, though I
>> admit I don't know the problem it fixes.
>It help(s|ed) detect faulty code, more precisely code that used
>font-lock code without first setting up font-lock variables. I guess
>with the recent changes that force font-lock-fontify-buffer and
>font-lock-fontify-region to setup the variables, this is not needed any
>more, since those were the main culprits.
OK. Presumably that code has since been corrected.
But as a general point, CC Mode (and presumably other packages) is going
to be calling random functions within the (X)Emacs core to detect the
inevitable buggy versions. There is a danger that other packages also
test for this bug in font-lock-compile-keywords, causing these packages
to fail.
>> Might a better solution be (make-variable-buffer-local
>> 'font-lock-keywords)?
>That would only hide the problem. Calling font-lock-set-defaults does a lot
>more than make this variable local to a buffer.
>> That variable surely _cannot_ have a meaningful global value - or can
>> it?
>Indeed.
> Stefan
--
Alan.
next prev parent reply other threads:[~2006-01-30 14:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-29 17:28 Fight: font-lock.el 1.289 vs. cc-defs.el Alan Mackenzie
2006-01-30 4:33 ` Stefan Monnier
2006-01-30 14:01 ` Alan Mackenzie [this message]
2006-01-30 18:46 ` Richard M. Stallman
2006-01-31 14:13 ` Alan Mackenzie
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=Pine.LNX.3.96.1060130122504.624F-100000@acm.acm \
--to=acm@muc.de \
--cc=emacs-devel@gnu.org \
/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.