/amun

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

Primary LanguageRubyMIT LicenseMIT

Amun (Work in progress)

"King of the gods and god of the wind"

Gem Version Build Status Code Climate Test Coverage Inline docs

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.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/blazeeboy/amun.

License

The gem is available as open source under the terms of the MIT License.