Endless Parentheses

Concise ramblings on Emacs productivity.

Implementing comment-line

Why we don't have a comment/uncomment-line function is beyond me. While we fix that, might as well make it as complete as possible. [...]

New in Emacs 25.1: Easily install multifile package from a directory

When developing a package, package-install-from-buffer is a very useful command. It installs the current buffer as an Elpa package, so you can test installation, byte-compilation, autoloading, and activation, all in one fell swoop. If your package has multiple files, however, it gets a little more complicated. [...]

Be a 4clojure hero with Emacs

This year I made it my resolution to learn clojure. After reading through the unexpectedly engaging romance that is Clojure for the Brave and True, it was time to boldly venture through the dungeons of 4clojure. Sword in hand, I install 4clojure.el and start hacking, but I felt the interface could use some improvements. [...]

Automate a package's group and version number

One month ago, I officially announced Names, a package that writes your elisp namespaces for you. Today, I go into other ways in which Names can help. Think of these as delicious Easter eggs hidden inside the shabby wood cabin that is the define-namespace macro (which is built on top of an underground Machiavellic engine of infinite cogs and spikes, but that's beyond the point). [...]

What's a defconst and why you should use it

Any Emacs package developer worth their salt knows the difference between a defvar and defcustom. These two comprise the vast majority of variable definitions in Elisp code, but there's a third child, the defconst. While regular variables and customizable variables only really differ when it comes to Emacs' customize system, constants differ in loading logic in a subtle but important way. [...]

Asynchronous package upgrades with Paradox

Two months ago, I listed a few big things I was looking forward to for Emacs 25. I knew I was being unrealistically optimistic to mention concurrency in Elisp, but there was a point behind it. It bothered me a lot that I had to get up and go for a coffee whenever I upgraded more than a few packages, and asynchronous upgrades were the only way I saw of fixing that. This Christmas, as promised and well ahead of schedule, I've implemented asynchronous execution into Paradox, thanks to the fantastic async library. [...]

Where do YOU bind expand-region?

Expand region is one of those packages that deserves to be built-in. It's so simple and useful it makes Emacs worthwhile all by itself. Fundamentally, the entire package boils down to a single command, expand-region, which incrementally increases the selected region by semantic units. So deciding where to bind this command is an important decision. [...]

New on Elpa and in Emacs 25.1: let-alist

let-alist is the best thing to happen to associative lists since the invention of the cons cell. This little macro lets you easily access the contents of an alist, concisely and efficiently, without having to specify them preemptively. It comes built-in with 25.1, and is also available on GNU Elpa for older Emacsen. [...]

Introducing Names: practical namespaces for Emacs-Lisp

A little over a month ago, I released a package called Names, designed for mitigating Emacs' namespace issue. Before I even had a chance to announced it, it made a bit of a splash on r/emacs, which I've taken to mean that people are interested. I've been holding off on this post until I had a couple of Names-using packages under my belt, so I could actually speak from experience as opposed to expectation, and that's finally the case. [...]

Tab Completion for Prose

When writing prose, I find auto-completion to be more of a distraction then an aid. However, my field of research involves much repetition of some annoyingly long words, such as “thermalization” or “distinguishability”. [...]

New in Emacs 25.1: Better Rectangles

Continuing on this cheerful series, we now go into rectangles. The release notes are pretty self-explanatory on this one, so a few gifs should be enough to convey what's needed. [...]

Debugging Elisp Part 2: Advanced topics

Now that the previous post has leveled the playing field, we go into slightly more advanced debugging features. First we go deeper into Edebug navigation commands, and then we discuss when Edebug just won't do and explain the power of Emacs' built-in debugger. [...]

Debugging Elisp Part 1: Earn your independence

Running into errors is not only a consequence of tinkering with your editor, it is the only road to graduating in Emacs. Therefore, it stands to reason that Emacs would contain the most impressive debugging utilities know to mankind, Edebug. [...]

Emacs Rocks Again!

The emacs community received some fantastic news yesterday. [...]

Inserting the kbd tag in interactively

It doesn't take a psychic to guess the <kbd> tag will be useful when writing about Emacs. When Jorge Navarro asked for the best way to do this, over at Emacs.SE, I thought I'd share the snippet I use. [...]