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 justC-c o
, a buffer containing a list of next keys (includingr
) 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 runoccur
to show allTODO
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.