From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: edu500ac@gmail.com Newsgroups: gmane.emacs.help Subject: A femtolisp based emacs clone Date: Sun, 21 Aug 2016 13:15:01 -0700 (PDT) Message-ID: <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 1471810834 19923 195.159.176.226 (21 Aug 2016 20:20:34 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 21 Aug 2016 20:20:34 +0000 (UTC) Injection-Date: Sun, 21 Aug 2016 20:15:02 +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 Sun Aug 21 22:20:29 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 1bbZEJ-0004lh-SU for geh-help-gnu-emacs@m.gmane.org; Sun, 21 Aug 2016 22:20:27 +0200 Original-Received: from localhost ([::1]:38068 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bbZEJ-0006oy-VC for geh-help-gnu-emacs@m.gmane.org; Sun, 21 Aug 2016 16:20:27 -0400 X-Received: by 10.66.119.168 with SMTP id kv8mr13713967pab.28.1471810502889; Sun, 21 Aug 2016 13:15:02 -0700 (PDT) X-Received: by 10.36.217.2 with SMTP id p2mr569470itg.5.1471810502824; Sun, 21 Aug 2016 13:15:02 -0700 (PDT) Original-Path: usenet.stanford.edu!f6no11851052ith.0!news-out.google.com!d130ni42545ith.0!nntp.google.com!f6no11827531ith.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Original-Newsgroups: gnu.emacs.help Complaints-To: groups-abuse@google.com Original-Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=200.131.199.29; posting-account=8YAtcAoAAAD4IX3bs0texOrJOshWJwro Original-NNTP-Posting-Host: 200.131.199.29 Original-Xref: usenet.stanford.edu gnu.emacs.help:218746 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:111183 Archived-At: Dear Members of Gnu.Emacs.help, A team of engineers, of which I am part, has decided to write a tiny versio= n of Emacs. Well, there are many tiny versions of Emacs around: Microemacs, Zil= e, jmacs to name a few. However, the idea is to be in keeping with the Emac= s Philosophy, and not only providing key-binding for Emacs compatibility. B= y 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 ch= osen femtolisp for writing macros and extensions to the editor. As a proof = of concept, Hugh Barney designed the architecture of the editor and impleme= nted the main editing functions in 2000 lines of C. The idea is that one sh= ould not need to program in C beyond these 2000 lines. Besides this, 2000 l= ines divided between 12 small files is easy to understand and modify. I mea= n, even if a developer wants to modify a C source file, s/he can do it easi= ly. The C source files are classified according to their functionality. For= instance, commandFemto.c contains the primitive commands; keyFemto.c conta= ins 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 nam= e to femto in acknowledgement of femtolisp. This core femtoEmacs has the fo= llowing 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 directo= ry. 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-E= macs. Well, maybe not the whole functionality, but the authors are pushing = in that direction.=20 Ed Costa designed the interface with femtolisp and proposed the functions f= or 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, alt= hough 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 Interpretatio= n 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 =C3=A0 la Py= thon, proper tail recursion, printing and reading circular shared structure= s, 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. Thi= s way, users will have a tiny emacs that is easy to maintain, but has enoug= h 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 function= alities that the lisp interface has are: 1 -- to move the cursor forward and backward 2 -- to insert text=20 3 -- to receive text from selected regions=20 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 function= s.