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.