/awesome-emacs

A community driven list of useful Emacs packages, libraries and others.

Primary LanguageEmacs Lisp

Awesome Emacs

A community driven list of useful Emacs packages, libraries and others.

Most of the following packages are available in MELPA. We recommend installing packages via it.

Table of Contents

Interface Enhancement

  • IDO - [built-in] Interactively do things with buffers and files.
  • Helm - A powerful completion and selection narrowing framework.
  • smex - A smart M-x enhancement for Emacs.
  • tabbar - Display a tab bar in the header line.
  • Evil - An e xtensible vi l ayer: manipulate Emacs with Vi key binding.
  • sublimity - smooth-scrolling, minimap inspired by the sublime editor.
  • winner - [built-in] “Undo”(and “redo”) changes in the window configuration with the key commands.
  • ElScreen - Utility for multiple screens.

File Manager

  • Dired - [built-in] Dir ectory Ed itor. A customizable great file manager.
  • Dired+ - Functional & interface extensions for dired.
  • NeoTree - A emacs tree plugin like NERD tree for Vim.
  • Sr Speedbar - Same frame speedbar.
  • Direx - directory tree explorer

Navigation

  • windmove - [built-in] Tired with C-x o? Now you can use shift+arrows to jump between windows.
  • Ace jump - A quick cursor jump mode.
  • goto-last-change - Move point through buffer-undo-list positions.
  • Helm-swoop - Efficiently jump between matched string/lines.
  • anzu - displays current match and total matches.
  • imenu - [built-in] Menus for accessing locations in documents.
  • imenu-anywhere - IDO/Helm imenu tag selection across all buffers with the same mode.
  • Minimap - A SublimeText-style minimap sidebar.

Project management

  • Projectile - Project Interaction Library for Emacs.
  • Prodigy - Manage external services from within Emacs.
  • Fiplr - An Emacs Fuzzy Find in Project Package.
  • Project-Explorer - a tree project explorer (integrates with projectile)

Programming

  • CEDET - [built-in] an advanced development environment in Emacs.
  • Xrefactory - A refactoring browser for Emacs.
  • YASnippets - Template system.
  • Helm-dash - Browse Dash docsets via Helm interface.
  • evil-nerd-commenter - Comment/uncomment lines efficiently. Like Nerd Commenter in Vim. This program can be used independently without evil-mode.
  • SmartParens - Deals with parens pairs and tries to be smart about it
  • indent-guide - Show vertical lines to guide indentation

Completion

  • Auto-Completion - An intelligent auto-completion extension with great interface.
  • Company - A text completion framework.
  • flx - Fuzzy matching for Emacs à la Sublime Text.
  • abbrev - [built-in] Abbreviation expander

Code Folding

  • hideshow - [built-in] Folding regions by balanced-expression code.
    • hideshowvis - Based on hideshow, just display its nodes on fringe.

Error Checking

  • FlyMake - [built-in] on-the-fly syntax checks on files using external tools.
  • Flycheck - modern on-the-fly syntax checking meant to be a replacement to FlyMake

Programming Language

Python

  • Jedi - A Python auto-completion package.
  • Elpy - An Emacs Python development environment.
  • anaconda-mode - Code navigation, documentation lookup and completion for Python.
  • virtualenvwrapper.el - Manage virtualenv from inside Emacs.

Lisp Family

  • Paredit - Minor mode for editing parentheses. Strict parenthesis auto-pairing and easy depth adjustment. Compatible with Lisp/Scheme/Clojure.

Common Lisp

  • SLIME - A fully-functional IDE for Common Lisp development, with debugger, REPL.

Scheme

  • Quack - Enhanced Emacs Support for Editing and Running Scheme Code.
  • Geiser - Intergrated development with Guile and Racket.

Clojure

Web / JavaScript / CSS

  • js2-mode - Improved JavaScript editing mode.
  • skewer-mode - live interact with JavaScript, CSS, and HTML in a web-browser.
  • js-comint.el - Run an inferior javascript REPL process in Emacs.
  • web-mode - major mode for editing various html templates (PHP, JSP, ASP, ERB…etc).
  • emmet - Emmet support for Emacs.
  • impatient-mode - See your changes in the browser as you type.
  • php-mode - Major mode for PHP programming.

SML

  • SML mode - a major Emacs mode for editing Standard ML source code.

OCaml

  • tuareg - a Caml mode for Emacs.
  • TypeRex - a set of tools for developing in OCaml.

Erlang

  • erlang - the official Erlang mode for Emacs.
  • distel - Distel is a library for Emacs<->Erlang communication, plus a suite of tools built on top of it, such as a debugger front-end.
  • EDTS - EDTS is meant to be a able to replace Distel but only provides part of the most commonly used of Distel’s features.
  • Wrangler - Wrangler is a mode that supports interactive refactoring of Erlang programs

Haskell

  • haskell-mode - major mode for Haskell
  • structured-haskell-mode - minor mode for structured editing of Haskell
  • HaRe - Haskell refactoring tool with emacs integration
  • ghc-mod - backend to provide e.g. type information with an emacs frontend

