Short: Extended version of Atto Emacs Author: Anthony Howe, hughbarney@gmail.com (Hugh Barney) Uploader: polluks+aminet sdf lonestar org (Stefan Haubenthal) Type: dev/gg Version: 2.11 Requires: touch $HOME/femto.rc Architecture: ppc-morphos Femto is an extended version of Atto Emacs with a Tiny Lisp extension languauge # Goals of Femto Emacs * To be an extendable version of the Atto Emacs editor using a Tiny Lisp extension language * Provide a number of useful extension packages written in Tiny Lisp (these include an interface to **git** (similar to GNU Emacs Magit), a small version of **dired**, a buffer management menu (**buffer menu**), **defmacro** allows for a macro to be recorded and invoked using c-x e, and an interface to **grep**. * Be easy to understand without extensive study (to encourage further experimentation). # What does Femto bring to the party of Text Editors As far as I know Femto is the only Emacs style editor to provide a macro recorder that generates usable Lisp code that can then be used to build a larger, more complex utility. Whilst GNU Emacs has a macro recorder facility it only allows you to dump out the keystrokes used during macro recording. Femto does this by writing the lisp code to a text buffer called **macro**. Though I have tried dozens of text editors over the years (mostly on PCs, but a few on mini and mainframe computers) I am not aware of any other editor that works this way. This feature was born out of the principle of keeping a small editor code written in C and where possible using Lisp to implement new features. The standard Emacs macro keystrokes [C-x (, C-c ), C-x e] are all written in Lisp in the file examples/defmacro.lsp. This meant that no special C code was needed in Femto to know when it was in macro mode or not. Comparisons with Other Emacs Implementations Femto has almost the same level of functionality as MicroEmacs 3.10 for a codebase 1/10 of the size. Editor Binary BinSize KLOC Files atto atto 33002 1.9k 10 pEmacs pe 59465 5.7K 16 Esatz-Emacs ee 59050 5.7K 14 femto femto 356399 6.3k 18 ** GNOME GNOME 55922 9.8k 13 Zile zile 257360 11.7k 48 Mg mg 585313 16.5K 50 uEmacs/Pk em 147546 17.5K 34 Pico pico 438534 24.0k 29 Nano nano 192008 24.8K 17 jove jove 248824 34.7k 94 Qemacs qe 379968 36.9k 59 ue3.10 uemacs 171664 52.4K 16 ++ GNUEmacs emacs 14632920 358.0k 186 # Femto Key Bindings C-A begining-of-line C-B backward-character C-D delete-char C-E end-of-line C-F forward Character C-G Abort (at prompts) C-H backspace C-I handle-tab C-J newline C-K kill-to-eol C-L refresh display C-M Carrage Return C-N next line C-P previous line C-R search-backwards C-S search-forwards C-U Undo C-V Page Down C-W Kill Region (Cut) C-X CTRL-X command prefix C-Y Yank (Paste) M-< Start of file M-> End of file M-v Page Up M-f Forward Word M-b Backwards Word M-g goto-line M-r Search and Replace M-w copy-region C- Set mark at current position. ^X^B List Buffers ^X^C Exit. Any unsaved files will require confirmation. ^X^F Find file; read into a new buffer created from filename. ^X^S Save current buffer to disk, using the filename associated with the buffer ^X^W Write current buffer to disk. Type in a new filename at the prompt ^X@ shell-command (prompted for a command which is sent to the shell ^Xi Insert file at point ^X= Show Character at position ^X^N next-buffer ^Xn next-buffer ^Xk kill-buffer ^X1 delete-other-windows ^X2 split-window ^Xo other-window Home Beginning-of-line End End-of-line Del Delete character under cursor Ins Toggle Overwrite Mode Left Move left Right Move point right Up Move to the previous line Down Move to the next line Backspace delete caharacter on the left Ctrl+Up beginning of file Ctrl+Down end of file Ctrk+Left Page Down Ctrl+Right Page Up ## Copying and moving C- Set mark at current position ^W Delete region ^Y Yank back kill buffer at cursor M-w Copy Region A region is defined as the area between this mark and the current cursor position. The kill buffer is the text which has been most recently deleted or copied. Generally, the procedure for copying or moving text is: 1. Mark out region using M- at the beginning and move the cursor to the end. 2. Delete it (with ^W) or copy it (with M-W) into the kill buffer. 3. Move the cursor to the desired location and yank it back (with ^Y). ## Searching C-S or C-R enters the search prompt, where you type the search string BACKSPACE - will reduce the search string, any other character will extend it C-S at the search prompt will search forward, will wrap at end of the buffer C-R at the search prompt will search backwards, will wrap at start of the buffer ESC will escape from the search prompt and return to the point of the match C-G abort the search and return to point before the search started