Dear list members,
Welcome to another installment of an exciting Climacs progress report?
In the three months since the last progress report was posted, a lot
of work has been done on Climacs - many bugs have been fixed, a lot of
refactoring has been performed and a large amount of features, even
some pretty major ones, have been added. Some notable changes are:
* Highlighting of operators in Lisp syntax based on whether they
are special operators or macros, instead of just having a list
of symbols that should be highlighted (as Emacs does).
* A generic on-line help/documentation facility has been added to
ESA and integrated with Climacs - we now have basic
documentation commands like GNU Emacs (C-h f, C-h k, etc).
* Backup files are now version numbered.
* A Visible Region command has been added.
* Keyboard macros now support numeric arguments.
* A new command parser has been developed for ESA, with the
result that unsupplied arguments are now supported (through
*unsupplied-argument-marker*), making it possible to define
commands that take arguments (as opposed to just calling
`accept' in the body) and still have them be invokable through
gestures.
* A host of new search/replace commands: Multiple Query Replace,
Query Exchange, Multiple Query Replace From Buffer, String Search,
Reverse String Search, Word Search and Reverse Word Search.
* Incremental search has been improved, making it more comparable
to the one in GNU Emacs.
* The Lisp syntax has been drastically improved, it can now
indent many more forms than it used to, and it has SLIME-like
handling of in (in-package) forms. Of course, the major
addition is probably the merging of Swine (from CLIM-Desktop)
with the Lisp-syntax - Climacs, by itself, is now a reasonable
tool for hacking Common Lisp code. The Swine-parts have also
been improved since the merge, and has very intelligent
parameter hinting and intelligent completion of keywords for
keyword arguments (ie., when you symbol-complete at a point
where only a keyword symbol would make sense, the possible
completions will be chosen from among the relevant keyword
arguments.).
* There has been a lot of refactoring, for example implementation
of Taylor Campbell's proposal for a uniform motion/editing
function signature. Motion and editing commands can now be
found in the files motion.lisp and editing.lisp, where the bulk
of the functions are autogenerated (by macros) from basic
building blocks. Also, almost all commands have been moved to a
new CLIMACS-COMMANDS package, where they are implemented
utilizing functionality exported by other
packages. Syntaxaware-yet-not-GUI-oriented functions have been
moved to the new CLIMACS-CORE package, and the CLIMACS-BASE
package has had a fairly large amount of functions moved to
other packages.
* The main entry point(s) have been moved to a new CLIMACS
package, so Climacs can now be invoked by running
(climacs:climacs) instead of (climacs-gui:climacs). This is for
consistency with other CLIM applications (notably Beirc and
Gsharp). The GUI code itself still lives in CLIMACS-GUI.
* Documentation has been added to the user guide
(Doc/climacs-user.texi) for the new help and search/replace
commands. Personally, I (Troels Henriksen) was not aware of
this user guide until just recently, and thus had not updated
it with my own work. If you add, or change, new commands,
please consider adding them to this user guide - while it is
unlikely that anyone actually uses Climacs, and need this
guide, I think it is easier to keep it reasonably updated at
all times, than to rewrite a lot of it from scratch at some
point in the future.
* I also hadn't paid much notice to the test suites - I'm
probably the only one who has broken these tests, but if you
are mucking around with the stuff tested by these suites,
please run them before committing. :) They have recently been
updated to work with the major changes to Climacs.
Also, there has been a large amount of bugfixes and additions of minor
functionality. Climacs' design is now reasonably clean, with clear
boundaries between the various subsystems, which should make it easier
for newcomers to understand the code and make contributions. There is
no overarching plan that defines what will happen to Climacs next, but
personally, I have been looking at implementing a "group" facility
(like the one in Hemlock, but with more features) and improving the
non-Lisp syntaxes, almost all of which need drastic improvements
(speed-wise as well as functionality-wise). As always, integration
with other CLIM applications is an interesting idea, but work like
this is probably more suited for projects like CLIM-Desktop than
Climacs proper.
Climacs is still alive, and it is still a promising project.
--
\ Troels "Athas"
/\ Henriksen