[[
wikihub
]]
Search
⌘K
Explore
People
For Agents
Sign in
Explore
People
For Agents
Sign in
@harrisonqian / Awesome / wiki/editors/emacs.md
Suggest edit
Cancel
Submit suggestion
Title
Name
Note
--- visibility: public --- # Emacs **repo:** [emacs-tw/awesome-emacs](https://github.com/emacs-tw/awesome-emacs) **category:** [[editors|Editors]] **related:** [[neovim|Neovim]] · [[vim|Vim]] · [[sublime-text|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> * [Awesome](/@harrisonqian/awesome/wiki/miscellaneous/awesome) Emacs [[https://github.com/sindresorhus/awesome][https://cdn.jsdelivr.net/gh/sindresorhus/awesome@d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg]] [[https://github.com/emacs-tw/awesome-emacs/actions/workflows/main.yml][https://github.com/emacs-tw/awesome-emacs/actions/workflows/main.yml/badge.svg]] [[https://unlicense.org][https://upload.wikimedia.org/wikipedia/commons/e/ee/Unlicense_Blue_Badge.svg]] #+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 - [[#[awesome](/@harrisonqian/awesome/wiki/miscellaneous/awesome)-emacs][Awesome Emacs]] - [[#installation][Installation]] - [[#linux][Linux]] - [[#macos][macOS]] - [[#windows][Windows]] - [[#alternative][Alternative]] - [[#interface-enhancement][Interface Enhancement]] - [[#window--frame-management][Window & Frame Management]] - [[#font][Font]] - [[#layout][Layout]] - [[#switching][Switching]] - [[#tabbar][Tabbar]] - [[#navigation][Navigation]] - [[#key-bindings][Key-bindings]] - [[#minibuffer][Minibuffer]] - [[#fuzzy--narrowing][Fuzzy & Narrowing]] - [[#mode-line][Mode-line]] - [[#dim-distracting][Dim Distracting]] - [[#editing-enhancement][Editing Enhancement]] - [[#indentation-enhancement][Indentation Enhancement]] - [[#symbols--tokens][Symbols / Tokens]] - [[#whitespaces-enhancement][Whitespaces Enhancement]] - [[#delete-enhancement][Delete Enhancement]] - [[#fancy-icons][Fancy Icons]] - [[#massive-edit][Massive Edit]] - [[#quotes--parenthesis--delimiters-handling][Quotes & Parenthesis & Delimiters Handling]] - [[#insert--edit][Insert & Edit]] - [[#select][Select]] - [[#highlight][Highlight]] - [[#kill-ring--clipboard][Kill-ring / Clipboard]] - [[#drag-lines][Drag Lines]] - [[#undo--redo][Undo & Redo]] - [[#multiple-major-mode][Multiple Major-Mode]] - [[#snippet][Snippet]] - [[#text-conversion][Text Conversion]] - [[#programming][Programming]] - [[#completion][Completion]] - [[#jump-to-definition--tagging][Jump to Definition / Tagging]] - [[#lsp-client][LSP Client]] - [[#debugging][Debugging]] - [[#error-checking][Error Checking]] - [[#document][Document]] - [[#code-folding][Code Folding]] - [[#compiling][Compiling]] - [[#project-management][Project management]] - [[#file-manager][File Manager]] - [[#programming-language][Programming Language]] - [[#cc][C/C++]] - [[#python][Python]] - [[#ruby][Ruby]] - [[#lisp-family][Lisp Family]] - [[#common-lisp][Common Lisp]] - [[#scheme][Scheme]] - [[#racket][Racket]] - [[#clojure][Clojure]] - [[#emacs-lisp][Emacs Lisp]] - [[#web-development][Web Development]] - [[#javascript][JavaScript]] - [[#coffeescript][CoffeeScript]] - [[#typescript][TypeScript]] - [[#purescript][PureScript]] - [[#php][PHP]] - [[#java][Java]] - [[#go][Go]] - [[#c][C#]] - [[#rust][Rust]] - [[#erlang][Erlang]] - [[#elixir][Elixir]] - [[#haskell][Haskell]] - [[#swift][Swift]] - [[#scala][Scala]] - [[#lua][Lua]] - [[#makefile][Makefile]] - [[#sml][SML]] - [[#gdscript][Gdscript]] - [[#groovy][Groovy]] - [[#kotlin][Kotlin]] - [[#r][R]] - [[#julia][Julia]] - [[#ocaml][OCaml]] - [[#reasonml][ReasonML]] - [[#mint][Mint]] - [[#nim][Nim]] - [[#d][D]] - [[#raku][Raku]] - [[#elm][Elm]] - [[#stan][Stan]] - [[#mips-assembly][MIPS Assembly]] - [[#risc-v-assembly][RISC-V Assembly]] - [[#verilogsystemverilog][Verilog/SystemVerilog]] - [[#vhdl][VHDL]] - [[#lammps][LAMMPS]] - [[#ada][Ada]] - [[#zig][Zig]] - [[#ai][AI]] - [[#code-completion][Code Completion]] - [[#chatgpt][ChatGPT]] - [[#ai-assistant-programming][AI assistant programming]] - [[#session-management][Session management]] - [[#keys-cheat-sheet][Keys Cheat Sheet]] - [[#note][Note]] - [[#org-mode][Org-mode]] - [[#version-control][Version control]] - [[#integration][Integration]] - [[#console][Console]] - [[#operating-system][Operating System]] - [[#search][Search]] - [[#ack][Ack]] - [[#ag][Ag]] - [[#pt][Pt]] - [[#sift][Sift]] - [[#ripgrep][Ripgrep]] - [[#pastebin][Pastebin]] - [[#google][Google]] - [[#blog-system][Blog System]] - [[#markdown][Markdown]] - [[#latex][LaTeX]] - [[#pdf][PDF]] - [[#internet][Internet]] - [[#browser][Browser]] - [[#mail][Mail]] - [[#irc][IRC]] - [[#chat][Chat]] - [[#social-network][Social Network]] - [[#web-feed][Web Feed]] - [[#ftp][FTP]] - [[#torrent][Torrent]] - [[#devops][DevOps]] - [[#package-management][Package Management]] - [[#package-manager][Package Manager]] - [[#package-configuration][Package Configuration]] - [[#package-updates][Package Updates]] - [[#config-management][Config Management]] - [[#library][Library]] - [[#theme][Theme]] - [[#multimedia][Multimedia]] - [[#finance][Finance]] - [[#fun][Fun]] - [[#music][Music]] - [[#screencasting][Screencasting]] - [[#starter-kit][Starter Kit]] - [[#tutorials][Tutorials]] - [[#links-and-resources][Links and resources]] - [[#contributing][Contributing]] - [[#the-order-of-items][The Order of Items]] - [[#emacs-built-in-packages][Emacs Built-In Packages]] - [[#generate-table-of-contents][Generate "Table of Contents"]] - [[#other-[awesome](/@harrisonqian/awesome/wiki/miscellaneous/awesome)-lists][Other Awesome Lists]] - [[#license][License]] #+END_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](/@harrisonqian/awesome/wiki/back-end-development/docker) [containers](/@harrisonqian/awesome/wiki/platforms/containers) (multiple image variants, with options for [[https://ubuntu.com][Ubuntu]] or [[https://alpinelinux.org][Alpine]] [Linux](/@harrisonqian/awesome/wiki/platforms/linux) based images). - [[https://github.com/purcell/nix-emacs-ci][nix-emacs-ci]] - Emacs installations for continuous [integration](/@harrisonqian/awesome/wiki/platforms/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. - [[https://github.com/emacs-dashboard/emacs-dashboard][Dashboard]] - A startup dashboard which provides certain information about your recent Emacs activities. - [[https://github.com/Wilfred/helpful][Helpful]] - An enchancement of the Emacs built-in help system. - [[https://github.com/zk-phi/sublimity][sublimity]] - smooth-scrolling, minimap inspired by the sublime editor. - [[https://github.com/pashinin/workgroups2][workgroups2]] - Session manager, saves all your opened buffers, their location and sizes on disk to restore later. - [[https://github.com/mrkkrp/ace-popup-menu][ace-popup-menu]] - Replace GUI popup menu with something more efficient. - [[https://www.gnu.org/software/hyperbole/][GNU Hyperbole]] - GNU Hyperbole is an efficient and programmable hypertextual information management system. It is a toolkit and user interface for viewing, retrieving and interlinking all kinds of textual information. - [[https://github.com/coldnew/linum-relative][linum-relative]] - display relative line number in the left margin in emacs. - [[https://github.com/Malabarba/beacon][beacon]] - Never lose your cursor again. - [[https://github.com/protesilaos/pulsar][pulsar]] - Highlights current line, an minimal alternative to beacon. - [[https://github.com/emacsorphanage/yascroll][yascroll-el]] - Yet Another Scroll Bar Mode. - [[https://github.com/k-talo/volatile-highlights.el][volatile-highlights.el]] - Minor mode for visual feedback on some operations in Emacs. - [[https://codeberg.org/ideasman42/emacs-buffer-name-relative][buffer-name-relative]] - Project relative buffer names with optional path abbreviation. - [[https://github.com/ichernyshovvv/enlight][enlight]] — Highly customizable startup screen for Emacs. - [[https://github.com/jamescherti/inhibit-mouse.el][inhibit-mouse.el]] — A package that allows disabling mouse input in Emacs. It can help prevent accidental clicks or be used to reinforce a keyboard-centric workflow. - [[https://github.com/emacs-sideline/sideline][sideline]] - Show information on the side. - [[https://github.com/kickingvegas/casual][Casual]] - A collection of Transient user interfaces for various built-in Emacs modes. - [[https://github.com/emacs-vs/line-reminder][line-reminder]] - Line annotation for changed and saved lines. *** 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 - [[https://github.com/protesilaos/fontaine][fontaine]] - lets the user specify presets of font configurations and set them on demand on graphical Emacs frames. - [[https://codeberg.org/ideasman42/emacs-default-font-presets][default-font-presets]] - lets user specify presets for the default-font, with utilities to scale and cycle [fonts](/@harrisonqian/awesome/wiki/media/fonts). **** Layout - [[https://www.emacswiki.org/emacs/WinnerMode][winner]] - =[built-in]= "Undo"(and "redo") changes in the window configuration with the key commands. - [[https://github.com/roman/golden-ratio.el][golden-ratio.el]] - Automatically resizes [windows](/@harrisonqian/awesome/wiki/platforms/windows) based on the [[https://en.wikipedia.org/wiki/Golden_ratio][golden ratio]]. - [[https://github.com/knu/elscreen][ElScreen]] - Utility for multiple screens. - [[https://github.com/cyrus-and/zoom][Zoom]] - Fixed and automatic balanced window layout for Emacs. **** Switching - [[https://www.emacswiki.org/emacs/WindMove][windmove]] - =[built-in]= Tired with =C-x o=? Now you can use =shift+arrows= to jump between [windows](/@harrisonqian/awesome/wiki/platforms/windows). - [[https://github.com/deb0ch/emacs-winum][emacs-winum]] - Window numbers for Emacs - Navigate [windows](/@harrisonqian/awesome/wiki/platforms/windows) and frames using numbers. - [[https://github.com/dimitri/switch-window][switch-window]] - A visual replacement for =C-x o=. - [[https://github.com/abo-abo/ace-window][ace-window]] - Quickly switch [windows](/@harrisonqian/awesome/wiki/platforms/windows). - [[https://github.com/lukhas/buffer-move][buffer-move]] - [Move](/@harrisonqian/awesome/wiki/programming-languages/move) or swap buffer to other window. *** Tabbar - [[https://www.emacswiki.org/emacs/TabBarMode][tab-bar-mode]] - =[built-in]= =tab-bar-mode= and =tab-line-mode= to display a tab bar at the top. - [[https://github.com/ema2159/centaur-tabs][centaur-tabs]] - Aesthetic, functional tabs plugin with [icons](/@harrisonqian/awesome/wiki/media/icons) and styles, Helm, Ivy and Projectile [integration](/@harrisonqian/awesome/wiki/platforms/integration), supported by many popular themes. - [[https://github.com/dholm/tabbar][tabbar]] - Display a tab bar in the header line. - [[https://github.com/manateelazycat/awesome-tab][awesome-tab]] - Out of box extension to use tab in Emacs. grouping buffers by projects and many [awesome](/@harrisonqian/awesome/wiki/miscellaneous/awesome) features. - [[https://github.com/jamescherti/vim-tab-bar.el][vim-tab-bar]] - Makes Emacs' built-in tab-bar look like Vim's tabbed browsing interface. - [[https://github.com/abougouffa/one-tab-per-project][otpp.el]] - Automatically creates enables =tab-bar-mode= and creates a tab when opening a project. *** 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 - [[https://www.emacswiki.org/emacs/InteractivelyDoThings][IDO]] - =[built-in]= Interactively do things with buffers and files. - [[https://github.com/DarwinAwardWinner/ido-completing-read-plus][ido-completing-read+]] - Enhance the built-in ido for completion all over Emacs. - [[https://github.com/creichert/ido-vertical-mode.el][ido-vertical-mode]] - Make ido display vertically. - [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Icomplete.html][Icomplete]] - =[built-in]= See the list of candidates while completing for any command. Can be made to behave more like Ido with `M-x fido-mode`. - [[https://github.com/oantolin/icomplete-vertical][icomplete-vertical]] - Make Icomplete display vertically. - [[https://github.com/emacs-helm/helm][Helm]] - (Formerly 'Anything') A powerful completion and selection narrowing framework. ( External Guides [[http://tuhdo.[github](/@harrisonqian/awesome/wiki/development-environment/github).io/helm-intro.html][1]] ) - [[https://github.com/abo-abo/swiper][Ivy]] - flexible, simple tools for minibuffer completion in Emacs. - Ivy, a generic completion mechanism for Emacs. - Counsel, a collection of Ivy-enhanced versions of common Emacs commands. - Swiper, an Ivy-enhanced alternative to isearch. - [[https://www.emacswiki.org/emacs/Icicles][Icicles]] - An Emacs library that enhances minibuffer completion. - [[https://github.com/DarwinAwardWinner/amx][amx]] - An alternative M-x interface for Emacs. - [[https://github.com/minad/vertico][vertico]] - Vertico provides a minimalistic vertical completion UI, which is based on the default completion system. - [[https://github.com/minad/marginalia][marginalia]] - Show document of function in ==M-x=, or file attributes in =C-x C-f=. - [[https://github.com/minad/consult][consult]] - Consult provides various practical commands based on the Emacs completion function completing-read. **** 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 - [[https://github.com/milkypostman/powerline][powerline]] - Emacs version of the Vim powerline. - [[https://github.com/johnson-christopher/powerline-evil][powerline-evil]] - Utilities for better Evil support for Powerline. - [[https://github.com/Malabarba/smart-mode-line][smart-mode-line]] - A sexy mode-line for Emacs. - [[https://github.com/TheBB/spaceline][spaceline]] - Powerline theme from Spacemacs. - [[https://github.com/dbordak/telephone-line][telephone-line]] - A new implementation of Powerline for Emacs. - [[https://github.com/manateelazycat/awesome-tray][awesome-tray]] - Display mode-line information at right of minibuffer. - [[https://github.com/myrjola/diminish.el][diminish]] - Diminished modes are minor modes with no modeline display. - [[https://github.com/seagle0128/doom-modeline][doom-modeline]] - A mode-line package included in Doom and Centaur emacs. - [[https://github.com/radian-software/blackout][blackout]] - Customize or hide the display of major and minor modes in the mode-line. - [[https://codeberg.org/ideasman42/emacs-mode-line-idle][mode-line-idle]] - Evaluate mode-line elements when idle, displaying detailed information without sacrificing performance. - [[https://github.com/konrad1977/punch-line][punch-line]] - Minimal modeline similar to doom-modeline. Also supports [[https://github.com/konrad1977/punch-line#what-am-i-doing-plugin]["what I'm doing"]] messages. - [[https://github.com/tarsius/minions][minions]] - A minor-mode menu for the mode line. Minor modes in a single menu. *** 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 - [[https://github.com/magnars/multifiles.el][multifiles.el]] - View and edit parts of multiple files in one buffer. - [[https://github.com/phillord/lentic][lentic]] - Create views of the same content in two Emacs buffers. - [[http://www.lysator.liu.se/~tab/artist/][artist-mode]] - =[built-in]= Draw ASCII lines, squares, rectangles and poly-lines, ellipses, and circles with your mouse and/or keyboard. - [[https://github.com/bbatsov/crux][crux]] - A Collection of Ridiculously Useful eXtensions for Emacs. - [[https://github.com/jorgenschaefer/typoel][typo.el]] - Emacs extension for typographical editing. - [[https://github.com/sulami/literate-calc-mode.el][literate-calc-mode]] - display live =calc= results inline. - [[https://github.com/kickingvegas/casual/blob/main/docs/editkit.org][Casual EditKit]] - a Transient user interface library for Emacs editing commands. Included in [[https://github.com/kickingvegas/casual][Casual]]. *** 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 - [[https://www.emacswiki.org/emacs/DeleteSelectionMode][delete-selection-mode]] - =[built-in]= Auto delete selected region when [typing](/@harrisonqian/awesome/wiki/programming-languages/typing), just like most of other modern text editors. - [[https://github.com/soutaro/hungry-delete.el][hungry-delete]] - Delete an entire block of whitespace at point. - [[https://github.com/hrehfeld/emacs-smart-hungry-delete][smart-hungry-delete]] - Delete whitespace between words, parenthesis and other delimiters in a (not very) smart way. - [[https://github.com/mrkkrp/zzz-to-char][zzz-to-char]] - Fancy replacement for =zap-to-char=. *** Fancy Icons - [[https://github.com/domtronn/all-the-[icons](/@harrisonqian/awesome/wiki/media/icons).el][all-the-icons]] - A package used to include fancy [icons](/@harrisonqian/awesome/wiki/media/icons) within emacs. - [[https://github.com/rainstormstudio/nerd-[icons](/@harrisonqian/awesome/wiki/media/icons).el][nerd-icons]] - A Library for Nerd Font icons. - [[https://github.com/iqbalansari/emacs-emojify][emojify]] - Display emojis in Emacs. - [[https://github.com/ryuslash/mode-icons][mode-icons]] - Show [icons](/@harrisonqian/awesome/wiki/media/icons) instead of mode names. - [[https://emacsredux.com/blog/2014/08/25/a-peek-at-emacs-24-dot-4-prettify-symbols-mode/][prettify-symbol-mode]] - =[built-in]= displaying characters as fancy symbols (e.g. =lambda= -> =λ=). *** 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 - [[https://www.emacswiki.org/emacs/ElectricPair][electric-pair-mode]] - =[built-in]= Auto close, or insert matching delimiters: parentheses, braces, brackets, etc. ([[https://www.gnu.org/software/emacs/manual/html_node/emacs/Matching.html][GNU Manual]]) - [[https://github.com/davidshepherd7/electric-operator][electric-operator]] - Automatically insert spaces around operators. - [[https://github.com/Fuco1/smartparens][SmartParens]] - Deals with parens pairs and tries to be smart about it. - [[https://github.com/AmaiKinono/puni][Puni]] - Structured editing (soft deletion, expression navigating & manipulating) that supports many major modes out of the box. - [[https://github.com/coldnew/pangu-spacing][pangu-spacing]] - Minor-mode to automatically add space between CJK and Latin characters. - [[https://github.com/tslilc/siege-mode][siege-mode]] - An emacs minor mode to surround the region with smart delimiters interactively. - [[https://github.com/ganmacs/emacs-surround][emacs-surround]] - Emacs version of vim.surround - [[https://github.com/emacs-evil/evil-surround][evil-surround]] - Emacs version of vim.surround that uses =Evil= as its vi layer. **** Select - [[https://github.com/magnars/expand-region.el][expand-region.el]] - Increase selected region by semantic units. - [[https://elpa.gnu.org/packages/expreg.html][expreg]] - Like =expand-region=, but using =tree-sitter= for language-specific region expansion. - [[https://github.com/bling/evil-visualstar][evil-visualstar]] - Makes visual selections work with the * operator in =evil-mode=. **** Highlight - [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Matching.html][show-paren-mode]] - =[built-in]= a minor mode to visualize parenthesis matching. - [[https://github.com/Fanael/rainbow-delimiters][rainbow-delimiters]] - Highlights parentheses, brackets, and braces according to their depth. - [[https://github.com/tsdh/highlight-parentheses.el][highlight-parentheses.el]] - highlight surrounding parentheses. - [[https://github.com/alphapapa/prism.el][prism]] - highlight code based on depth *** Kill-ring / Clipboard - [[https://github.com/waymondo/popup-kill-ring][Popup-killring]] - Browse kill-ring with popup menu. - [[https://github.com/browse-kill-ring/browse-kill-ring][Browse-kill-ring]] - Visually navigate kill-ring. - [[https://github.com/leoliu/easy-kill][easy-kill]] - Kill & Mark Things Easily in Emacs. - [[https://github.com/bburns/clipmon][clipmon]] - Clipboard monitor for Emacs. Monitors clipboard and pastes contents on change. - [[https://github.com/rolandwalker/simpleclip][simpleclip]] - Simplified access to the system clipboard. *** Drag Lines - [[https://github.com/emacsfodder/move-text][move-text]] - [move](/@harrisonqian/awesome/wiki/programming-languages/move) current line or region up or down. - [[https://github.com/wyuenho/move-dup][move-dup]] - Minor mode for Eclipse-like moving and duplicating lines or rectangles. - [[https://github.com/rejeep/drag-stuff.el][Drag Stuff]] - Drag Stuff is a minor mode for Emacs that makes it possible to drag stuff (words, region, lines) around in Emacs. *** Undo & Redo - [[https://www.emacswiki.org/emacs/UndoTree][undo-tree]] - Visualize the whole undo history in buffer as a tree, and you can access anywhere in it. - [[https://codeberg.org/ideasman42/emacs-undo-fu][undo-fu]] - An undo/redo system that advertises itself as being simpler than Undo Tree. - [[https://codeberg.org/ideasman42/emacs-undo-fu-session][undo-fu-session]] - Save undo history across sessions. Intended to work with, but not dependent on =undo-fu=. - [[https://github.com/jackkamm/undo-propose-el][undo-propose]] - Navigate the emacs undo history by staging undo's in a temporary buffer. - [[https://github.com/casouri/vundo][vundo]] - Navigate the emacs undo buffer history as a tree-structure. *** Multiple Major-Mode - [[https://github.com/dgutov/mmm-mode][mmm-mode]] - allows Multiple Major Modes to coexist in one buffer (ex: Embedded CSS & JS in HTML file). - [[https://github.com/polymode/polymode][polymode]] - Framework for Multiple Major Modes in Emacs (ex: Embedded programming language code in [Markdown](/@harrisonqian/awesome/wiki/miscellaneous/markdown), Org, RST file...etc) *** Snippet - [[https://github.com/joaotavora/yasnippet][YASnippets]] - A template system that allows you to type an abbreviation and automatically expand it into function templates. - [[https://github.com/abo-abo/auto-yasnippet][auto-yasnippet]] - Advanced copy-paste using Yasnippet. - [[https://github.com/mkcms/ivy-yasnippet][ivy-yasnippet]] - Preview yasnippet snippets with ivy. - [[https://github.com/minad/tempel][Tempel]]: Template package which uses the syntax of the Emacs Tempo library. *** Text Conversion - [[https://github.com/mrkkrp/fix-word][fix-word]] - Transform words in Emacs (upcase, downcase, capitalize). - [[https://github.com/akicho8/string-inflection][string-inflection]] - Conversion of text between lowercase, uppercase, camelcase etc. ** Programming - [[https://cedet.sourceforge.net/][CEDET]] - =[built-in]= an advanced development environment in Emacs. - [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Language-Grammar.html][treesit.el]] - =[built-in]= tree-sitter utilities. - [[https://github.com/emacs-tree-sitter/elisp-tree-sitter][tree-sitter.el]] - Incremental parsing system. - [[https://github.com/emacs-tree-sitter/tree-sitter-langs][tree-sitter-langs]] - Language bundle for Emacs's tree-sitter package. - [[https://github.com/thoni56/c-xrefactory][C-xrefactory]] - refactoring tool and code browser for C and [Java](/@harrisonqian/awesome/wiki/programming-languages/java). - [[https://github.com/redguardtoo/evil-nerd-commenter][evil-nerd-commenter]] - Comment/uncomment lines efficiently. Like Nerd Commenter in Vim. This program can be used independently without evil-mode. - [[https://doxymacs.sourceforge.net/][Doxymacs]] - Doxymacs is Doxygen + {X}Emacs. - [[https://github.com/lassik/emacs-format-all-the-code][format-all]] - Auto-format source code in many languages using the same command. - [[https://github.com/radian-software/apheleia][apheleia]] - Run code formatter on buffer contents without moving point, using RCS patches and dynamic programming. - [[https://github.com/kickingvegas/casual/blog/main/docs/re-builder.org][Casual RE-Builder]] - a Transient user interface for RE-Builder, the built-in Elisp regular expression tool. Included in [[https://github.com/kickingvegas/casual][Casual]]. - [[https://github.com/emacs-vs/codemetrics][codemetrics]] - Plugin shows complexity information. - [[https://github.com/renzmann/treesit-auto][treesit-auto]] - Automatically setup and use the built-in tree-sitter, by installing grammars and using tree-sitter major modes. *** 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](https://github.com/emacs-tw/awesome-emacs)*