Snippets and other bits

Random snippets that I've found useful and might be useful to others.

Keeping backups of every edited file

I recently ran rm -rf * in my home directory, which apart from being very foolish, reminded me that I have backups of basically every file I’ve edited:

Delta for Git & Magit

I was just introduced to a tool called Delta which is a pager you can use with Git to give you Github-esque diffs.

Save all mu4e attachments

To save all attachments from an mu4e email to a particular directory, you can use this handy snippet for older versions of the client. For more modern mu4e versions, use the elisp by @sj30.

condev - like cond but different

Hopefully the docstring explains this well enough:

Export an environment variable to Emacs

Handy function to export environment variables to Emacs from the command line:

Using yadm via magit

Yadm’s an amazing dotfile manager that’s basically a thin wrapper around git and a bare repo. With it being a bare repo, you’ll not be able to manage it directly with Magit so here’s a really smart tip I found that will let you access it via Tramp:

Load a random emacs theme on startup

To load a random emacs theme on startup (I restart daily) you can use the following snippet. Just add your theme as a new function to funs. If you don’t restart often, you could add a timer to change themes while you’re going.

Start evil substitution on selection

Here’s a little evil operator that will fill in the first part of an evil/ex substitution with the region / visual / object. This allows you to replace objects quickly without having to type out the ex command in full.

Search specific extensions with counsel-projectile-rg

If you’re in a monorepo searching through stuff can be a bit chaotic. Here’s a way of narrowing down to specific file extensions with counsel-projectile-rg:

Using the CIDER debugger in Evil

When using evil and CIDER together, you might find that rebinding the keys required to control the debugger is a pain. Luckily, you don’t actually have to, you can just enter insert mode instead:

Keeping a constant record of text written

If ever I’m writing a chunk of text that will change a lot over time, I like to use this script to make sure I have a constant record of what has changed over time. Combined with your equivelent of git-timemachine, it’s really handy for looking back at progression or finding where you might have gone wrong. 🙂

Widescreen emacs and vertical splits

On a widescreen monitor, especially the really wide ones, it’s nice to have only vertical splits. This snippet will give bias to vertical splits:

Having Smartparens commands work with Evil-mc

As described here, when using evil-mc, it’s very frustrating when a Smartparens command works on only the first of the multiple cursors. Here’s how to fix that: