all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* CC Mode - syntactical can of worms.
@ 2008-01-31 11:45 Alan Mackenzie
  2008-01-31 12:53 ` Andreas Schwab
  2008-01-31 15:00 ` Stefan Monnier
  0 siblings, 2 replies; 5+ messages in thread
From: Alan Mackenzie @ 2008-01-31 11:45 UTC (permalink / raw)
  To: emacs-devel, bug-cc-mode

Hi, Emacs and CC Mode!

Following up from: [orium69@gmail.com: Bug in emacs 22.1.1 (cosmetic
bug)].

This bug was in C Mode, with the following source line:

    #warning for isn't a keyword here.

This fouls up the fontification, because the syntactic fontification
recognises the apostrophe as a string opener.  It can get pretty bad -
here is a syntactically correct C function:

1   #warning for isn't a keyword here. (
2   //#warning for isnt a keyword here.
3   void foo (bar)
4   {
5   #error Brace yourself! }
6       printf ("Hello, world!\n") ; /* the famous one liner! */
7   }

The apostrophe in L1 fouls up the entire fontification.  The pseudo
brace in L5 spuriously matches the real one on L4.  The brace on L7
mismatches the pseudo parenthesis on L1.

The root of the problem is that CPP lines are allowed to mingle
syntactically with ordinary lines.  Somehow, CPP lines need to be
"commented out" from the Emacs's syntactic routines.  However, turning
# and EOL into another pair of comment delimiters is NOT the Right
Thing.

I think I need a hook function somewhere (after-change, but
before-font-lock, maybe) which should analyse the innards of CPP lines
for unbalanced string quotes or unbalanced parens/braces/brackets, or
the like.

It feels like another syntax category is wanted for such things, a kind
of "open-enclosure / close-enclosure (or close-enopener? ;-)" pair,
whose purpose is syntactically to isolate its contents from the rest of
the file.

Would anybody like to give me any ideas here?

-- 
Alan Mackenzie (Nuremberg, Germany).

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-01-31 22:05 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-31 11:45 CC Mode - syntactical can of worms Alan Mackenzie
2008-01-31 12:53 ` Andreas Schwab
2008-01-31 15:00 ` Stefan Monnier
2008-01-31 22:05   ` Alan Mackenzie
2008-01-31 22:05     ` Lennart Borgman (gmail)

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.