Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ANN: scheme-complete.el - smart tab completion

4 views
Skip to first unread message

Alex Shinn

unread,
Oct 15, 2007, 11:48:39 PM10/15/07
to
scheme-complete.el is a single function that can be used with any
Emacs scheme mode. It provides real-time, lexical-scope aware
type inferencing tab-completion for any R5RS scheme, with
extensibility for implementation-specific features (currently only
Chicken and Gauche are customized).

For example, given the text

(string-ref (n^

where the cursor is represented by ^, typing tab (or whatever you
bind the completion function to) would know that in the default
R5RS environment the only possible completion of a procedure
returning a string and beginning with "n" is number->string and
would complete that for you automatically.

Given

(let ((len (string-length str)))
(string-ref str (- ^

completing would fill in "len" as the only possible completion
since a number is required as an argument to "-" and all the
standard R5RS bindings are procedures and syntax.

Relying on this completion for known type procedures is a handy
way to avoid type errors, even before the compilation. In more
general cases it's just nice to have basic pruning, such as not
completing syntax in a non-operator position.

Currently completion inside strings does filename completion,
though this may be made for flexible in the future. For Chicken
and Gauche, completing after "(use " will complete on all
currently installed modules.

Also includes optional eldoc-mode support, to flash a docstring
for the current function.

All parsing is done real-time (I've had no speed issues yet), and
is very careful to handle incomplete input gracefully.

Available at http://synthcode.com/emacs/scheme-complete.el, with
setup instructions at the top of the file.

--
Alex

0 new messages