DEV Community

Mario Rosell
Mario Rosell

Posted on

The Acme Integrating Computing Environment

ACHTUNG: This document was written by a Plan9 fanboy.

I used to be a pretty dedicated Visual Studio user until, very recently... I discovered the Plan 9 From Bell Labs operating system, a direct spriritual successor of UNIX.

Plan9 was developed, as aforementioned, as a direct successor of UNIX. It was also developed by Bell Labs, more specifically, a group most notably containing Rob Pike (the creator of Go), Dennis Ritchie, Brian Keringhan (probably the best technical writer ever) and Ken Thrompson (the most notable creators of UNIX and C), and other visionaries.

Plan9 is perhaps the best operating system ever created (in my humble opinion, of course); 9P allows me to mount remote files, I can have different mounts (namespaces) per process, and much more cool shit.

Plan9 originated lots of modern things, like UTF-8, /proc, and 9P.

Plan9 comes with an editor called Acme, which is also awesome, and has been ported to *NIX, Windows, and macOS systems, with Plan 9 From Userspace/plan9port/p9p.

This document is meant as a quick introduction for all-time beginners.

Integrating Computing Environment(s)

I wouldn't call Acme an editor, as it can do much more than that, without bloating itself.

Modern IDEs (integrated development environments) are meant to cover the widest array of features developers could ever need in a single monolith - and fail, whereas Acme barely has a working terminal and yet can do everything. This is because Acme is more of an integrating computing environment (ICE), as I like to call it, or a programmer's system interface. In fact, it only provides a filesystem interface, and a way to execute scripts. It kind of just integrates itself to the system, not like IDEs that try to morph the system to it's own bad interface.

The Tag Line

Lemme' just write a new button here...

The tag line is like the status line of every buffer. Unlike on, every modern editor, it's another buffer like any other (just that has a blue background), that includes that it's modifiable.

You can (and in fact, should) add commands to the tag line and they'll work like normal commands already there.

In fact, I always add to some buffer my build command so I can execute it quickly.

Some basic Commands

Actually, all Acme commands are just system commands that modify /proc/<acme's PID>/ (that's why I describe it as automatically integrating).

A very useful command is win. win makes a dumb terminal window inside acme. Note this terminal lacks any VT100 status codes.

Using Acme

"Acme has a very simple mouse interface, the first button selects text, the second button selects text, and the third button also selects text." – Charles Forsyth (paraphrased)

Unlike the mindfucks of Vim or Emacs, Acme uses the mouse. Unlike popular belief states, the mouse, when used well, is way faster than the keyboard. First, Acme really depends on a three-button mouse, so go get a mouse (or a real ThinkPad).

We also number mouse buttons rather than saying left or right button (since it's kind of stupid if you think about it).

  • Button 1 :: Normally the left button
  • Button 2 :: Normally the middle button (or the wheel button)
  • Button 3 :: Normally the right button

Assigned Buttons

  • Button 1 is for normal selection, you know, holding and sweeping. Nothing weird
  • Button 2 is for execution.
  • Button 3 is for seeking, it will find for text on the current buffer or make a buffer containing a file.

Additionally, holding and sweeping these buttons (not only button 1) will execute the button's behavior on more text than a single word. You may cancel selections and chords by adding a middle-press.

Clipboarding

Quick warning, Acme uses mouse chording.

Using the clipboard is pretty easy in Acme. You can use these mouse chords for using the clipboard:

  • Copying :: Select your text with mouse button 1 (you know, hold left click and sweep), then press mouse button 2 (middle), and after that, mouse button 3 (right). Or simply use button 2 (middle) on the Snarf button on the tag line with the selection done.
  • Pasting :: Just do button 1 + button 3 (that is, holding left button + right-button)
  • Cutting :: Make your selection like before, and press button 2 (middle).

Tom Lieber made an illustration of these basic mouse chords, I'll link it here.

FQA

Q: Why does Acme have no syntax highlighting?

A: Rob Pike found it too distracting, so it's intentionally out ;)

Q: Where do I get LSP?

A: Russ Cox, the dude who made plan9port, made an application called acme-lsp, that does what you want. I don't know much about it though.

Top comments (0)