all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* A femtolisp based emacs clone
@ 2016-08-21 20:15 edu500ac
  2016-08-22  4:17 ` Gene
  2016-08-22  5:22 ` Rusi
  0 siblings, 2 replies; 12+ messages in thread
From: edu500ac @ 2016-08-21 20:15 UTC (permalink / raw)
  To: help-gnu-emacs

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 features:

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 Computer Programs.

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 particular platform.

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.


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2016-08-26 13:08 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-21 20:15 A femtolisp based emacs clone edu500ac
2016-08-22  4:17 ` Gene
2016-08-22  5:22 ` Rusi
2016-08-22 21:32   ` edu500ac
2016-08-23  1:23     ` Thien-Thi Nguyen
2016-08-24  3:52     ` James K. Lowden
2016-08-24  4:35       ` Yuri Khan
2016-08-24 21:38       ` edu500ac
2016-08-25 12:28       ` Stefan Monnier
2016-08-26  8:28         ` Michael Albinus
2016-08-26 13:08           ` Stefan Monnier
2016-08-25 21:22       ` Ben Bacarisse

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.