The Emacs Operating System

Well, Emacs can’t really be an operating system because it doesn’t implement things like file systems, device drivers, and a TCP/IP stack. When we joke that Emacs is an OS, what we really mean is that it can replace many or most of the user-mode system utilities.

Remember that experiment that ran Emacs alone on a Linux kernel? That’s pretty close to Emacs as an OS but, really, who would want to work in such an environment? It was an interesting and revealing experiment but not really practical.

Now, Howard Abrams has come close to a practical Emacs OS. He configured Emacs to act as a window manager. Almost all of the action takes place in Emacs including shells and, through eww, most browser activity. For the occasional Web page that requires JavaScript or otherwise doesn’t render well in eww, Abrams arranged to pop up a Chrome page. Take a look at Abrams’ post for the details.

Although the system is clearly usable and useful, it’s not one that I’d want to live in. To be fair, it’s not one that Abrams lives in either. It’s the setup he uses for a virtual machine running on his work laptop that he uses for personal work. That way, he keeps work and personal computing strictly segregated. It’s a nice solution for that situation and one that you might want to explore if you have a similar problem.

I’m really comfortable in my highly customized laptop environment and so in a similar situation I’d shove my laptop into my backpack and take it with me. I will say, though, that as I move more and more of my work into Emacs, a setup like Abrams’ might be good enough for occasional work like personnel computing at work.

Posted in General | Tagged | Leave a comment

Sacha Chats with Steve Purcell

Sacha Chua has held another excellent Emacs chat. This time, it’s with Steve Purcell. I’ve written about Purcell a few times and I’ve certainly stolen a ton of Emacs code from him. He’s got his fingers in an incredible number of Emacs projects and helps run the MELPA repository.

Like many of us, Purcell came to Emacs from VIM. He was attracted to its extensibility and has been busy extending it ever since. He’s an interesting guy and his chat with Chua was very entertaining. As usual, Chua and Purcell explore his Emacs configuration and some of his work flows.

I’ve already installed two of the packages they discussed. The first is whole-line-or-region, a package that arranges for some of the commands that work on regions to work on the current line if no region is defined. It’s more useful than you might think as his demonstration of it in the video shows.

The other package is ibuffer-vc that allows you to group the entries in an ibuffer listing by the repository they inhabit. Then you can act on them as a group. For example, if you are working on several files in a repository, you can delete their buffers all at once when you’re done. It’s very handy.

As many of you know, I have several pieces of Elisp that run certain applications, such as Eshell, in full screen and then restores the window configuration when I’m done. Purcell has a package that generalizes this capability to make it easy to run any Emacs application in full screen. I didn’t install it because I’ve already solved the problem for the cases I care about but if you think you might like to run some apps in full screen, you should check out the fullframe package in MELPA.

UPDATE: fullscreen → fullframe

Posted in General | Tagged | Leave a comment

Another Convert

Picking them off one by one…

Posted in General | Tagged , | Leave a comment

Refactoring CamelCase

If, like me, you consider CamelCase symbol names to be the mark of the beast, Arne Babenhauserheide has you covered. He recently found himself having to convert names like CamelCase to camel_case. He found some code on the Emacs Wiki, added some glue to make it interactive, and used a keyboard macro to convert everything.

If you follow the link to the Wiki page, you’ll discover that there’s also code to convert to

  • CamelCaseSymbols
  • underscored_symbols
  • dashed-symbols
  • colonized::symbols

The code is simple enough that you can easily add some other special format that you might need.

Again, Emacs letting you have it your way.

Posted in General | Tagged | 3 Comments

Listing File Sizes in dired

Like many Emacs users, I do almost all my file manipulation (rm, mv, cp, etc.) in dired. It’s just a lot easier to have a listing of the directory in front of you and mark the files you want to act on. That’s not even mentioning writable dired, a thing of beauty in itself.

Over at (or emacs, abo abo gives us a bit of Elisp that let’s us mark some files and run the Unix du on them. He maps his function to z in the dired-mode-map so all we need to do is mark the files and type 【z】 to get the sizes. It’s an easy enhancement but it gives us one less reason to leave Emacs (or even invoke a shell) to get information about our files. Very nice.

Posted in General | Tagged | Leave a comment

A Cross Reference for the Figures in CLHS

Jean-Philippe Paradis has added a cross reference to the figures in the Common Lisp HyperSpec to his Common Lisp Notes & Tips.

Posted in Programming | Tagged , | Leave a comment

Empty Your Cup

Some sage advice from Sacha:

Posted in General | Tagged | Leave a comment

Sleepwalking into Tyranny

Nic Ferrier has a few words of his own on government snooping. This time from a British point of view.

Posted in General | Tagged | Leave a comment

Surprise!

An internal CIA board has found that its officers had done nothing wrong by breaking into the computers of senate staffers who were investigating claims of CIA torture. If you’re surprised by this you haven’t been paying attention. The government has made clear that it reserves the right to spy on anyone for any reason. Notice that there are no terrorists here. The only thing the CIA was trying to keep safe is the CIA.

So now we know. No act, no matter how egregious, will be punished. Lie to Congress, nothing happens to the liar. Break into the computers of a co-equal branch of government, nothing happens. This was not about investigating a crime, which the CIA is not entitled to do in any event, merely about protecting the CIA from an investigation into its activities.

Remember all this the next time the government tells you not to worry; that the CIA and NSA are under strict supervision and will never abuse their capabilities. They have and they will. Sadly, recent events in France and elsewhere make it unlikely that we will ever be able to get these agencies under control. Indeed, the very best outcome we can hope for is that the United States and other countries will refuse to jump on David Cameron’s bandwagon and start outlawing encryption. Of course, that may be too much to ask.

Posted in General | Tagged | Leave a comment

January Quicklisp

The January Quicklisp distribution is out. Upgrade as usual with

(ql:update-dist "quicklisp")

There are 21 new packages and a bunch of updates so you should upgrade the next time you have your Lisp open. It only takes a few seconds.

Posted in Programming | Tagged , | Leave a comment