• untoreh-light

Emacs

Why emacs, and my personal emacs wishlist.

What is emacs?

A virtual machine or interpreter for the emacs lisp programming language...kind of. The emacs lisp programming language (elisp) is general purpose, but has first class support for the actual text editor that runs it. The primitive types are focused around text editing, nonetheless you can write anything you want with pretty decent performance (recently thanks to the jit compilation) because it is a lisp descendant of MACLISP and a sibling of common lisp. However emacs lisp doesn't have a standard, and the specification is equivalent to the most popular implementation, that is GNU Emacs.

Why emacs?

With the phrase "Emacs is a operative system" people mean that you can use it to do anything you would use a computer for. It falls short of being a literal operative system since the kernel, (usually linux) is still in charge of the hardware. [1] It can however be easily called a desktop environment since it provides an environment to work with. It gives you the ability to write quick interactive code to interface with any application, it can be as dirty as shell scripts or well thought out to provide stable APIs. In fact many emacs functionalities are provided by packages. [2] Can other editors be as extendable as emacs? No. Why? Because other editors use a different user model, one where the user has to be restricted since it is considered a "guest" of the running environment which is offering a "service" to the user. This is not the case with emacs, where the environment and the user become one and the same. In emacs, you have access to everything, and can modify almost all things through the same means those things were created, aka elisp.

Is it worth it?

The benefits accrue, it is investment, and like any investment, you should expect gains proportional to how much you put in, therefore you have to spend some time in learning and practicing how to use it.

My GNU emacs wishlist

Emacs is very good operative system, but a bad text editor.

...Or something along those lines. The GNU Emacs implementation, just like emacs, has its roots in the eighties, and many parts of its core show their age...

[7] can't because of speed but speed is only important short term, and without considering jit compilation
[6] The argument for more advanced animations can get contentious, as many people are of the opinion that things like transitions, blur, textures, shadows, etc don't add value to a GUI...but they do. But defending animations is for another post, here I can just say that careful and thoughtful application of more advanced properties can make a big difference in usability and productivity too (It's not just styling!).
[5] emacs-ng uses webrender, which allows gpu based drawing, since it works similarly to a game engine, it fullfills parts of my wishes, but I don't know how the webrender backend connects to emacs internals; if its efforts are akin to the [pgtk] backend that it would still fall quite a bit short.
[1] It is fun however, to think about a future where GNU HURD (the kernel) can be interfaced with emacs to speak with a lisp closer to bare metal
[2] There is still, however, a bulk of 200k lines of C code that implements core functionalities
[4] Since emacs displays things as a "server" when talking to another server, it sends a full "update" of the window, which has caused flickering in some cases.
[3] browsh is able to display webpages within the terminal, the rich website is "reduced" to support the terminal interface, this is a case of "graphical first, terminal second"

Post Tags: