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:

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

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

This is a list of screenshots showing various Climacs features in action
Description Image
Images being moved around like any other buffer object A screenshot thumbnail of Climacs showing
                       images in the buffer
Symbol-completion in Lisp syntax mode A screenshot thumbnail of Climacs showing
                       possible completions for a Lisp symbol
A Common Lisp source file with syntax-highlighting and parenthesis-matching A screenshot thumbnail of Climacs showing a
                     Lisp source file with syntax highlighting and
                     parenthesis matching
A file open without syntax-highlighting A screenshot thumbnail of Climacs showing
                       a file without syntax highlighting
Climacs just after startup A screenshot thumbnail of a freshly
                       started Climacs

Old screenshots

The following screenshots are somewhat old, and may not represent the current state of Climacs.

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:

We ARE however interested in the following items:

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

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: