8 ms·
A Tour of Acme (2012)
- jd3 6y agoi used acme to write my summer project at MITLL during my 2016 internship!
- deleted 6y ago[deleted]
- bitwize 6y agoAcme is an incredible, fascinating editor... that relies too much on rat wrestling to be useful to me. I really find it interesting how it takes advantage of Plan 9's aggressive Unix philosophy to provide functionality that would've been plugins or extensions in other editors as separate C programs or scripts. But having to use the mouse for everything just drives me nuts. It's easier for my fingers to acquire even Emacs keybindings than it is for me to acquire the mouse and point at something with any precision.
- zeveb 6y agoIt is definitely an interesting editor, and it has some neat ideas. But when I compare the masterpiece that is Acme on Plan 9 with the — frankly — cobbled-together heap that is Emacs … I would prefer to use Emacs, because Emacs does more for me than Acme on Plan 9. I think that says a lot about the fundamental power of dynamic languages in general and Lisp in particular. Plan 9 is in a lot of ways the zenith (or … heh … acme) of what C and Unix can do. It is awesome, it is wonderful, it is better in every technical way than Linux or true Unix. But it pales in comparison to the hacked-together incomplete Lisp machine that is Emacs. Imagine how much better off we would be with true Lisp machines on our desks and in our data centres! (in my ideal world this 21st-century Lisp machine would actually take a lot of ideas from Plan 9, and even some from Emacs)
- mhd 6y agoHave you had a look at Oberon? That's where Acme took most of its stuff from, and it being a fully integrated language, the interfaces between the parts are a lot cleaner. That's what Oberon, Smalltalk and even Emacs Lisp have that's not as good in Unix. Files full of plain text plus executables are a good foundation, but they're also quite unstructured and so is communication between them. Command line parameter parsing is an absolute nightmare. Whereas if you use a language directly, that's just function parameters and you're also not restricted to arrays of strings as your sole communication format. Not that Emacs is doing all that it can with that, as it's usually used as an intermediary between a high-falutin' language environment and text files.
- zeveb 6y ago> Have you had a look at Oberon? No, but it is on my list of things to look at when I get some free time. It sounds like another one of those tantalising might-have-beens. One of my retirement projects will be to write an OS as it should be, given what we have learned from decades of research and use. I imagine that I will never complete it, but it will give me something to do with my time!
- coliveira 6y ago> is the acme of what C and Unix can do No way, acme is just ONE direction for Unix and C. Vi is another direction, as well as a ton of other editors that were made for Unix and C.
- zeveb 6y agoI was making a pun: 'acme' means the highest point. But I also disagree with you: acme is strictly more powerful than vi, and vim is just a Greenspunned Emacs. Greenspun's Tenth Rule holds that 'any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp'; I contend that vim is an ad-hoc, informally-specified[0], bad-taste (seriously, have you ever looked at Vimscript?) reimplementation of Emacs's functionality. It does, however, have better keybindings than Emacs does by default. 0: outside of the POSIX stuff it gets from vi, that is
- coliveira 6y agoEmacs is built on Unix like vi and everything else. The fact that vi has a less elegant language doesn't affect me, because I don't see much value in adding extensions to the editor. What I need is a sane user interface, which vim provides.
- abjKT26nO8 6y agoThe original Emacs was written for Multics at a time when people outside of Bell Labs were largely unaware of the existence of Unix[1]. It also doesn't follow the Unix philosophy of making small CLI utilities composed with pipes. As I understand it (though I haven't used it), Acme is extended with external programs which communicate through pipes just like the traditional Unix utilities. [1]: https://www.jwz.org/doc/emacs-timeline.html https://www.jwz.org/doc/emacs-timeline.html
- coliveira 6y agoThe first version of Emacs was not made in lisp, instead it used TECO, a horrible programming editor/programming language.
- mhd 6y agoSometimes it just feels faster to think about and execute keyboard shortcuts, although the actual tests I've read about that seem to be from the early Macintosh age, which feels a bit like measuring anything by looking at your university's students...
- appleflaxen 6y agoI don't understand what you're saying. That evidence of keys being faster than the mouse are old? Why would the speed change over time? It's measuring the human, not the machines; and we are no faster.
- struxure 6y agoI think speed could change over time because our generation uses computer and common shortcuts from childhood. People who participated in the study could have been much less experienced users at that time and the shortcuts might have been less established and more varying from platform to platform
- mhd 6y agoThat's an assumption that needs to be verified. Sure, over a generation it's quite unlikely that evolution made for better mouse users. But we don't need to go that far. I mean, when you were testing during the development of the Mac, it was what, 1983? The mouse was a new thing, CUA didn't exist yet, I doubt that many vim and emacs users were part of the target group. I doubt that speed changes if you test the same demographic as back then, although it's harder to find people as unaccustomed to mice. In addition, has there ever been a test that includes mouse chords as used in Acme/Oberon?
- jxy 6y agoIt is convenient with a pointer or trackpad close to your thumb. Three buttons associated with such pointer or trackpad would be nice, but it would work much better with more buttons. Two or three buttons for each hand would be awesome.
- yiyus 6y agoI used acme for years with a laptop and no external mouse, just using the trackpad (and trackpoint). I never missed more buttons.
- jxy 6y agoSo currently control, option, and command are three buttons. I'm wondering if it would be better with the left and right sides functioning differently. You could get many more chording combinations.
- bitwize 6y agoSorry, but a trackpad or TrackPoint just makes things worse. It's much harder to precision-highlight a chunk of text with those than with the mouse (or my Logitech TrackMan).
- jeromenerf 6y agoIt 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.
- 4ad 6y agoLeft 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.
- anamexis 6y agoUp and down works just fine in just about every word processor out there, using proportional fonts.
- ardy42 6y ago> 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 coordinate on the next line.
- 4ad 6y agoAnd 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?
- ardy42 6y ago> 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.
- jrumbut 6y agoThat video gets off to a very slow start but by minute 10 or so some very interesting features are on display. Some that stuck out were using filenames plus regexes or line numbers to create links in text files, a text file that is also a shell session, things that have been done in vi/emacs but this editor is mouse-centric so it looks very different.
- jeromenerf 6y agoThe emphasis on "integrating development environment" is better experienced than what YouTube can render. I would add to your list: - acme is complemented by the plumber, which acts according to user defined rules when receiving a text selection (and context) - anything in acme is text, which is editable. Menu bar, buffers, shell window... the editable dumb terminal is great. - acme features a 9p fs "api" to access its state, and modify it, with any program. Go is first class citizen. Acme cannot be used though ssh in a terminal nor on a iPad though :)
- jordic 6y agoFor example I have a plumber rule where I link issue/123 with GitHub. When right mouse clicking the text the browser opens the issue page.
- floren 6y agoI 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 pleasant, too. I've been using Acme for about 15 years now, though. I dimly remember deep frustration when I was still learning it, but now that I'm used to it it's great. Here's a screenshot that shows my typical work layout, although it's a little "manufactured" to avoid including any proprietary code from work: https://i.imgur.com/Trg79NS.png https://i.imgur.com/Trg79NS.png
- haolez 6y agoI'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?
- floren 6y agoGo 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 https://news.ycombinator.com/item?id=23782439 and https://github.com/fhs/acme-lsp https://github.com/fhs/acme-lsp) but I don't use them... I'm old-fashioned.
- mjibson 6y agoI'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 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.
- tennineeight 6y agoThis looks pretty cool. But I'm having a hard time grasping concept of double-clicking for things like goto definition. Which makes me bring up this question, is acme useable with with 99% keyboard?
- mjibson 6y agoIt's a single click. There's no double clicks in acme. Did you watch the youtube video? Acme is about 5% usable with a keyboard.
- coliveira 6y agoAcme 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.
- jordic 6y agoVim is keyboard centric, acme is mostly mouse centric (just taste) I prefer the mouse :)
- jeromenerf 6y agoI have written quite a few hacks to replicate the Acme experience and it includes many tools outside the text editor part: terminal, shell, window manager ... Sure vim is a vastly superior text editor and acme is a better "integrating" text environment. Something as different as a Jupyter notebook. As for vim limits: poor mouse support, window management, plumber support, notebook like features (emacs org Babel), editable interface, jump to /path/to/file:/search pattern/ and other Sam expressions ...
- jordic 6y agoI'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..
- major505 6y agopretty cool. I think I could use thisas a pretty damn cool dotnet core code editor with some tweeks.
- Taniwha 6y agoQuite disappointed, I was expecting a tour of the ACME factory, purveyor of fine items to coyotes in the southern desert ....
- xashor 6y agoThere is a nice Tcl/Tk port of Acme: http://www.call-with-current-continuation.org/ma/ma.html http://www.call-with-current-continuation.org/ma/ma.html