Acme

(1 comment)

Another repost and more text editor discussion...


As some of you know, I like playing with various text editors. Right now, I'm a pretty big fan of Github's Atom editor because I think it has a lot of potential. However, I've played with more than I can even remember over the years, with my first "real" editor probably being the WordStar-like "joe" (which is still a favorite console editor). I've also uses Emacs and vi/vim over the years, and I've played with quite a few CUA/MacHIG-style editors over the years as well (Komodo Edit, Text Wrangler/BBEdit, Notepad++, and others).

Today's funky editor is Acme by Rob Pike. Originally written for the Unix follow-up operating system Plan 9, it has been ported to just about every common Unix-like OS out there via the "Plan 9 from User Space" project. Among its fans include the late, great Dennis Ritchie.

One unique thing about this editor is that it's probably the most mouse-centric editor you'll find out there. Rob Pike has been quoted saying that one problem with many traditional text editors is that cursor movement is "two-dimensional." By that, he basically means that you can really only move a step at a time in any of the four cardinal directions (1 step right, 1 step up, 1 step left, 1 step down, etc.). Yes, any decent editor offer "jump to line" commands as well as "jump to next word" commands, but you still often have to chain several of these together to move around. Using a mouse, to use Pike's terminology, makes things more "three-dimensional" because it allows you to instantly move to any arbitrary location in the file (or at least on screen, anyway). As a result, Acme, unusually, has minimal keyboard short cuts (including no way to move up and down between lines with the keyboard!), preferring the mouse for nearly everything... but wow, does it use the mouse well!

Acme requires a 3 button mouse (I've heard people had mixed success with clickwheels and instead going for a real middle button), but every button does something useful and you can even chord buttons together to get more functionality. For example, commands are executed by middle-clicking on a command word or by selecting several words together by middle-dragging. In fact, what looks like menus in the screen shot below are actually command words that can be edited and then executed via middle mouse button.

Other than the mouse-on-steroids, Acme in many ways is pretty bare-bones. It doesn't do syntax coloring. Its own color scheme is hard-coded (not that I have a personal problem with it as it's quite similar to my preferred color scheme). Auto-indent is limited. It has no built-in macro language. Etc. Some of this is mitigated by some of the mouse craziness. For instance, you can type out arbitrary shell commands in any window and execute them via the middle mouse button. However, despite not having any built-in macro language, it's arguably one of the most extensible editors ever.

If you install Acme right, it exports just about all of its internals as a mountable file system via FUSE. As a result, you can write extensions to the editor in any programming language you like just by reading and writing to virtual files in the "Acme file system."

The video linked below goes into a lot of detail as to some of the neat stuff Acme can do.

http://research.swtch.com/acme

Now, would I use it as my everyday editor? Probably not... While I do heavily use the mouse when editing text, I still prefer to have a few more keyboard shortcuts for some commands I use often. I'd also miss syntax-coloring and built-in code indexing. However, this editor has a lot of fascinating features that, if for some crazy reason I ever decide to write my own editor, I'm strongly tempted to adopt in my own editor.

Acme home page

Acme screenshot

Currently unrated

Comments

nick 1 year, 3 months ago

Good post

Link | Reply
Currently unrated

New Comment

required

required (not published)

optional