[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
A femtolisp based emacs clone
A femtolisp based emacs clone
Sun, 21 Aug 2016 13:15:01 -0700 (PDT)
Dear Members of Gnu.Emacs.help,
A team of engineers, of which I am part, has decided to write a tiny version of
Emacs. Well, there are many tiny versions of Emacs around: Microemacs, Zile,
jmacs to name a few. However, the idea is to be in keeping with the Emacs
Philosophy, and not only providing key-binding for Emacs compatibility. By
Emacs philosophy, I mean that the new editor must be customizable through a
Lisp dialect. The small group under the leadership of Hugh Barney has chosen
femtolisp for writing macros and extensions to the editor. As a proof of
concept, Hugh Barney designed the architecture of the editor and implemented
the main editing functions in 2000 lines of C. The idea is that one should not
need to program in C beyond these 2000 lines. Besides this, 2000 lines divided
between 12 small files is easy to understand and modify. I mean, even if a
developer wants to modify a C source file, s/he can do it easily. The C source
files are classified according to their functionality. For instance,
commandFemto.c contains the primitive commands; keyFemto.c contains
keybyndings. I intend to write a comprehensive documentation on how to modify
femto-Emacs C source files.
Initially, Hugh Barney named the new editor - atto. Then he changed the name to
femto in acknowledgement of femtolisp. This core femtoEmacs has the following
1 - Multiple windows that one can open with C-x 2.
2 - C-x C-f to visit a new file. The arrows rotate the files in the directory.
3 - Multiple buffers.
4 - Utf8 for diacritics, etc.
5 - File browsing through the arrow keys
In summary, femtoEmacs has the keybindings and basic functionality of
GNU-Emacs. Well, maybe not the whole functionality, but the authors are pushing
in that direction.
Ed Costa designed the interface with femtolisp and proposed the functions for
the interaction between Lisp and femtoEmacs buffers and keybinding:
1 - insert, backward, forward-char, backward-char, etc.
2 - syntax highlighting
3 - parentheses checking (it is not working very well)
The project members have chosen femtolisp because it is small and fast,
although they had flirted with TinyScheme. Femtolisp compiler takes less than
100 k on a Macintosh. Besides this, femtolisp is about 4 times faster than
Python, slightly faster than Bigloo VM, has lexical scope, and can be made
compatible with the language used in the book - Structure and Interpretation of
By the way, femtolisp has lexical scope, backquote, vectors, IO and memory
strings, compacting GC, support for direct use of C data types à la Python,
proper tail recursion, printing and reading circular shared structures,
exceptions, macros, equal and ordered comparison predicates that work on
circular shared structures, etc.
Femto-Emacs is hosted on and can be cloned from github:
git clone https://github.com/FemtoEmacs/Femto-Emacs/
Our ultimate goal is to create a grass-root movement similar to neovim. This
way, users will have a tiny emacs that is easy to maintain, but has enough
functionality to be useful. We are needing collaboration for:
1 -- Generate mingw binaries for Windows. In general, Windows users do not know
how to compile applications from source. Thus the need of binaries for this
2 -- Improve the femtolisp interface. For the time being, the only
functionalities that the lisp interface has are:
1 -- to move the cursor forward and backward
2 -- to insert text
3 -- to receive text from selected regions
4 -- to insert text from the clipboard
5 -- to move the cursor to the beginning of line and to the end of line
6 -- to define keywords for a given language
Collaborators are welcome to provide at least the most basic emacs functions.
- A femtolisp based emacs clone,
- Re: A femtolisp based emacs clone, Gene, 2016/08/22
- Re: A femtolisp based emacs clone, Rusi, 2016/08/22
- Re: A femtolisp based emacs clone, edu500ac, 2016/08/22
- Re: A femtolisp based emacs clone, Thien-Thi Nguyen, 2016/08/22
- Re: A femtolisp based emacs clone, James K. Lowden, 2016/08/23
- Re: A femtolisp based emacs clone, Yuri Khan, 2016/08/24
- Re: A femtolisp based emacs clone, edu500ac, 2016/08/24
- Re: A femtolisp based emacs clone, Stefan Monnier, 2016/08/25
- Re: A femtolisp based emacs clone, Michael Albinus, 2016/08/26
- Re: A femtolisp based emacs clone, Stefan Monnier, 2016/08/26