Emacs

repo: emacs-tw/awesome-emacs
category: Editors related: Neovim · Vim · Sublime Text


#+HTML:<div align=center><a href="https://github.com/emacs-tw/awesome-emacs"><img alt="Emacs Logo" width="240" height="240" src="https://upload.wikimedia.org/wikipedia/commons/0/08/EmacsIcon.svg"></a>

#+HTML:</div>

Welcome to Awesome Emacs, a community-driven list of useful Emacs packages, utilities, and libraries. Most of the following packages are available in https://github.com/melpa/melpa][MELPA. We recommend installing packages with it.

Also, please do consider contributing back to the Emacs community. One major way is by financially sponsoring the lead developers and teams of developers that create and maintain the wonderful Emacs packages that so many of us use. https://github.com/tarsius/elisp-maintainers][Elisp Maintainers provides a fantastic collection of ways that one can donate to several prolific Emacs package developers. Please do so donate.

Above all, enjoy using Emacs. The community, more than anything, makes Emacs a great ecosystem and place to develop, learn and grow.

  • Table of Contents :TOC_5:QUOTE: #+BEGIN_QUOTE

** Installation Much information can be found at the https://www.gnu.org/savannah-checkouts/gnu/emacs/download.html][GNU Emacs Download & Installation page. Upgrading to the newest/current version of emacs (if emacs comes preinstalled on ones operating system) will give the best user experience, and it is advised to do so as soon as possible. Here are several resources to assist you as you start or continue your journey with emacs.

*** Linux Use your favorite Linux package manager (e.g. apt, dnf, yum, pacman, etc) or build from https://git.savannah.gnu.org/cgit/emacs.git/][source. Typically, either a relatively recent version of emacs or no instance of emacs will be on a default install of one's Linux https://distrowatch.com][distribution.

*** macOS Use https://brew.sh][Homebrew or https://www.macports.org][MacPorts to install emacs with a package manager. Also, consider https://emacsformacosx.com][Emacs for Mac OS X, the Homebrew https://github.com/d12frosted/homebrew-emacs-plus][Emacs Plus formula for installation candidates and https://github.com/jimeh/emacs-builds][Emacs Builds, a self-contained Emacs.app builds for macOS, with native-compilation support. The preinstalled version of emacs on a default macOS install is quite https://apple.stackexchange.com/questions/229669/update-emacs-that-comes-with-os-x][old. For an optimal emacs experience, upgrading to a newer version is highly recommended.

*** Windows Emacs can be downloaded from the http://ftp.gnu.org/gnu/emacs/windows/][GNU FTP or a GNU mirror listed on the https://www.gnu.org/software/emacs/download.html][GNU Emacs Download & Installation page, and/or using the https://www.msys2.org][MSYS2 pacman manager. Another option is to install emacs via the https://community.chocolatey.org/packages/Emacs][Chocolatey or https://github.com/ScoopInstaller/Extras/blob/master/bucket/emacs.json][scoop Windows package managers. A default install of Windows does not contain emacs.

*** Alternative The following resources can be used to build emacs in various environments-- e.g. containerized https://www.docker.com][docker builds, https://en.wikipedia.org/wiki/Continuous_integration][continuous integration, building various versions of emacs, etc. - https://github.com/rejeep/evm][evm - Emacs Version Manager. - https://github.com/flycheck/emacs-travis][flycheck/emacs-travis - Install emacs on Travis CI. - https://github.com/npostavs/emacs-travis][npostavs/emacs-travis - Pre-built emacs binaries for Travis CI (fork of flycheck/emacs-travis, significant though in that it is used for CI in projects such as Magit). - https://github.com/Silex/docker-emacs][Silex/docker-emacs - Run emacs in docker containers (multiple image variants, with options for https://ubuntu.com][Ubuntu or https://alpinelinux.org][Alpine Linux based images). - https://github.com/purcell/nix-emacs-ci][nix-emacs-ci - Emacs installations for continuous integration.

** Interface Enhancement

ATTENTION IF YOU ARE CONTRIBUTOR: This parent category "Interface

Enhancement" is frequently abused. Please DO NOT casually place

packages in this parent category, unless the package indeed does not

belong to any other subcategory or other category.

Packages in this category enhance the UI of Emacs itself, NOT

related with file's content.

