Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/5ht/pie-editor


https://github.com/5ht/pie-editor

Last synced: 2 days ago
JSON representation

Awesome Lists containing this project

README

        

Programmer's Interactive Editor
===============================

Emacs-like Erlang editor fully written in Erlang with S-Lang driver.
It is refined and ready to run on R16B01 with built-in sync and lager.
Pie codebase is very tiny, clean and extendable.

![Pie](http://synrc.com/lj/pie2.png)

![Unicode](http://i.juick.com/photos-512/2505478.jpg)

Mac Install
-----------

$ curl ftp://ftp.fu-berlin.de/pub/unix/misc/slang/v2.2/slang-2.2.4.tar.gz | tar xzf -
$ ./configure --prefix=/usr
$ make static
$ sudo make install-static

Ubuntu Install
--------------

$ sudo apt-get install libslang2-pic

Install Pie
-----------

$ rebar get-deps
$ rebar compile
$ ./install

Run
---

$ pie README.md

CUA mode
--------

Pie suports Extended Kystrokes and CUA mode being general purpose
editor saving your hands from RSI.

CURSOR -- Navigation
HOME (Fn-LEFT) -- Begining of line
END (Fn-RIGHT) -- End of line
PGUP (Fn-UP) -- Page up
PGDN (Fn-DOWN) -- Page down

Selection

S-CURSOR -- Selection
C-S-LEFT -- Begining of line
C-S-RIGHT -- End of line
M-S-LEFT -- Word left
M-S-RIGHT -- Word right

Selection CUA mode caveats due to Linux Terminal limitations

C-S-UP/DN -- unbinded
S-PGUP/PGDN -- unbinded

Copy & Paste

M-c -- Copy
M-v -- Paste

Remember that Pie is an Emacs (Erlang Macros) editor thus
it supports all basic Emacs commands which you can find
in edit_globalmap bindings. Here are most important:

File Operations
---------------

C-x C-c -- Quit
C-x C-f -- Find File, supports autocompletion in popup-windows
C-x C-s -- Save File

Window Management
-----------------

C-x o -- Next Window
C-x 0 -- Delete selected Window
C-x 1 -- Delete other Windows
C-x 2 -- Vertical Split

Pie Commands
------------

M-x -- will run internal Pie command in module:function format.
E.g. you can type "edit_lib:scroll_up"

For developing Pie commands a parse_transform syntax was introduced.
Here is example of edit_lib:unix_command

-command({unix_command, [{shell_command, "Shell command:"}]}).
unix_command(State, Cmd) ->
Text = os:cmd(["sh -c '(cd ",edit_util:pwd(State)," ; ",Cmd,")'"]),
edit_util:popup_message(State, '*Shell Command Output*', Text).

State is mandatory first argument of Pie state.

Eval
----

M-: -- command will evaluate Erlang Expression in the minibuffer,
like "os:type()." or "lists:seq(1,100).". If output is
not fit into one line another window will be created.

Interactive Mode
----------------

C-x i -- command will enter Erlang Interactive shell
where you can evaluate Erlang expressions
inside editor buffer by pressing ENTER on them.
The result would be displayed also in the
editor buffer below.

os:type(). ENTER
=> {unix,linux}
>>

Fundamental Mode
----------------

C-x f -- command will bring you back to Fundamental mode which
is defaul editing mode.

Erlang Mode
-----------

C-x e -- command will dive you into Erlang mode which helps you edit Erlang code.
C-i -- reformat selected code

Futher tasks
------------

* Syntax Coloring
* UTF-8

Credits
-------

* Torbjorn Tornkvist -- original edit program
* Luke Gorrie -- ermacs package
* Maxim Sokhatsky -- pie renaissance

Notes
-----

This file was edited using Pie.
Pie supports self-developing using sync.

OM A HUM