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.
Tests
guard file will run rspec tests whenever a relevant file changes
$ guard
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/emad-elsaid/amun.
License
The gem is available as open source under the terms of the MIT License.