[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Announcing Versor: Versatile Cursors

From: John Sturdy
Subject: Announcing Versor: Versatile Cursors
Date: 11 May 2006 08:01:12 -0700
User-agent: G2/0.2

GNUemacs has many ways of navigating text buffers: words, expressions,
sentences, functions, paragraphs... but they can be much harder to type
than the ordinary cursor movements. Versor (Versatile Cursors),
available at (the front page is
similar to this announcement, but with more links), makes them more
accessible, mapping pairs of these movement dimensions onto the cursor
keys, and using the cursor keys themselves, with a modifier, to
navigate around the space of possible movement types. It also provides
an extended cursor, in the form of a whole unit of whatever your
selected movement dimension is, and makes this the unit of copying,
deletion or other changes, as well as of movement.

A few more types of movement, not previously available, are also
implemented, such as a ``nested blocks'' facility (for HTML tags etc)
with movements equivalent to forward-sexp, down-list, backward-up-list,
etc; and movements over tabular markup data for HTML, CSV, TeX and

In addition to this, it includes a high-level editing package, Languide
(Language-Guided editing) that provides such complex but stereotyped
operations as:

    * Converting a code block into a function and putting a call to it
in place of the original code block (automatically working out what
parameters are needed), leaving a framework for the function call on
the top of the kill ring ready for re-use.
    * Converting an expression into a local variable, and finding a
likely suitable scoping point, and leaving the variable at the top of
the kill ring ready for re-use.

The implementation of these facilities is structured as
language-independent core logic and sets of definitions for different
languages, currently supporting Lisp, C, and some of Java. (Support is
planned for other languages, including shell, Perl, Python, and


Versor aims to reduce the number of keystrokes needed to acheive many
common kinds of edit, and to reduce the mistakes and the frustration of
correcting them. Now that we have high-level languages, it seems a pity
to be editing them almost entirely character-by-character; Versor (and
Languide) try to use the structure of the language to help the editor
user, but without the restrictions of the restrictive ``structure
editors'' that never proved popular.

Versor integrates smoothly with underlying Emacs, and its extended
cursor quietly disappears whenever you use non-Versor commands.

Seeing it in action

You can step your way through a series of screenshots, starting from This lets you
preview it in action without having to download and install.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]