Lisp has traditionally been a very interactive language. Yet Common Lisp
doesn't specify much with respect to interplay between language and
(user) environment. The specification does contain a very humble
Environment chapter that inclusion was supported by the standardization
commitee to signal the message that environmental interactivity is wished
for.
We intend to extend on that.
Editor-hints is supposed to become an interface between the Common Lisp
the language and its development environments.
Discussions take place at editor-hints-devel.
2009-10-10: released Named-Readtables 0.9.
* Named Readtables: (released 2009-10-10.)
Create a namespace for readtable analogously to that of packages.
`(IN-READTABLE :FOO)' are supposed to be recognized by editors, to
properly deal with different readtables when evaluating stuff.
* Indentation:
Add a facility to specify how symbols are supposed to be indented.
I.e. something like a DECLAIM-INDENTATION (being based upon a
PROCLAIM-INDENTATION function) which store indentation information in
some retrievable way. So that editors can rely on that information from
a running Lisp image.
This requires some research about the indentation specification schemes
that different Lisp systems (Lisp machines, Symbolics' Genera, GNU
Emacs, Lispworks, AllegroCL) use. And then define a practical
denominator.
* Documentation retrieval:
Add the facility to support project-specific documentation retrieval on
a per symbol basis.
It's common that editors provide the possibility to quickly visit the
respective CLHS site for a symbol. But this doesn't work on symbols not
defined by ANSI.
* Pretty docstrings:
Add support for using markup in docstrings.
Also detach too elaborate docstrings from the actual function/macro/etc
definition.
* Source locations:
First class source locations; for instance imagine a
(DEFINE-ELABORATE-DOCUMENTATION FOO ...)
macro that registers documentation (in CLHS style, for example) to the
symbol FOO, and which can be retrieved via
(DOCUMENTATION 'FOO 'ELABORATE-DOCUMENTATION)
Now, an editor may also want to provide M-.ness for this stuff, i.e. to
enable the user to easily jump to the DEFINE-ELABORATE-DOCUMENTATION
definition. For that to work, the above macro should expand to
something that registers its source location into a a weak hash-table
from symbols to source locations, such that the editor can consult that
hash-table by some specified interface.
* Querying users for input
Providing functions to query the user for some kind of input. These
functions are supposed to be used for USE-VALUE restarts, for instance.
And they're supposed to be implemented by editors in some fancy way
(than just using *QUERY-IO* directly.)
Back to Common-lisp.net.