*** Window & Frame Management #+begin_quote The window & frame system of Emacs itself, NOT the window system of OS (See "#operating-system][Operating System"). #+end_quote

**** Font

**** Layout

**** Switching

*** Tabbar

*** Navigation

- [[https://github.com/winterTTr/ace-jump-mode][Ace jump]] - A quick cursor jump mode.
- [[https://github.com/emacs-vs/goto-line-preview][goto-line-preview]] - Preview line when executing =goto-line= command.
- [[https://github.com/abo-abo/avy][Avy]] - Jump to visible text using a char-based decision tree.
  - [[https://github.com/cute-jumper/avy-zap][avy-zap]] - Zap to char using avy.
- [[https://github.com/camdez/goto-last-change.el][goto-last-change]] - [Move](/@harrisonqian/awesome/wiki/programming-languages/move) point through buffer-undo-list positions.
- [[https://github.com/emacsorphanage/helm-swoop][Helm-swoop]] - Efficiently jump between matched string/lines.
- [[https://github.com/radian-software/ctrlf][CTRLF]] - An intuitive and efficient solution for single-buffer text search in Emacs.
- [[https://github.com/emacsorphanage/anzu][anzu]] - displays current match and total matches.
- [[https://www.emacswiki.org/emacs/ImenuMode][imenu]] - =[built-in]= Menus for accessing locations in documents.
- [[https://github.com/vspinu/imenu-anywhere][imenu-anywhere]] - IDO/Helm imenu tag selection across all buffers with the same mode.
- [[https://www.emacswiki.org/emacs/MiniMap][Minimap]] - A SublimeText-style minimap sidebar.
- [[https://github.com/abo-abo/ace-link][ace-link]] - Quickly follow links in =org-mode=, =help-mode=, =Info-mode=, and several other modes.
- [[https://github.com/rolandwalker/back-button][back-button]] - Visual navigation through mark rings.
- [[https://github.com/joodland/bm][bm]] - Visual Bookmarks, provides an easy way to navigate in a buffer.
- [[https://github.com/aki2o/emacs-pophint][emacs-pophint]] - Provide navigation like the Vimperator/KeySnail Hint Mode of Firefox.
- [[https://github.com/noctuid/vertigo.el][vertigo.el]] - Jump lines using the home row.
- [[https://github.com/nixin72/block-nav.el][block-nav]] - Navigate by indentation block levels.
- [[https://codeberg.org/ideasman42/emacs-spatial-navigate][emacs-spatial-navigate]] - Navigate by indentation and whitespace blocks.
- [[https://github.com/alezost/mwim.el][mwim]] - Toggle point between line positions of interest.
- [[https://github.com/tanrax/scroll-page-without-moving-point.el][scroll-page-without-moving-point]] - [Move](/@harrisonqian/awesome/wiki/programming-languages/move) the scroll in Emacs without moving the position cursor.
- [[https://gitlab.com/Vonfry/zoxide.el][zoxide]] - A smarter cd command for Emacs.
- [[https://github.com/kickingvegas/casual-avy][Casual Avy]] - A Transient user-interface for [[https://github.com/abo-abo/avy][Avy]]. Included in [[https://github.com/kickingvegas/casual-suite][Casual Suite]].
- [[https://github.com/kickingvegas/casual/blob/main/docs/bookmarks.org][Casual Bookmarks]] - a Transient user interface for the bookmark list. Included in [[https://github.com/kickingvegas/casual][Casual]].
- [[https://github.com/kickingvegas/casual/blob/main/docs/info.org][Casual Info]] - a Transient user interface for Info. Included in [[https://github.com/kickingvegas/casual][Casual]].

*** Key-bindings #+BEGIN_QUOTE Possibly help prevent keyboard-related repetitive strain injury (RSI) from occurring. #+END_QUOTE - https://github.com/emacs-evil/evil][Evil - An e xtensible vi l ayer: manipulate Emacs with Vi key binding. - https://github.com/emacs-evil/evil-collection][Evil Collection - A collection of Evil bindings. - https://github.com/emacs-evil/evil-ediff][Evil Ediff - Evil bindings for Ediff. - https://github.com/emacs-evil/evil-magit][Evil Magit - Evil bindings for Magit. - https://github.com/JorisE/evil-mu4e][Evil mu4e - Evil bindings for mu4e. - https://github.com/noctuid/lispyville][LispyVille - Evil bindings for lispy-mode. - https://github.com/abo-abo/hydra][Hydra - Make bindings that stick around. - https://github.com/emacsorphanage/god-mode][god-mode - Global minor mode for entering Emacs commands without modifier keys. - https://github.com/meow-edit/meow][meow - Yet another modal editing on Emacs. - https://github.com/mrkkrp/modalka][modalka - Introduce native modal editing of your own design. - https://github.com/Kungsgeten/ryo-modal][ryo-modal - Inspired by modalka, ryo-modal provides useful features for creating your own modal editing environment. - https://gitlab.com/matsievskiysv/multistate][multistate - Use Evil-like binding states without predefined keybindings (Evil mode without vi). - https://github.com/xahlee/xah-fly-keys][xah-fly-keys - A modal keybinding for emacs (like vim), but based on command frequency and ergonomics. - https://github.com/ergoemacs/ergoemacs-mode][ergoemacs-mode - Global minor mode to use both common interface keys and ergonomic keys for emacs. - https://github.com/noctuid/general.el][general - A convenient, unified interface for key definitions - like use-package but for key-bindings. - https://github.com/susam/devil][devil - Non-modal way to enter Emacs commands without modifier keys, using the comma.

*** Minibuffer

**** Fuzzy & Narrowing #+begin_quote Tools or libraries specially focused on fuzzy searching in list, mostly for minibuffer. #+end_quote

- [[https://github.com/radian-software/prescient.el][prescient.el]] - Fast and intuitive frequency-and-recency-based sorting and filtering for Emacs.
- [[https://github.com/oantolin/orderless][Orderless]] - Use space-separated search terms in any order when completing with Icomplete or the default interface.
- [[https://github.com/manateelazycat/snails][Snails]] - A modern, easy-to-expand fuzzy search framework.
- [[https://github.com/radian-software/selectrum][selectrum]] - Clean, stable, and intuitive incremental narrowing framework for Emacs. [Deprecated. The project suggests using Vertico]
- [[https://github.com/jojojames/fussy][fussy]] - Emacs completion-style leveraging flx / fzf / etc

*** Mode-line

*** Dim Distracting

- [[https://github.com/gonewest818/dimmer.el][dimmer.el]] - Interactively highlight which buffer is active by dimming the others.
- [[https://github.com/hlissner/emacs-solaire-mode][Solaire mode]] - Visually distinguish file-visiting [windows](/@harrisonqian/awesome/wiki/platforms/windows) from other types of [windows](/@harrisonqian/awesome/wiki/platforms/windows) (like popups or sidebars) by giving them a slightly different background.
- [[https://github.com/larstvei/Focus][focus]] - Dim the font color of text in surrounding paragraphs.

** Editing Enhancement

*** Indentation Enhancement

- [[https://github.com/DarthFennec/highlight-indent-guides][highlight-indent-guides]] - Emacs minor mode to highlight indentation.
- [[https://github.com/antonj/Highlight-Indentation-for-Emacs][highlight-Indentation-mode]] - Highlight indentation.
- [[https://github.com/zk-phi/indent-guide][indent-guide]] - Show vertical lines to guide indentation.
- [[https://github.com/Malabarba/aggressive-indent-mode][Aggressive-indent]] - Keeps your code always indented automatically.

- [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Indent-Convenience.html][electric-indent-mode]] - =[built-in]= (enabled by default) Auto-indent current and new lines ([[https://www.emacswiki.org/emacs/AutoIndentation][Emacs Wiki]])
- [[https://codeberg.org/ideasman42/emacs-hl-indent-scope][hl-indent-scope]] - Highlight indentation using source-code scope (typically defined by brackets).
- [[https://github.com/jdtsmith/indent-bars][indent-bars]] - Optimized vertical lines to guide indentation, with additional tree-sitter support.

*** Symbols / Tokens

- [[https://github.com/emacsmirror/rainbow-mode][rainbow-mode]] - Colorize color names / color hex code in buffers.
- [[https://github.com/DevelopmentCool2449/colorful-mode][colorful-mode]] - Preview any color in your buffer
- [[https://github.com/wolray/symbol-overlay][symbol-overlay]] - Highlight symbols with keymap-enabled overlays (inspired by highlight-symbol).
- [[https://github.com/nschum/highlight-symbol.el][highlight-symbol]] - Auto/manually highlight the same symbols in code, navigate in them, or replace string.
- [[https://github.com/fgeller/highlight-thing.el][highlight-thing]] - Light-weight minor mode to highlight thing under point using built-ins.
- [[https://github.com/ankurdave/color-identifiers-mode][color-identifiers-mode]] - Color Identifiers is a minor mode for Emacs that highlights each source code identifier uniquely based on its name.
- [[https://codeberg.org/ideasman42/emacs-idle-highlight-mode][idle-highlight-mode]] - Light-weight minor mode to automatically highlight the thing at point when idle, with configurable exceptions & behavior.
- [[https://github.com/kickingvegas/casual-symbol-overlay][Casual Symbol Overlay]] - a Transient user interface for Symbol Overlay. Included in [[https://github.com/kickingvegas/casual-suite][Casual Suite]].
- [[https://github.com/alvarogonzalezsotillo/region-occurrences-highlighter][region-occurrences-highlighter]] - Highlights occurrences of the current selected region.

*** Whitespaces Enhancement

- [[https://www.emacswiki.org/emacs/WhiteSpace][whitespace]] - =[built-in]= Visualize blanks (tab/space/newline).
- [[https://github.com/purcell/whitespace-cleanup-mode][whitespace-cleanup-mode]] - Intelligently call whitespace-cleanup on save.
- [[https://github.com/lewang/ws-butler][ws-butler]] - Unobtrusively trim extraneous white-space *ONLY* in lines edited.

*** Delete Enhancement

*** Fancy Icons

*** Massive Edit

- [[Https://github.com/magnars/multiple-cursors.el][Multiple cursors]] - Mark, edit multiple lines at once.
- [[https://github.com/benma/visual-regexp.el][visual-regexp]] - Replace via RegExp, with real-time visual feedback directly in the buffer.
  - [[https://github.com/benma/visual-regexp-steroids.el/][visual-regexp-steroids]] - The same as visual-regexp, but use modern regular expressions instead of Emacs-style.
- [[https://github.com/mkcms/interactive-align][ialign]] - Interactively align lines using a regular expression.
- [[https://github.com/abo-abo/tiny][tiny]] - Templates based on linear range transformations.
- [[https://www.emacswiki.org/emacs/AlignCommands][align]] - =[built-in]= =align= supports aligning with regular text, while =align-regexp= uses regular expressions.
- [[https://github.com/szermatt/visual-replace][visual-replace]] - Provides a visual representation of replacetement. Unlike visual-regexp, it uses built-in Emacs functionality.

*** Quotes & Parenthesis & Delimiters Handling

**** Insert & Edit

**** Select

**** Highlight

*** Kill-ring / Clipboard

*** Drag Lines

*** Undo & Redo

*** Multiple Major-Mode

*** Snippet

*** Text Conversion

** Programming

*** Completion

- [[https://github.com/auto-complete/auto-complete][Auto-Complete]] - An intelligent auto-completion extension with great interface.
- [[https://company-mode.[github](/@harrisonqian/awesome/wiki/development-environment/github).io/][Company]] - A text completion framework.
  - [[https://github.com/company-mode/company-quickhelp][company-quickhelp]] - Documentation popups for company.
  - [[https://github.com/sebastiencs/company-box][company-box]] - A company front-end with [icons](/@harrisonqian/awesome/wiki/media/icons).
  - [[https://github.com/jcs-elpa/company-fuzzy][company-fuzzy]] - Fuzzy matching for company.
- [[https://github.com/lewang/flx][flx]] - Fuzzy matching for Emacs like [Sublime Text](/@harrisonqian/awesome/wiki/editors/sublime-text).
  - [[https://github.com/jcs-elpa/flx-rs][flx-rs]] - flx in [Rust](/@harrisonqian/awesome/wiki/programming-languages/rust) using dynamic module.
- [[https://www.emacswiki.org/emacs/AbbrevMode][abbrev]] - =[built-in]= Abbreviation expander.
- [[https://github.com/abingham/emacs-ycmd][emacs-ycmd]] - Emacs client for YCM.

truncated — full list on GitHub

[[curator]]
I'm the Curator. I can help you navigate, organize, and curate this wiki. What would you like to do?