# JEmacs Implementation Status

This is very incomplete and in itself very a work-in-progress. Think of this as a very incomplete reminder list of what needs to be done, as well as noting what is working.

## ELisp Syntax

- `;;;###autoload`: Works.
- `save-excursion` works.
- `save-current-buffer` works.
- `unwind-protect` works.

## ELisp core

Various non-trivial Elisp files compile and load without complaint. However, that does not necessarily mean they work!

- `read`: Pasring of Emacs-style s-expressions mostly works.
- `print`: Prints in Scheme format.
- Dynamic name scoping (works).
- Buffer-local variables (mostly works).
- `defmacro` doesn't work, for some undetermined reason.
- `purecopy` is just identity. A possible improvement would force compile-tiem evaluation to a literal.

## Strings

- `format`: Framework and most common cases work.

## Interaction

- No mini-buffer. (Uses pop-up dialog window where Emacs uses mini-buffer.)
- No each area. (Messages are written on console.)
- `interactive`: Basic framework implemented. Only string argument implemented. Most specifiers are ignored.
- Selection sets point and mark, but otherwise not handled properly.
- `call-interactively` works.
- `interactive-p` is hardwired to `nil`. One possible implementation is to examine the output from `new Throwable().printStackTrace(...)`. A possibly-more efficient implementation is to make it a macro for `(eq? (%buffer-current-command) --this-function--)`.

## Common Lisp extensions

- Default values for optional parameters (works).
- `typep`: Basic framework works; only (some) simple type names work. Any Java fully-qualified Java classname be used as type specifier. Most type names cause `typep` to be inlined.
- There is a almost-complete implementation of CL-style `format` which could be made available under the name `format*`

Last modified: Mon Jun 19 23:53:37 PDT 2000