From: Rusi <rustompmody@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: A femtolisp based emacs clone
Date: Sun, 21 Aug 2016 22:22:08 -0700 (PDT) [thread overview]
Message-ID: <b3cf28ef-ac10-42cc-bbac-88cea1cbefcb@googlegroups.com> (raw)
In-Reply-To: <6ea295ed-010d-476d-b832-9e850a98a609@googlegroups.com>
On Monday, August 22, 2016 at 1:45:05 AM UTC+5:30, edu5...@gmail.com wrote:
> 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.
If you want to write code for the fun of it… Go for it!!
If however you want to improve on gnu-emacs it may be better to discuss what are
the significant problems as of this point
Best as I can see all your features are there or can be added with some elisp
into gnu-emacs quite easily
next prev parent reply other threads:[~2016-08-22 5:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-21 20:15 A femtolisp based emacs clone edu500ac
2016-08-22 4:17 ` Gene
2016-08-22 5:22 ` Rusi [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b3cf28ef-ac10-42cc-bbac-88cea1cbefcb@googlegroups.com \
--to=rustompmody@gmail.com \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.