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>
- 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
- #interface-enhancement][Interface Enhancement
- #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
- #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
- #project-management][Project management
- #file-manager][File Manager
- #programming-language][Programming Language
- #cc][C/C++
- #python][Python
- #ruby][Ruby
- #lisp-family][Lisp Family
- #web-development][Web Development
- #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
- #version-control][Version control
- #integration][Integration
- #markdown][Markdown
- #latex][LaTeX
- #pdf][PDF
- #internet][Internet
- #devops][DevOps
- #package-management][Package Management
- #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
- #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 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.
- 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.
**** 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 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.
- https://github.com/deb0ch/emacs-winum][emacs-winum - Window numbers for Emacs - Navigate 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.
- https://github.com/lukhas/buffer-move][buffer-move - 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 and styles, Helm, Ivy and Projectile 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 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, 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 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 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 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, 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.
- 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