For the longest time Prelude
included the function prelude-goto-symbol (bound to C-c i).
It basically allowed you to jump to any definition in the current source file
using imenu behind the curtains.
Recently I’ve found an even better option - the package
imenu-anywhere. It works in a pretty similar
manner but gives you the ability to jump to any definition in any currently open buffer.
That’s quite handy and it greatly reduces the need to use something like etags.
As an added bonus - imenu-anywhere features helm integration.
This is a very handy package and I encourage you to give it a go!
P.S. Prelude users should simply upgrade to the latest version of
Prelude (it already uses it).
From time to time people ask me about my personal Emacs
configuration. Other just assume that I use
Prelude. For a very long time my
personal configuration was pretty similar to Prelude - in a way it was
a staging ground for things to go into Prelude eventually (although
changes would travel both ways when Prelude users suggest some cool
Recently I’ve decided that in the future I want to do a few things with Prelude:
extract as much functionality from it as possible into reusable
packages (e.g. super-save
Recently I’ve bought a Windows ultrabook (wanted something as light as
MacBook Air, but more powerful and versatile) and I’m doing most of my
work there in a Xubuntu VM. The first thing I did while setting up Xubuntu
was to figure out how to do the aforementioned remapping.
In my original post some people suggested the tool
xcape, so I took a look at it. The
tool can certainly use some documentation improvements (and pre-built
packages), but it gets the job done. After you’ve installed it you
just need to add the following to your login shell’s init file
(e.g. .bash_profile) and you’re in business:
I’d often blog about some useful utility functions here. Pretty much
all of them get included in
Emacs Prelude, but I’ve decided I can do one better and extract those of
them which are most useful/universal into a separate package.
This package is crux - a
Collection of Ridiculously Useful eXtensions for
You can install it from MELPA and MELPA Stable. Once this is done you
just have to pick keybindings for the commands shipped with
crux. I’ve suggested some keybindings
here. And here’s a
small configuration snippet showing how to actually bind keys to some
of crux’s commands:
crux also ships with some handy advises that can enhance the operation of existing commands.
For instance - you can use crux-with-region-or-buffer to make a
command acting normally on a region to operate on the entire buffer in
the absense of a region. Here are a few examples you can stuff in your
People often ask how am I navigating efficiently Emacs windows and
buffers. I have the feeling they expect me to share with them some
secrets that would turbo-charge common commands like C-s, M-f,
C-x o, etc. I don’t, however, use those commands that much. Ever
since I saw that vim’s
EasyMotion has been
ported to Emacs, I’ve been using that port - namely
Basically, it allows you to navigate to every visible portion of your
Emacs (buffers & windows) with only a handful of keystrokes (usually
one two activate it and one or two to get where you want to go). You
can see it in action in this
excellent video. ace-jump served
me well for years, but I’ve had a few gripes with it that were never
addressed (multi-char targets, CamelCase support, etc). I would have
implemented those myself, if the project was maintained at all, but
alas - that’s not the case. Seems I wasn’t the only one who was
frustrated with ace-jump, as the prolific
Oleh Krehel reimplemented it pretty much from
scratch for the purposes of his excellent
ace-window library. Once I
got wind of this, I managed to persuade Oleh to start distributing his
rewrite as a standalone project, which he dubbed
Avy features everything ace-jump does and more. Apart from the
many extra features, its codebase is way cleaner and readable and Oleh
is a fantastic and very responsive maintainer. So, as far as I’m
concerned ace-jump is now a dead project and pretty much everyone
who’s using it should try out avy instead. Their usage and interface
are pretty similar, so the learning curve is non-existing. By the way,
here’s avy in action:
And what about my usage of avy? Nothing fancy here - I just bind the
commands I consider most important to handy keystrokes.
avy-goto-word-or-subword-1 is aware of CamelCase words and I do a
lot of programming in languages that use those extensively.
avy has one more thing going for it - it’s part of the default Emacs
package repo GNU ELPA, which means
that you can install it right away without having to setup any
third-party repositories (which you’ll probably need sooner or later).
JDEE (Java Development
Environment for Emacs) used to be best way to develop Java apps in
Emacs a while back. It offered a ton of
like smart auto-completion and a debugger. Unfortunately at some point
the development slowed down significantly and the project went in a
catatonic state. There was pretty much no activity for years in the
official SourceForge repo and there was also no support for features
introduced in Java 5+.
Recently, however, the project migrated to
GitHub and it’s now way easier
to get involved. Seems that some people have already started work on
updating JDEE to support modern JDKs and modern Emacs functionality.
That’s a really exciting project, as Java support has traditionally
been a weakness of Emacs and I’m writing this post with the hope that
more people will help make JDEE great again.
So what are you waiting for? If you’re into Java and friends (Scala,
Clojure, Groovy, etc), check out the new official repo and let’s get
this party started!
People who have been using Emacs for a while often develop the desire
to learn Emacs Lisp, so they can customize Emacs more extensively,
develop extra packages and create the ultimate editing experience,
uniquely tailored to their needs & preferences.
There are a ton of Emacs Lisp resources our there, but most people
generally need only one - the official
Emacs Lisp manual. It’s
bundled with Emacs and you can start reading right away by pressing
C-h i m Elisp RET. If you’re relatively new to programming in
general you might also check out the
Introduction to Emacs Lisp
(C-h i m Emacs Lisp Intro RET), before diving into the manual.
There are also plenty of Emacs Lisp tutorials online, but I’d advise
against using them, as most of them have never been updated after
originally published and Emacs Lisp keeps evolving all the time
(albeit not as fast as I would have liked it to). That being said,
Learn Emacs Lisp in 15 minutes
is a short and sweet intro to the language. You can find more online
educational resources on the
Trust me on this - any time invested in learning Emacs Lisp will be
time well spent!