Amun (Work in progress)

"King of the gods and god of the wind"

A minimal CLI text editor, built on Ruby, looking for Emacs as it's father and idol.

As developing packages for Emacs with Elisp wasn't always a fun or easy task, Starting a project that leverage ruby ability for fast development will be a good move towards
an open, easy to extend editor.

When I started this project I had 2 options, taking the VIM way or emacs way, looking in the current state of the two editors, It's obvious that emacs approach has a better
extensibility over VIM, emacs customizability is far superior to VIM, so building this project as a minimal and emacs-like would open the door for vim users to have their own
bindings as a package like emacs Evil mode, but doing the other way around won't help emacs users.

Advantages of building an editor in ruby

We can use ruby gems as package management

we already have bundler to fix dependencies, upgrade, downgrade gems (plugins in this case), you can even add sources for gems or get a gem from github or company inhouse gems.

you can reflect on the runtime and autocomplete commands

plugins can mutate all parts of the runtime application classes/objects included

ruby is easy to learn so it'll be easier to build gems that is specifically for this editor

lots of gems already exists and could be loaded into the editor environment

you can use it locally or remotly as it's terminal based

documentation included, rdoc is already there to be used

Installation

$ gem install amun

Usage

amun install an executable to your path, so executing amun from your command-line should launch amun

Structure

Helpers

Helpers are modules that any class can use to do side tasks, think of it like Ruby on rails helpers.

Only modules no classes

doesn't depend on each other

depends on the project dependencies only like "Curses"

MajorModes

Classes that are responsible the following for a buffer object:

event handling

manipulating IO

Rendering IO into a curses window

Development

After checking out the repo, run bundle install to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.