#+HTML:
- 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:
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-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]]
- [[#window--frame-management][Window & Frame Management]]
- [[#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]]
- [[#javascript][JavaScript]]
- [[#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]]
- [[#ai][AI]]
- [[#code-completion][Code Completion]]
- [[#chatgpt][ChatGPT]]
- [[#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]]
- [[#installation][Installation]]
- [[#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-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]] and the Homebrew [[https://github.com/d12frosted/homebrew-emacs-plus][Emacs Plus]] formula for installation candidates. 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/JAremko/docker-emacs][JAremko/docker-emacs]] - Dockerized emacs with GUI (Mac, Windows, GNU/Linux and your browser). - [[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.
*** 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/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/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/ema2159/centaur-tabs][centaur-tabs]] - Aesthetic, functional tabs plugin with icons and styles, Helm, Ivy and Projectile integration, supported by many popular themes.
*** 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/doitian/iy-go-to-char][iy-go-to-char]] - Go to next CHAR which is similar to "f" and "t" in vim, works well with Multiple Cursors.
- [[https://github.com/camdez/goto-last-change.el][goto-last-change]] - 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.
-