[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: c-macro-expand isn't part of CC Mode
From: |
Martin Stjernholm |
Subject: |
Re: c-macro-expand isn't part of CC Mode |
Date: |
Tue, 10 May 2005 23:56:12 +0200 |
User-agent: |
Gnus/5.090016 (Oort Gnus v0.16) Emacs/20.7 (gnu/linux) |
Nick Roberts <address@hidden> wrote:
> Within Emacs CVS, I think both cc-mode.el and cmacexp.el are part of
> Emacs.
Maybe so, but it's more relevant to note what the respective
maintainers are inclined to support. If the CC Mode maintainers aren't
prepared to support a certain feature then it's better to not add that
feature to the cc-*.el files. That avoids confusion with bug reports
sent to the wrong places, bitrot and possible lossage in merges.
In this particular case the added feature was outside the scope of CC
Mode, so it's good that it was taken out again (although I'm sure the
feature in itself is very neat). The scope of CC Mode isn't spelled
out anywhere, so I don't blame anyone for missing it. Anyway, it is
something like this:
o Provide functionality for syntax parsing in the supported
languages.
o Implement basic major mode operations for the supported languages,
meaning buffer setup, movement/mark commands and miscellaneous
simple tools for handling language constructs (e.g. aligning the
backslashes in cpp macros).
o Implement syntactically sensitive indentation and font locking.
Some noteworthy things that are outside the scope:
o Tracking of symbols, e.g. for providing tooltips containing symbol
docs and type info etc, or for locating symbol definitions.
o Stuff that requires knowledge of the compilation environment, e.g.
pulling in include files, expand macros, tracking cross file
references.
o Templates for source constructs, e.g. to quickly insert a more or
less complete class or method.
These are not left out just because I personally don't consider them
nice features (I do), but because implementing those things well is
nontrivial and requires quite a bit of dedicated effort. I, and I
probably speak for Alan Mackenzie as well here, have enough with
getting the things inside the current scope to work as well as we
would like. Also, there's no particular reason why stuff like that
can't be in separate packages.