10 ms·
A Tour of the Acme Editor
- luriel 14y agoAcme was also Dennis Ritchie's editor of choice, there is a picture of him and his working environment here: http://acme.cat-v.org http://acme.cat-v.org Also wish Russ had shown acme in a full screen setup, one of the most awesome things about acme is how well it manages having tons of windows, and you don't get a real feeling for it without seeing it done in a real full screen large environment.
- klrr 14y agoIsn't it annoying to program without syntax highlight? Or is it just some false rumor I've heard that acme doesn't have that feature... it looks a lot like wmii. I have to try it though, emacs and vim really sucks, too bloated for my taste, I'm still not that hardcore that I use ed for programming so I'm searching for an simple, minimal and correct alternative to emacs and vim....
- p9idf 14y agoI prefer no syntax highlighting because I wear glasses, and the resulting chromatic aberration makes it difficult to read.
- derleth 14y agoMy glasses are likely stronger than yours [1] and I've never had a problem with chromatic aberrations. Are you nearsighted, farsighted, or something else? [1] (How strong? Well, the current frames I'm wearing aren't the frames I initially chose; they're the frames I chose out of the set of frames that have the earpieces connected far enough back to allow them to fold closed given the thickness of the lenses I wear. The fact nobody warned me about this when I picked out my first set of frames indicates it likely doesn't happen a whole lot.)
- p9idf 14y agoI doubt the dispersion is caused by any specific properties of my lenses but rather by how my preferred desk arrangement makes me often look off the lens' axes. I could get contacts, but since reading programs is the only time it bothers me, and I otherwise like the rainbows, I just tell all my programs to show normal monochromatic text.
- Avshalom 14y agoIt varies from language to language I'm sure but in C there's enough syntax and sigils and what not that it's easy to parse visually without colorized hints. Just keep your code window small enough that it doesn't make your eyes glaze over.
- DeepDuh 14y agoI think you hit the nail on the head. I have no problems using C or Java without highlighting, but I wouldn't want to use Python or even Fortran without it, there's just not enough guidance for my taste.
- rsc 14y agoFor a number of years in the mid-1990s I switched between Borland's IDE when using DOS and vi (not vim) and later sam when using Unix. The fact that one world had highlighting and the other didn't have it had no effect on my productivity, at least not one in favor of highlighting. It never occurred to me that I should miss it on Unix or that it was annoying not to have it. They were just different tools that did different things. I know lots of people have strong feelings about this highlighting or that, but honestly, just try going without it for a week or two. I bet you'll find it is not that big a deal after all.
- klrr 14y agoOkey, thanks. I'll try it. If I feel that it ain't really for me I think I'll just write my own editor. :)
- deleted 14y ago[deleted]
- agumonkey 14y agoThe <$basename> ':' syntax for inner reference is great. As the OP describes it, hypertext for files. With per format program, possibly implicitely called based on extension, it could be extended to structural reference. /foo/bar.c:function[2]/statement[3] would call an ANSI C parser and return the substream enclosing the :/expr/ passed.
- 4ad 14y agoThat's how the plumber works: http://doc.cat-v.org/plan_9/4th_edition/papers/plumb http://doc.cat-v.org/plan_9/4th_edition/papers/plumb
- agumonkey 14y agoI was thinking of something at the os level, like the namespaces for windows.
- ori_b 14y agoThe plumber is effectively at the OS level. It's a userspace program, but it provides it services to the whole system at once. It's a global service that handles all plumbing between all programs. (Think "Android Intents". It's not too far off, conceptually.). Running, for example, plumb path/to/file.c:123 will send the file to whatever editor instance is set up to handle C files, and move the dot to line 123, from wherever it is invoked, be it the command line, the plumb bar.jpg will open bar.jpg in whatever image viewer is appropriate. More or less, you can think of the plumber as a system level "take this text and do an appropriate action with it" service, where you can set up whatever rules you want to do the plumbing. I don't think there's a good reason for this to live inside the OS, instead of simply running as a service. I don't think there's any extra functionality or elegance that would buy you.
- agumonkey 14y agoRight, I just meant something as global as the windows namespaces (I don't know how it is designed, kernel module for vfs or userspace)
- sprash 14y agoI really tried to use it but the disrupted work flow caused by the necessity for pixel perfect mouse aiming was headache inducing.
- Ygg2 14y agoHow can this be? In the example he managed to click on things to run commands by just clicking on the word, instead of selecting the entire line perfectly.
- deleted 14y ago[deleted]
- ibdknox 14y agoVery neat. It seems to me the really interesting bit here is the ability to add execution meaning to arbitrary bits of text. Can anyone who uses Acme comment on whether or not that is primarily what gives Acme its power? Is there something else key to it that isn't shown cleanly in the video? Interestingly, I also see Light Table as an "Integrating" Development Environment - something that utilizes all the amazing tools out there and strings them together into a very fluid workflow. I think we need to decouple the raw functionality of dev tools from the experience of their use, since it seems to me the latter is infinitely configurable and far too subjective to get "right" in all cases.
- jff 14y agoThe window management is a huge win for me, if you'll pardon the unintentional pun. It's so much simpler and fluid than in Emacs or Vim, at least for me. I just kind of throw windows around and resize them with an ease and speed that I was never able to achieve on Emacs. For instance, when using Emacs I may have as many as 4 windows open at a time, frequently switching buffers around with the clumsy C-x b switching (I know there are better switchers). With Acme, I'll have 30 windows open, most of them stacked up with just the tag lines visible until I need them. When I need one, I just mid-click on the little box and it expands. Execution of arbitrary text and loading/plumbing files/text with the mouse buttons is also really powerful for me, as you point out. I haven't finished watching the video yet (I'm at work), but in case he doesn't cover it, mouse chording is one of the most important capabilities in my mind. Makes copy-pasting significantly quicker.
- agumonkey 14y agoEmacs buffers ergonomy is quite low. I found some elisp to transpose buffers layout (pretty awesome). Some maximize / shadow code would be handy. It would be great to have one layout lib included in standard distro.
- mej10 14y agoHave you written up a summary of your experiences? I would love to see a comparison from an Emacs user that switched to Acme. So many of the concepts just seem painful to me at first glance (What? I have to use the mouse for things?) but I am sure that there is some merit to them, given that some of the greats used it. What OS do you use it on, and what is it like using the plumber with other (non-Plan 9) components of the system?
- gruseom 14y agoAcme focuses entirely on the idea of text as user interface Sounds a little like Oberon. I wonder how many people have used both.
- luriel 14y agoIf you read the acme[1] paper you will see Rob Pike explicitly acknowledges the influence of Oberon. This can be seen even more clearly in Acme's more direrect predecessor: help[2] [1]: http://doc.cat-v.org/plan_9/4th_edition/papers/acme/ http://doc.cat-v.org/plan_9/4th_edition/papers/acme/ [2]: http://doc.cat-v.org/plan_9/1st_edition/help/ http://doc.cat-v.org/plan_9/1st_edition/help/
- gruseom 14y agoThank you. I didn't know there was a direct influence. It's intriguing, because the two cultures share a similar design style: "aggressive use of a small number of abstractions" as Ken Thompson put it. I like that design style.
- srik 14y agoFrom the comments - Rob Pike (about 2 hours ago) : What Russ doesn't stress enough is the major thing Acme brought, beyond what it borrowed from Oberon etc.: the contextual right click. One button click gets what I want, be it the next appearance of a word, the line the compiler's complaining about, a man page, a PDF file, a UPS delivery notice, whatever. If the data's here, jump the mouse to the location (another thing Russ didn't point out) and highlight it. If it's not there, load it and jump to it. One click, context-driven. It's hard to appreciate how powerful and effective that is without trying it.
- mhd 14y agoI think the line of descent is Cedar -> Oberon -> Acme. My Oberon usage was quite a while ago (really liked the system, although it was a bit impractical). The big difference being the object-/module-oriented nature of it, as compared to acme's Unix text piping. Oberon's System 3 is a pretty decent example of transitioning from a text-based environment to a richer GUI, by the way.
- fallenapple 14y agoCan acme run without a graphics layer (e.g. X11) beyond VGA? Why does it need more than VGA text if it entirely text-based?
- rsc 14y ago> Can acme run without a graphics layer (e.g. X11) beyond VGA? It would not be hard to make the underlying graphics code work on top of linuxfb. I think a patch for that might be floating around. > Why does it need more than VGA text if it entirely text-based? Did you really watch the video? You can see that while acme is entirely about editing text, the UI itself is graphical.
- fallenapple 14y agoNot only have I watched the video, I've used acme. VGA text is everywhere. No need to switch to Linux (and patch it), switch to OSX, use hardware than runs Plan 9, or any other restrictions. No need to run X11. It just works.
- rsc 14y agoYou have a better imagination than I do, then. I don't see how you can make acme run in text mode and still be acme.
- mhd 14y agoHmm? Apart from the proportional text what would you lose? Even IBM line drawing characters should be able to simulate the scrollbars and dividing lines. Given a sufficiently high-resolution text mode, multiple columns should pose no problem, either. Granted, I see no real reason for it, as you might as well hook the existing code into e.g. Linux' framebuffer mode, instead of porting it to curses. It would run over ssh, of course, but so does acme with X forwarding, and the best general solution would probably involve merging sam's client/server mode with acme.
- jff 14y ago
- sgt 14y agoFrom the looks of it, everyone on HN is currently downloading Plan 9 from User Space. It's a 51MB download and the download speed is currently 3-4kB/sec!
- jff 14y agoQuoth Russ Cox: The swtch.com machine has a fairly slow connection. Better ways to get it: - hg clone https://code.google.com/p/plan9port https://code.google.com/p/plan9port plan9 - http://am.lcs.mit.edu/~rsc/plan9port.tgz http://am.lcs.mit.edu/~rsc/plan9port.tgz I changed the link on the home page to point to that tgz instead.
- bbbertie 14y agoIt would be really neat to integrate the plumber into one's usual development environment, be it vim or emacs or whatever. I'd like to do this with vim, but I thought I'd ask first: Does anyone here already do this (with plan 9 from user space)? Any hang-ups I should be prepared for?
- sleepydog 14y agoAll you need is some sort of remote control for your tool -- for example, a way to open a file in an existing emacs instance. plumb is just a command like any other that provides global ipc between all your programs, plumb "path/too/foo.c" runs the argument string through the gauntlet of plumbing rules. It's up to you to edit the plumbing rules to send the file to your editor. Before I lost my hard drive, I had some udev rules setup that used the plumber to post notifications to a 9term window on my desktop when a USB drive was mounted. It's really dead simple, really makes you wonder about the proliferation of complex messaging systems like dbus.
- pdw 14y agoConceptually I love Acme, but the three-button mouse thing has turned out to be a real problem for me. I don't think I can work without a scroll mouse, and I've never found a mouse that has both three real buttons and a scroll wheel. Can anybody recommend one?
- awood 14y agoThe scroll wheel can be clicked as a middle mouse button on most mice.
- jff 14y agoYou can click the scroll wheel, although I find that causes hand pain for me. Another option would be http://www.amazon.com/IBM-3-Button-Scrollpoint-Optical-Mouse/dp/B00007DTC6 http://www.amazon.com/IBM-3-Button-Scrollpoint-Optical-Mouse... but in my opinion the scrollpoint kinda sucks.
- thebigshane 14y agoI think the Evoluent mouse gets recommended by Acme users. http://www.evoluent.com/ http://www.evoluent.com/ http://www.amazon.com/Evoluent-Vertical-Mouse-Right-Handed/dp/B00427TAIK http://www.amazon.com/Evoluent-Vertical-Mouse-Right-Handed/d... http://russ.cox.usesthis.com http://russ.cox.usesthis.com -- `rsc`, do you still use this setup?
- rsc 14y ago
- bobak 14y agosome editable shell interaction in http://xiki.org/ http://xiki.org/ & http://ipython.org/ http://ipython.org/
- cm3 14y agoHow do you indent with spaces instead of tabs?
- jff 14y agoExecute the command "Indent on" to turn auto-indent on for the current window. Acme will then automatically insert the same indentation as the previous line for every new line you make. I just tested, it works with tabs and spaces. (But don't use spaces :-)
- cm3 14y agoThanks I'll try that. Am I able to make acme source that from a personal customization script on startup?
- jff 14y agoNo, we don't support startup scripts in Acme (you could implement it of course, the code is simple), but you can use the "Dump" command to take a snapshot of your current Acme layout. I'm not sure if that will preserve the status of Indent, but it may at least help you.
- rsc 14y agoNo, but the indentation can be turned on globally using the -a flag. I always run 'acme -a'.
- cm3 14y agoRuss do you prepend plan9port/bin to PATH when using acme as a way to prefer tools which do not make use of escape sequences for coloring term output? Or do you disable color in tools like mercurial?
- rsc 14y agoNo, but I do export TERM=dumb and then complain to authors of programs that still emit escape sequences.
- goldfeld 14y agoWhat's the point in an all-text user interface if you still use the mouse?
- jff 14y agoSimply because text is entered via the keyboard does not mean that the keyboard is the only way to manipulate text.
- djacobs 14y agoI like that Acme has such a radically different paradigm from vi, but I can't imagine that pixel-dependent mouse interactions could ever beat vi for text manipulation. (It takes me a maximum of about 4 keystrokes to get anywhere I want in a vi buffer.)
- otoburb 14y agoGreat screencast. I tried to read through the Acme guide before but never quite got the gist of it. This reminds me of the Starcraft interface in that if you have excellent mouse twitch reflexes it seems you can more easily induce a sense of flow (whether you're productive or not is a different matter; see APM spam[1]). Definitely not an environment to work in if you have cats/kids that like to fiddle with your mouse when you're in the kitchen or taking a bio-break. [1] http://en.wikipedia.org/wiki/Actions_per_minute http://en.wikipedia.org/wiki/Actions_per_minute
- rjzzleep 14y agook, looks interesting. i still like my vim though as the editor part. so to summarize, we'd need an editable terminal, like the one acme provides and a plumber that works with that termal, put it all in a tiling wm, and we're there, right? in my opinion, in a way, the behavior is already very similar to what everyone with tiling wms trys to achieve. but maybe i'm missing something crucial
- mhd 14y agoI fiddled with acme a few times over the years, but never got around using it for a real project (I did use sam for quite a while about 10 years ago). I'd like to see the "advanced" version of this screencast, i.e. someone doing a small programming project with it, coding, debugging etc. And preferable not a C/Go unix CLI/server, where you probably have decent cooling and can stay within acme all the time. The trivial blog web app example would be interesting, maybe in Java, Ruby, Perl, Python etc., so that it's easier to compare this with IDEs or vim/emacs.
- bokchoi 14y agoEvergreen is an Acme-inspired editor with a similar philosophy: http://software.jessies.org/evergreen/ http://software.jessies.org/evergreen/