Live data from Hacker News

A Tour of Acme (2012)

research.swtch.com

21–30 of 61 posts

Re: A Tour of Acme (2012)

#21
post #18
post #16

I use Acme (from Plan9Port) as my every-day editor for work. I run it full-screen on a 4K monitor. I've got a co-worker who likes to grumble about mice, but somehow when we're debugging something on a call, I'm always in the appropriate file at the appropriate line number long before he is :) There are some tools (acmego [9fans.net/go/acme/acmego], A [github.com/davidrjenni/A]) that make working with Go a lot more pl…

I've been willing to try it for a while, now. Does the lack of "native" support for real-time linting, debuggers, formatters, etc get in your way? Did you manage to integrate such features in your workflow?

Go tooling actually works surprisingly well in Acme, because the tools tend to print out files with line numbers for errors, then when you click on that line number Acme will take you directly to the line in question.

Here's a sample workflow: I'm hacking on some code in /home/john/foo. I have a directory window open in /home/john/foo, plus the files foo.go and foo_test.go open. I make some changes in foo.go, then in the directory window I type `go test`, select it with the mouse, and middle-click. This runs `go test`, creating an "Errors" output frame in the rightmost column. If the tests pass, this frame just says "PASS". If the tests fail, it'll say something like `./foo.go:27:10: undefined: xyz`. I right-click on `./foo.go:27:10` and Acme immediately takes me to that like in the appropriate file. I make a change, execute "Put", and then middle-click `go test` again to try the tests once more.

