From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Rusi Newsgroups: gmane.emacs.help Subject: Re: A femtolisp based emacs clone Date: Sun, 21 Aug 2016 22:22:08 -0700 (PDT) Message-ID: References: <6ea295ed-010d-476d-b832-9e850a98a609@googlegroups.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Trace: blaine.gmane.org 1471848932 27211 195.159.176.226 (22 Aug 2016 06:55:32 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 22 Aug 2016 06:55:32 +0000 (UTC) Injection-Date: Mon, 22 Aug 2016 05:22:09 +0000 User-Agent: G2/1.0 To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Aug 22 08:55:28 2016 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bbj8p-0006lX-GC for geh-help-gnu-emacs@m.gmane.org; Mon, 22 Aug 2016 08:55:27 +0200 Original-Received: from localhost ([::1]:39917 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bbj8m-0007ES-Cc for geh-help-gnu-emacs@m.gmane.org; Mon, 22 Aug 2016 02:55:24 -0400 X-Received: by 10.107.144.86 with SMTP id s83mr15154795iod.26.1471843329042; Sun, 21 Aug 2016 22:22:09 -0700 (PDT) X-Received: by 10.36.50.145 with SMTP id j139mr588853ita.9.1471843329001; Sun, 21 Aug 2016 22:22:09 -0700 (PDT) Original-Path: usenet.stanford.edu!f6no11903849ith.0!news-out.google.com!d130ni42921ith.0!nntp.google.com!f6no11903842ith.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Original-Newsgroups: gnu.emacs.help In-Reply-To: <6ea295ed-010d-476d-b832-9e850a98a609@googlegroups.com> Complaints-To: groups-abuse@google.com Original-Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=123.201.193.102; posting-account=mBpa7woAAAAGLEWUUKpmbxm-Quu5D8ui Original-NNTP-Posting-Host: 123.201.193.102 Original-Xref: usenet.stanford.edu gnu.emacs.help:218748 X-Mailman-Approved-At: Mon, 22 Aug 2016 02:55:01 -0400 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.org gmane.emacs.help:111185 Archived-At: On Monday, August 22, 2016 at 1:45:05 AM UTC+5:30, edu5...@gmail.com wrote: > Dear Members of Gnu.Emacs.help, >=20 > A team of engineers, of which I am part, has decided to write a tiny vers= ion of > Emacs. Well, there are many tiny versions of Emacs around: Microemacs, Z= ile, jmacs to name a few. However, the idea is to be in keeping with the Em= acs Philosophy, and not only providing key-binding for Emacs compatibility.= By Emacs philosophy, I mean that the new editor must be customizable throu= gh 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 proo= f of concept, Hugh Barney designed the architecture of the editor and imple= mented 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 m= ean, even if a developer wants to modify a C source file, s/he can do it ea= sily. The C source files are classified according to their functionality. F= or instance, commandFemto.c contains the primitive commands; keyFemto.c con= tains keybyndings. I intend to write a comprehensive documentation on how t= o modify femto-Emacs C source files. >=20 > Initially, Hugh Barney named the new editor - atto. Then he changed the n= ame to femto in acknowledgement of femtolisp. This core femtoEmacs has the = following features: >=20 > 1 - Multiple windows that one can open with C-x 2. >=20 > 2 - C-x C-f to visit a new file. The arrows rotate the files in the direc= tory. >=20 > 3 - Multiple buffers. >=20 > 4 - Utf8 for diacritics, etc. >=20 > 5 - File browsing through the arrow keys >=20 > In summary, femtoEmacs has the keybindings and basic functionality of GNU= -Emacs. Well, maybe not the whole functionality, but the authors are pushin= g in that direction.=20 >=20 > Ed Costa designed the interface with femtolisp and proposed the functions= for the interaction between Lisp and femtoEmacs buffers and keybinding: >=20 > 1 - insert, backward, forward-char, backward-char, etc. >=20 > 2 - syntax highlighting >=20 > 3 - parentheses checking (it is not working very well) >=20 > The project members have chosen femtolisp because it is small and fast, a= lthough they had flirted with TinyScheme. Femtolisp compiler takes less tha= n 100 k on a Macintosh. Besides this, femtolisp is about 4 times faster tha= n Python, slightly faster than Bigloo VM, has lexical scope, and can be mad= e compatible with the language used in the book - Structure and Interpretat= ion of Computer Programs. >=20 > By the way, femtolisp has lexical scope, backquote, vectors, IO and memor= y strings, compacting GC, support for direct use of C data types =C3=A0 la = Python, proper tail recursion, printing and reading circular shared structu= res, exceptions, macros, equal and ordered comparison predicates that work = on circular shared structures, etc. >=20 > Femto-Emacs is hosted on and can be cloned from github: >=20 > git clone https://github.com/FemtoEmacs/Femto-Emacs/ >=20 > Our ultimate goal is to create a grass-root movement similar to neovim. T= his way, users will have a tiny emacs that is easy to maintain, but has eno= ugh functionality to be useful. We are needing collaboration for: >=20 > 1 -- Generate mingw binaries for Windows. In general, Windows users do no= t know how to compile applications from source. Thus the need of binaries f= or this particular platform. >=20 > 2 -- Improve the femtolisp interface. For the time being, the only functi= onalities that the lisp interface has are: >=20 > 1 -- to move the cursor forward and backward >=20 > 2 -- to insert text=20 >=20 > 3 -- to receive text from selected regions=20 >=20 > 4 -- to insert text from the clipboard >=20 > 5 -- to move the cursor to the beginning of line and to the end of line >=20 > 6 -- to define keywords for a given language >=20 > Collaborators are welcome to provide at least the most basic emacs functi= ons. If you want to write code for the fun of it=E2=80=A6 Go for it!! If however you want to improve on gnu-emacs it may be better to discuss wha= t are the significant problems as of this point Best as I can see all your features are there or can be added with some eli= sp into gnu-emacs quite easily