Introduction
Welcome to the Climacs project, an attempt to create a fully free Common Lisp-based editor that has good integration with other CLIM-based applications. Climacs attempts to improve on the concepts found in other free Common Lisp-based emacsen,, such as Goatee (the original editor component of McCLIM) or Portable Hemlock. Many design choices of Climacs are based more on the editor of the Genera operating system, Zmacs, and the other original Lisp emacsen, such as Hemlock, than on GNU Emacs. Climacs is free software, released under the LGPL (version 2 or, at your option, any later version).
Climacs contributes a few important things that are not found neither in Goatee nor in Portable Hemlock:
- A buffer protocol with a potentially very efficient implementation based on flexichains;
- An "undo" protocol that is both general and powerful and that works on top of the buffer protocol;
- An implementation of the association between multi-keystroke gestures and commands using nested CLIM command tables;
- The possibility of having the buffer contain arbitrary objects. These will be rendered by the CLIM `present' function, so that they become clickable in the right context;
- Syntax highlighting in the form of incremental parsers, especially for Common Lisp code.
Climacs is not yet ready for prime time as a complete replacement for GNU Emacs. Climacs is quite capable as a Common Lisp editor, though. If Swank is available (or loadable through ASDF) when Climacs is loaded, Climacs will automatically use the Swank functions to provide useful assistance when you are writing Common Lisp code (symbol completion, hyperlinking of compiler notes to source code locations, parameter hinting, definition finding, etc). For better integration of Climacs into other CLIM applications, take a look at the CLIM-desktop-project.
Patches for Climacs are very welcome. There is currently a lot of low-hanging fruit in the form of Emacs commands and functions that need to be reimplemented for Climacs. Knowledge of the CLIM command system and being able to read the existing command definitions is all that is required. See How to contribute below.
News
-
May 20, 2008
A new ASDF-Installable tarball of Climacs has been uploaded to Cliki. It should work well with the recently released 0.9.6 version of McCLIM and contain a lot of improvements over the previous release.
-
January 12, 2008
The current (as of this writing) status of Climacs is as follows: Due to recent improvements and refactorings in Drei (in particular, views and the new redisplay engine), more bugs than usual may crop up in Climacs. On the other hand, performance is better than ever, and the design is approaching stability. Syntax highlighting is currently only enabled for Lisp, Java and C syntax.
-
Older news
Installation
Installing Climacs is fairly easy (the hardest part is tracking down the dependencies), please see the INSTALL file in the CVS archive. Also, a CVS dump of Climacs from 2006/05/04 is installable via ASDF-install (see the Cliki-page). It is recommended to use the version in CVS, however. Once loaded, Climacs is started by typing (climacs:climacs) at the Lisp REPL.
Climacs depends on a CVS version of McCLIM, Flexichain, and, conditionally, Swank (part of SLIME). Climacs will load and work properly without Swank, but its ability to help with the editing of Lisp code will be greatly diminished.
Documentation
There is some incomplete Texinfo-based user documentation in the Climacs distribution. See the file Doc/climacs-user.texi. Also, some of the usual on-line Emacs help commands (such as C-h f, C-h k and C-h w) work in Climacs.
For developer-documentation, see Publications below, as well as the file Doc/climacs-internals.texi in the distribution. Additionally, the chapter in the McCLIM manual about Drei also contains useful information.
These manuals may or may not be slightly out of date. Note that Climacs is an Emacs-like editor, and a lot of keybindings are the same, so if you are familiar with Emacs, you should be able to reuse most of your knowledge. One thing that is different, though, is that commands look "Like This" and not "like-this", that is, they are english words instead of Lisp symbols.
Screen Shots
Old screenshots
The following screenshots are somewhat old, and may not represent the current state of Climacs.
- A demonstration of Swine's capabilities for looking up arglists and the right-click menu for symbols in Lisp syntax.
- A buffer in lisp syntax (LR-parser-based);
- Using the parse tree for live preview in the tablature editor;
- Excessively-coloured Prolog, from a complete (Earley) parse;
- The syntax facility showing clickable URLs
- The syntax facility showing Texinfo command highlighting
How to contribute
Climacs is a full CLIM application, and should take advantage of CLIM as much as possible, in particular for completion, presentations, etc. Climacs employs a number of fairly well-defined protocols and internal API's, some of which are documented in the Climacs Internals manual (see Documentation) and others that are described by comments in the source code.
It is hard to resist the temptation to re-implement functionality that is currently in Emacs but that really belongs either in CLIM or in separate CLIM applications. In particular, we are not interested in:
- Mail and News readers (see mel, Hermes and Stamp);
- A debugger (see the debugger pane of McCLIM);
- An inspector (see the inspector pane of McCLIM, affectionately known as Clouseau);
- Dired, Bufed, Shell mode, Calendar and other functionality that is best done as a CLIM pane or a separate CLIM application.
We ARE however interested in the following items:
- A grammar checker based on an incremental parser for natural languages
- Incremental parsers for programming languages other than Common Lisp
- Indentation warnings for Common Lisp
- Additional commands for editing text.
It would also be nice to have someone flesh out the documentation.
Additionally, Climacs is based on a number of other libraries, and improving them may help Climacs.
McCLIM
Climacs is a CLIM application, and the favoured CLIM implementation is the free McCLIM. Hence, any improvements of McCLIM will indirectly benefit Climacs. Most of the functionality Climacs needs from CLIM is already provided by McCLIM, but a flexible interface for talking to other programs will be necessary if we want Climacs to talk to, for example, debuggers and Listeners.
ESA
Climacs makes use of a CLIM library, called ESA, that provides an Emacs-style UI, rather than the normal CLIM UI. ESA supplies a new command loop, and enables support for chained gestures (such as C-x C-f) and macros. Since improvements to ESA will benefit other ESA-using CLIM applications (such as Gsharp, a score editor), any feature that can be moved to ESA probably should. Conversely, improvements to ESA, for example in the on-line help system, will directly benefit Climacs.
Drei
Climacs uses an editor substrate provided by McCLIM, called Drei. Drei was based on earlier Climacs code, but has been refactored to function as a general editor substrate, used, for example, to implement the text-editor gadgets and input-editor of McCLIM. This means that many possible improvements to Climacs will have to be done by enhancing Drei. Also, this means that the Drei documentation covers parts of Climacs, and should be the primary source of documentation for the protocols used in Climacs. Most typical editor commands one might want to add to Climacs probably belong in Drei proper, so that they can be generally used everywhere, and not just in the Climacs application itself.
Mailing Lists
-
climacs-devel
for developers -
climacs-cvs
CVS log feed. -
climacs-announce
for announcements.
CVS
The code for Climacs is being stored in CVS, and can be retrieved with the following commands.
Project members
export CVS_RSH=ssh cvs -z3 -d :ext:<username>@common-lisp.net:/project/climacs/cvsroot co climacs
Others via anonymous CVS
cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/climacs/cvsroot co climacs
Online via the browser-based ViewCVS
http://common-lisp.net/cgi-bin/viewcvs.cgi/?root=climacs
Issue tracking
It is now possible to report issues and defects related to Climacs using the Launchpad site created for that purpose.
Publications
Some Climacs-related publications. Note that not all of these necessarily represent the current state of Climacs protocols and implementation:
- Christophe Rhodes and David Lewis, An editor for lute tablature (accepted for CMMR, Pisa 2005)
- Christophe Rhodes, Robert Strandh and Brian Mastenbrook, Syntax analysis in the Climacs Text Editor (ILC, Stanford, 2005)
- Robert Strandh, Matthieu Villeneuve and Timothy Moore, Flexichain: An editable sequence and its gap-buffer implementation (European Lisp and Scheme Workshop, Oslo, 2004)