Visual

  • undo-tree - Visualize the whole undo history in buffer as a tree, and you can access anywhere in it.
  • highlight-symbol - Auto/manually highlight the same symbols in code, navigate in them, or replace string.
  • rainbow-delimiters - Highlights parentheses, brackets, and braces according to their depth.
  • rainbow-mode - Display color on color-code string (hex/rgb) directly.
  • visual-regexp - Replace via RegExp, with real-time visual feedback directly in the buffer.
  • visual-regexp-steroids - The same as visual-regexp, but use modern regular expressions instead of Emacs-style.
  • whitespace - [built-in] Visualize blanks (tab/space/newline).
  • linum-relative - display relative line number in the left margin in emacs.

Keys Cheat Sheet

  • discover.el - Discover more of emacs with well-categorized context menus.
  • guide-key - Displays the available key bindings automatically and dynamically.
  • guide-key-tip - Tooltip version of guide-key.

Editing

  • Multiple cursors - Mark, edit multiple lines at once.
  • pangu-spacing - Minor-mode to automatically add space between CJK and Latin characters.
  • hungry-delete - Delete an entire block of whitespace at point.
  • Drag Stuff - Drag Stuff is a minor mode for Emacs that makes it possible to drag stuff (words, region, lines) around in Emacs.
  • expand-region.el - Increase selected region by semantic units.
  • multifiles.el - View and edit parts of multiple files in one buffer.

Kill-ring

Note

  • Org - [built-in] Write notes, GTD, authoring, publish and wash dishes.
  • Emacs Muse - a publishing environment for Emacs.

Version control

Integration

Console

  • EShell - [built-in] A shell-like command interpreter implemented in Emacs Lisp.
  • Term - [built-in] A terminal emulator in Emacs.
  • exec-path-from-shell - Get environment variables such as $PATH from the shell for Mac user.
  • multi-term - Managing multiple terminal buffers in Emacs.

Search

Ack

Ag

  • ag.el - An Emacs frontend to Ag (“the silver searcher” ack replacment)
  • helm-ag - Ag with helm interface

Pt

Pastebin

Google

LaTeX

  • AUCTeX - an extensible package for writing and formatting TeX files.
  • latex-preview-pane is a minor mode for Emacs that enables you to preview your LaTeX files directly in Emacs.

Internet

Mail

  • Gnus - [built-in] Reading e-mail and Usenet news.
  • Messages - [built-in] Composing and sending messages inside Emacs.
  • mu4e - an e-mail client for emacs
  • notmuch - A mail indexer which can serve as a complete client with its emacs integration

IRC

  • ERC - [built-in] A powerful, modular, and extensible IRC client.
  • Riece - an IRC client for Emacs.
  • Rcirc - [built-in] Next generation IRC client.

Social Network

RSS

  • Elfeed - RSS Reader for Emacs.

Package Manager

  • package.el - [built-in] Install and manage Emacs packages easily.
    • paradox - Modernizing Emacs’ Package Menu with package ratings, usage statistics, customizability & more.
  • el-get - apt-get style Emacs packages manager.
  • cask - Manage dependencies for your local Emacs configuration and automate the package development cycle.
    • pallet - A package management tool for Emacs, built on Cask.
  • quelpa - Build and install your Emacs Lisp packages on-the-fly directly from source.

Library

  • dash.el - A modern list library.
  • s.el - String manipulation library.
  • f.el - Modern API for working with files and directories in Emacs.
  • Grizzl - A small utility library to be used in other Elisp code needing fuzzy search behaviour.

Appearance

Theme

  • Zenburn - (dark) Vim’s “Zenburn theme” ported to Emacs.
  • Solarized - (light/dark) Solarized color theme.
  • Sanityinc-tomorrow - (light/dark) An Emacs version of “Tomorrow-themes”.
  • Monokai - (dark) A port of the popular TextMate theme Monokai
  • Cyberpunk-theme - (dark) [256color] Mostly a direct port of the “Cyberpunk Overtone theme”.
  • Ample-theme - (light/dark) [256color] A low-contrast theme for Emacs.
  • Moe-theme- (light/dark) [256color] A customizable colorful eye-candy theme. Moe, moe, kyun!
  • Leuven-theme - [built-in] (light) Awesome Emacs color theme for white backgrounds
  • Grandshell-theme - (dark) [256color] Theme with intensive colors.

Above list is some of the most popular/installed themes. If still unsatisfied, you also can take a look of GNU Emacs Themes Gallery for screenshots of almost all available Emacs themes.

Fun

  • Nyan-mode - Let Nyan Cat show you your buffer position in mode line.
  • Zone Mode - [built-in] A buffer obfuscator, or a screensaver.
  • swimmers.el - An emacs screensaver.

Starter Kit

Contributing

Your contributions are always welcome! Please submit a pull request or create an issue to add a new package, library or software to the list.

Generate “Table of Contents”

After editing and going to commit & push this list, you can use `/gen-toc.el` to update the table of contents with M-x awesome-emacs-gen-toc in README.org buffer.

Emacs Built-In Packages

If a package is available in latest Emacs, please remember to add a [built-in] tag in the front of description.