An easy-kill

A bit of Terminology

Emacs has its own terminology for what’s commonly known as copying, pasting and cutting - namely “saving”, “yanking” and “killing”.1

On top of this, Emacs has its own internal clipboard called the kill-ring. Items that you save or kill end up there and yanking pulls items out of there.

The kill-ring is much more than a typical clipboard, but that’s a subject for an entire post itself.

More …

Back in Black

After 3 years of “waiting” for Octopress 31, I’ve decided I waited long enough. Today I (spontaneously) migrated my personal blog and Emacs Redux to a vanilla Jekyll setup and I tweaked a bit their appearance. I’m reasonably pleased with the results and I finally don’t have any excuses not to write.2

I wrote about my experience moving away from Octopress here. If only I had done this a couple of years ago…

I realized recently that it has been over 10 years since my first blog post.3 I’ve started my humble writing “career” with Wordpress, then switched to Octopress, and now here we are. One thing never really changed, though - the quality of my writing. It was always abysmally bad, as were many of the topics I wrote on. It’s really fun to look back on all of this - I was reading some of my old articles, in the process of migrating the personal blog to Jekyll, and I couldn’t believe some of the things I wrote. I hope this means I’m getting wiser with age…

I also realized that this year marked Emacs Redux’s fifth birthday!4 As usual I didn’t manage to achieve the objective I’ve set out of myself when I created it - namely produce 10-20 articles per year for many years to come. The first couple of years were pretty good for the blog, but then a combination of work and personal challenges impacted significantly both my open-source work and my writing.

Anyways, lately I’ve had this burning desire to share so many thoughts and that really got me excited about writing. Let’s see if I’ll do better this time around, or I’ll simply fail one more time…

P.S. In the mean time I’ve started another blog, called Meta Redux. I plan to do most of my (serious and creative) writing there, so you might want to check it out.

super-save 0.3

After a long period of no development activity1, super-save gets an update today!

The latest 0.3 version of your favourite auto-saving library makes it easier to customize the hook triggers (see super-save-hook-triggers) and adds an option to ignore remote (TRAMP) files (see super-save-remote-files).

As a refresher - super-save will save modified files automatically on certain command (e.g. switch-to-buffer) and hook triggers (e.g. focus-out-hook).

Both of those are configurable via super-save-triggers and (starting with 0.3) super-save-hook-triggers. Here are a couple of examples:

;; add integration with ace-window
(add-to-list 'super-save-triggers 'ace-window)

;; save on find-file
(add-to-list 'super-save-hook-triggers 'find-file-hook)

You can now turn off super-save for remote files like this:

(setq super-save-remote-files nil)

It seems that now super-save is beyond perfect, so don’t expect the next release any time soon!

P.S. super-save was extracted from Prelude, but for some reason I actually forgot to add it to Prelude. Today that changes as well!

  1. Mostly because it was perfect from the start. 

Projectile goes Turbo

For a while one of the biggest complaints people had about Projectile was that the alien indexing wasn’t fast enough (especially on big projects). The reason for the (relatively) bad performance was pretty simple - even though Projectile would normally obtain the list of project files pretty fast (e.g. by using git ls-files) it always did some post-processing of the results (e.g. filtering, sorting, etc), which is a very slow operation in Elisp on a big dataset.

Today I’ve added a new indexing method that simply dispenses with all of the post-processing and gives you the raw power you always craved for. It’s called turbo-alien (yeah, yeah - naming is hard!) and it’s going to be the default indexing method going forward (starting with Projectile 1.1 which should be released pretty soon).

You can read a bit more about it in Projectile’s manual.

If you find yourself missing Projectile’s old behaviour just add the following to your config:

(setq projectile-indexing-method 'alien)

The old tried and true alien method is still around, it’s just no longer the default.

P.S. I encourage all of you to help out with some of the open tickets marked with “Help Wanted” or “Good First Issue” here. I’m trying to clean-up shop after a long period of stagnation and I can certainly use some help!

P.P.S. The recent 1.0 release was just a precursor to some bigger changes I had planned to do for quite a while. Stay tuned for more updates!

Update Shortly after writing this post I’ve reconsidered the turbo-alien naming and I opted to rename the old alien method to hybrid (as it was truly a hybrid of native and alien indexing), and to change the name of turbo-alien to simply alien. Naming is hard!

A Crazy Productivity Boost: Remapping Return to Control (2017 Edition)

Back in 2013 I wrote about my favourite productivity boost in Emacs, namely remapping Return to Control, which in combination with the classic remapping of CapsLock to Control makes it really easy to get a grip on Emacs’s obsession with the Control key.

In the original article I suggested to OS X (now macOS) users the tool KeyRemap4MacBook, which was eventually renamed to Karabiner. Unfortunately this tool stopped working in macOS Sierra, due to some internal kernel architecture changes.

That was pretty painful for me as it meant that on my old MacBook I couldn’t upgrade to the newest macOS editions and on my new MacBook I couldn’t type properly in Emacs (as it came with Sierra pre-installed)… Bummer!

Fortunately 2 years later this is finally solved - the Karabiner team rewrote Karabiner from scratch for newer macOS releases and recently added my dream feature to the new Karabiner Elements. Unlike in the past though, this remapping is not actually bundled with Karabiner by default, so you have to download and enable it manually from here.

That’s actually even better than what I had originally suggested, as here it’s also suggested to use CapsLock with a dual purpose as well - Control when held down and Escape otherwise. I have no idea how this never came to my mind, but it’s truly epic! A crazy productivity boost just got even crazier!