↓ Skip to Content Start of content

Emacs Extensions

This is a list of Emacs extensions that I find useful in my daily work. They're mostly for software development, but there a couple for writers / bloggers as well.

Everyone

org-mode
Org mode gets a category all to itself, because it's just that useful. Keep notes, manage TODO lists, create a daily schedule, track your time and write portable documents (like this one).
helm
Much faster navigation around menus (such as M-x). Integrates nicely with other packages like projectile.
projectile
Project file navigation and management tools. Makes it easier to navigate around projects.
expand-region
Incrementally increase a region by semantic units. Very useful when coding, as you can quickly select an entire block.
use-package

Although it doesn't add any new modes, it makes maintaining your Emacs initialization files much more pleasant as all the package init and config functionality can be kept in the same place.

As a bonus feature it can also speed up the Emacs launch time considerably, as it loads packages on demand.

which-key

Displays key bindings that can be used after your current command. For example, if you have something bound to C-c o r and hit just C-c o, a buffer containing a list of next keys (including r) will appear.

It's really helpful if you forget key bindings or you're trying out a new package and can't remember all of the new commands.

For Writers

flyspell
Spell checking that can be used inside other modes, such as org-mode or markdown-mode. It can even be configured to check the spelling of comments and strings within source code. The default keyboard shortcuts are a little uncomfortable (ALT + SHIFT + $ to suggest corrections), but otherwise it does the job well.
markdown-mode
Edit Markdown files from within Emacs. I prefer org-mode as it has some nice keyboard shortcuts for reorganising files, but Markdown is more widely used for README files etc.
darkroom-mode
An Emacs version of the popular "Darkroom" app. Allows you specify a custom set of dimensions for fullscreen text editing. Great for removing distractions.
mediawiki-mode
Takes a little bit of effort to get it all working, but makes editing online wikis much easier.

For Bloggers

org2blog
Lets you write your blog posts using org-mode formatting, and then publish them using xml-rpc. Works great with WordPress, but supports other popular blogging platforms as well.

For Developers

General Tools

autocomplete-mode
Add auto-complete functionality to any mode. It's not as powerful as Visual Studio or similar IDE's, but it gets the job done.
cedet
Adds a whole bunch of programming-specific tools to Emacs.
ecb
The Emacs Code Browser. Makes navigating software projects much easier. Adds a sidebar with a directory browser, file list as constructs within the current buffer.
hl-todo
Simple minor mode that highlights TODO and similar keywords in comments and strings. Has functionality to move to previous and next items. Can also run occur to show all TODO items in the current buffer.
YASnippet
Snippets and templates that can be quickly inserted into the current file. Very helpful for speeding up common tasks, such as building classes or creating tests for Behaviour Driven Development (using feature-mode).

Language Specific

actionscript-mode
Syntax highlighting for ActionScript files.
apache-mode
Syntax highlighting for Apache configuration files.
coffee-mode
Syntax highlighting for CoffeeScript files.
feature-mode
Mode for editing Cucumber text stories, but can also be used with other tools such as Behat (for PHP).
haml-mode
Edit haml files.
php-mode
Edit PHP files. Can be integrated with flymake to display syntax errors inline (much like Flyspell).
rinari
Rails and Ruby editing. Hasn't been updated in a long time.
rhtml-mode
Edit rhtml files without using a multi-mode extension.
sass-mode
Mode for editing Sass stylesheets.
scss-mode
As above, but supports the scss format for Sass stylesheets.
toggle
Jump between controllers and views (good for Rails development).
web-mode
Excellent mode for editing just about any kind of HTML. Works great with PHP and Rails, as well as other template engines (Twig, Liquid, Django). Also supports nifty features like collapsing elements and renaming opening/closing tags at the same time.