[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Old-style backquotes in cc-vars.el
From: |
Alan Mackenzie |
Subject: |
Re: Old-style backquotes in cc-vars.el |
Date: |
Sun, 7 Oct 2007 09:40:25 +0000 |
User-agent: |
Mutt/1.5.9i |
Hi, Stefan,
On Sat, Oct 06, 2007 at 06:27:00PM -0400, Stefan Monnier wrote:
> >> cc-vars uses a mix of old-style a new-style backquotes.
> > I don't think it does.
> The warning indicates that Emacs sees old-style backquotes, aqnd I'm
> pretty sure there are new style backquotes as well, so I'm pretty sure
> you're wrong.
OK. I've played around with things a bit since yesterday. In
particular, I've discovered the useful functions `read' and
`backquote-process'. I'm begining to think you're right and I'm wrong.
:-)
> > He wouldn't knowingly have put in old-style BQs as late as 2001.
> Maybe he did it knowingly: he's using nested backquotes and IIRC they
> didn't always work correctly in older versions of Emacs when used with
> new-style backquotes. Actually IIRC the problem was with nested
> new-style commas (where the second would not be recognized as
> new-style) which indeed do appear in that code.
Ah. OK. That's sounds like a sound reason for not upgrading that code
in cc-vars.el, if it's the case. (Or, for introducing yet another
difference between the cc-vars.el in Emacs and the standalone CC Mode,
which retains compatibility with older (X)Emacsen. :-( )
Probably I'll just scrap the old code and put in Thi's new version of the
function instead (after testing it thoroughly). It looks a lot cleaner
and easier to understand.
> > I'm not sure whether the rules for nested backquotes are clearly laid
> > out anywhere.
> The problem is not about nesting but about new-style vs old-style: the
> detailed rule about which is which is indeed only specified implicitly in
> the source code.
OK.
> > I think they're formally ambiguous (i.e., RTFS). I tried
> > replacing "`(` (radio" with both
> > "`( (` (radio" (explicitly putting in an "old-style" BQ)
> > , and
> > "`` (radio" (replacing the alleged "old-style" BQ with a
> > "new-style" one)
> > , but each of these generated results different from the original
> > (checked with macroexpand).
> You need to fix the ,(, part accordingly.
Ah! I'm still figuring out what ,(, actually means.
> Thien-Thi might be a good start.
Yes. He's already been very helpful.
> > Who is the bytecomp expert, again? Could we possibly ask him about the
> > semantics of `(` (radio ?
> It's (\` (\` (radio
I managed to get that late last night with (read "`(` (a b c))"). :-)
Thanks for all the help!
> Stefan
--
Alan.