The delve debugger also prints line numbers that work with Acme. I run delve in an Acme terminal, and when I e.g. print a backtrace, I can simply right-click any of the line numbers to jump immediately to that code (Acme will open the file in question if it's not already open).

acmego will run gofmt and automatically add/remove imports as necessary every time you save the file, which is a huge convenience.

There's no syntax highlighting, which is a huge dealbreaker for some people. Personally, I find it distracting to watch huge swathes of my file change colors because I typed ", then change back as soon as I close with another ", so the lack of highlighting is great for me.

Edit: in my sample workflow above, I mentioned typing `go test` right in the directory window, but that's just ephemeral... you'll lose the commands if you refresh the file list, etc. A more permanent thing is to drop useful commands into a "guide" file in that directory; that way you can keep a whole suite of commands to run tests, run benchmarks, build & deploy, etc. right at your fingertips.

Edit 2: There's also a number of Language Server Protocol clients for Acme (see https://news.ycombinator.com/item?id=23782439 and https://github.com/fhs/acme-lsp) but I don't use them... I'm old-fashioned.

Re: A Tour of Acme (2012)

#22
I've been using acme for ~6 years now and it's still my daily editor. I wrote a LSP client for it (https://github.com/mjibson/acre). acme is so weird because when you start out it's like "wait so I have to write little shell scripts to do everything?". But then it slowly dawns that larger programs (like acre) are possible that are much more interactive, like modern IDEs.

Re: A Tour of Acme (2012)

#23
post #20
post #14

Earlier quoted context omitted.

> Up and down can't work, because acme was designed for proportional fonts, and many of us acme users use proportional fonts. Up and down are not well defined/not useful with proportional fonts. It can work with proportional fonts. Word for instance defines it well enough to be useful. Rather than down taking you to the same column on the next line, it just takes you to the character rendered at a similar x coordinat…

And this is useful when writing code how? I'd use such a feature if I had to fill a table, and wanted to move to the same column on a different row. But with proportional fonts, the columns don't line up. So yes, it can move to the same x coordinate, but why is this useful?

> And this is useful when writing code how?

It's useful for general text navigation, and writing code is an instance of that.

> I'd use such a feature if I had to fill a table, and wanted to move to the same column on a different row. But with proportional fonts, the columns don't line up. So yes, it can move to the same x coordinate, but why is this useful?

"Doesn't work well for use case X" != "not useful [in general]"

If your text is laid out assuming fixed-width fonts, and it's important for you to move to the same column in a different row, then just use fixed-width fonts and the method I described would work as you expect.

Re: A Tour of Acme (2012)

#24

Earlier quoted context omitted.

It would not be infuriating if basic movements were possible using the keyboard, such as the classic left-down-up-right. As for key binding, it’s pretty easy to add that as external tools, thanks to the 9p interface.

I’ve never tried it, but always kind of assumed such basic keystrokes just worked as expected. Now I know I shouldn’t bother with it.

Left and right work as expected. Up and down scroll.

Re: A Tour of Acme (2012)

#25

Earlier quoted context omitted.

It would not be infuriating if basic movements were possible using the keyboard, such as the classic left-down-up-right. As for key binding, it’s pretty easy to add that as external tools, thanks to the 9p interface.

I'd just take a look at some patches out there. There's a lot of usability tweaks existing for acme. however I still think acme is a conflagration of confusion. It has programs, inside of it, it's a text editor, a terminal, but breaks the interface of /dev/draw so it doesn't properly multiplex by rio. Often stated, and I imagine to be true, acme was to be a full replacement for rio almost, but it ends up falling shor…

I am not bothered by acme / rio issues, since I use acme on plan9port.

However, I have been maintaining a set of patches, including up/down and additional goodies such as bindings for save, copy, cut, paste. Some of them are actually hard coded for Mac (cmd modifier), but not for Linux. It’s workable.

The golang port, edwood, features the same limitations, in my opinion.

Re: A Tour of Acme (2012)

#26
Acme must be very useful in a Plan9 system. But on UNIX, I don't see any single thing it does that cannot be done by vim, with some configuration. And of course vim can do more.

Re: A Tour of Acme (2012)

#27
I'm using it as my day to day tui (with an scratch buffer). I have a index file where I store "shortcuts" to lot of fs places. Also I store action logs of whatever related to shell. For example, a file rabbit.md, it starts with the snippet to portforward the k8 service.. but I also have there some curls to clean or manage things. Files are more or less like a notebook (but everything can be executed or it's just a mix... I can live without it..

Re: A Tour of Acme (2012)

#28
post #27

I'm using it as my day to day tui (with an scratch buffer). I have a index file where I store "shortcuts" to lot of fs places. Also I store action logs of whatever related to shell. For example, a file rabbit.md, it starts with the snippet to portforward the k8 service.. but I also have there some curls to clean or manage things. Files are more or less like a notebook (but everything can be executed or it's just a mi…

Can't

Re: A Tour of Acme (2012)

#29
post #28
post #27

I'm using it as my day to day tui (with an scratch buffer). I have a index file where I store "shortcuts" to lot of fs places. Also I store action logs of whatever related to shell. For example, a file rabbit.md, it starts with the snippet to portforward the k8 service.. but I also have there some curls to clean or manage things. Files are more or less like a notebook (but everything can be executed or it's just a mi…

Can't

Wait a bit, then you can edit the original.

Re: A Tour of Acme (2012)

#30
post #11

Earlier quoted context omitted.

It would not be infuriating if basic movements were possible using the keyboard, such as the classic left-down-up-right. As for key binding, it’s pretty easy to add that as external tools, thanks to the 9p interface.

Left and right already works. Up and down can't work, because acme was designed for proportional fonts, and many of us acme users use proportional fonts. Up and down are not well defined/not useful with proportional fonts.

Word processors use up/down keys to move up/down one line, at the same index, or the beginning or the end of the previous ‘ next line, if they exist. It can work.

Acme is opinionated and it’s a good thing if it fits its userbase. I am actually quite fond of many design decisions and maintain patches to workaround defaults that could drive me insane.

My personal feeling is negative on this matter, just as if I would need to reach to the mouse to delete a character. Up and down mapped to something like page up / page down feels as infuriating as those website that hijack scroll and back button.

Post reply on HN