Alexander-Miller/treemacs@6857816 -> Alexander-Miller/treemacs@9eaef27 DarwinAwardWinner/amx@b991497 -> DarwinAwardWinner/amx@37f9c7a Dewdrops/evil-exchange@3030e21 -> Dewdrops/evil-exchange@ac50f21 JuliaEditorSupport/julia-emacs@8ea90c7 -> JuliaEditorSupport/julia-emacs@fe6f6f7 OmniSharp/omnisharp-emacs@8ec5929 -> OmniSharp/omnisharp-emacs@5fad683 ProofGeneral/PG@bdb6782 -> ProofGeneral/PG@f0f0476 Sarcasm/irony-mode@76fd37f -> Sarcasm/irony-mode@ec6dce7 Silex/docker.el@0ca910b -> Silex/docker.el@ed0cdf0 Wilfred/helpful@584ecc8 -> Wilfred/helpful@7e4b1f0 abo-abo/swiper@1deef76 -> abo-abo/swiper@bb7965a agda/agda@9d08edb -> agda/agda@ecb9323 akermu/emacs-libvterm@a3fadd2 -> akermu/emacs-libvterm@1bc4516 akreisher/eshell-syntax-highlighting@172c9fb -> akreisher/eshell-syntax-highlighting@eeace52 alexmurray/flycheck-posframe@24fd9b3 -> alexmurray/flycheck-posframe@8f60c9b amake/flutter.el@696228a -> amake/flutter.el@960b635 ananthakumaran/tide@7f7334b -> ananthakumaran/tide@ad6fa78 asok/projectile-rails@8d6b373 -> asok/projectile-rails@f1fe6e8 bastibe/org-journal@f4b1549 -> bastibe/org-journal@043bb9e bbatsov/projectile@fd59947 -> bbatsov/projectile@1528ed4 bradyt/dart-mode@04fcd64 -> bradyt/dart-mode@43975c9 brotzeit/rustic@61d600e -> brotzeit/rustic@d97ec86 charignon/github-review@d0c8234 -> charignon/github-review@341b7a1 clojure-emacs/cider@815204f -> clojure-emacs/cider@4278d7c clojure-emacs/clj-refactor.el@b24ce76 -> clojure-emacs/clj-refactor.el@9f3e735 clojure-emacs/clojure-mode@f26379b -> clojure-emacs/clojure-mode@a14671e codesuki/add-node-modules-path@f31e69c -> codesuki/add-node-modules-path@7d9be65 company-mode/company-mode@88001d7 -> company-mode/company-mode@7207cb1 cpitclaudel/company-coq@4da7b41 -> cpitclaudel/company-coq@7423ee2 cython/cython@9a761a6 -> cython/cython@9decfca dgutov/diff-hl@4c46b3b -> dgutov/diff-hl@1af31fe dgutov/robe@3ef165c -> dgutov/robe@126650a domtronn/all-the-icons.el@2f5ea72 -> domtronn/all-the-icons.el@a8c8417 editorconfig/editorconfig-emacs@048c553 -> editorconfig/editorconfig-emacs@9da2dab elixir-editors/emacs-elixir@9de08c1 -> elixir-editors/emacs-elixir@0212b06 ema2159/centaur-tabs@50fd573 -> ema2159/centaur-tabs@df97209 emacs-csharp/csharp-mode@09b4d57 -> emacs-csharp/csharp-mode@f977800 emacs-ess/ESS@5169b0d -> emacs-ess/ESS@126d344 emacs-evil/evil-collection@334670e -> emacs-evil/evil-collection@b45ec5b emacs-evil/evil@cc9d688 -> emacs-evil/evil@7eace67 emacs-helm/helm-org@b7a18df -> emacs-helm/helm-org@d67186d emacs-helm/helm@dbdec63 -> emacs-helm/helm@98af298 emacs-jp/migemo@f42832c -> emacs-jp/migemo@f756cba emacs-lsp/dap-mode@aa15b9c -> emacs-lsp/dap-mode@ae395aa emacs-lsp/helm-lsp@e934fea -> emacs-lsp/helm-lsp@74a02f8 emacs-lsp/lsp-dart@71902ca -> emacs-lsp/lsp-dart@f3b70ec emacs-lsp/lsp-ivy@c70ee8b -> emacs-lsp/lsp-ivy@515e597 emacs-lsp/lsp-java@5f6d357 -> emacs-lsp/lsp-java@542aaf1 emacs-lsp/lsp-metals@c76eeb6 -> emacs-lsp/lsp-metals@51a89c1 emacs-lsp/lsp-mode@c3cbadc -> emacs-lsp/lsp-mode@eda51c2 emacs-lsp/lsp-ui@0ac3e12 -> emacs-lsp/lsp-ui@1dbea9f emacs-php/php-mode@8cdc727 -> emacs-php/php-mode@a2bca9b emacs-php/phpactor.el@62d2372 -> emacs-php/phpactor.el@80788a8 emacs-straight/auctex@384c4b9 -> emacs-straight/auctex@0f3639a emacs-straight/dired-git-info@b47f2b0 -> emacs-straight/dired-git-info@9461476 emacs-straight/org-mode@0b117f7 -> emacs-straight/org-mode@7a62a4d emacs-straight/project@2e7afbe -> emacs-straight/project@388ffdf emacs-straight/xclip@2951c6b -> emacs-straight/xclip@ef2ad92 emacsattic/nose@f852829 -> emacsattic/nose@f852829 emacsorphanage/quickrun@8008780 -> emacsorphanage/quickrun@57db985 erlang/otp@af06b43 -> erlang/otp@94c9738 factor/factor@1928e60 -> factor/factor@5bfeab6 flycheck/flycheck@01396a5 -> flycheck/flycheck@f8c679f greghendershott/racket-mode@75ea8f6 -> greghendershott/racket-mode@5115c47 hakimel/reveal.js@0582f57 -> hakimel/reveal.js@cf8e64b haskell/haskell-mode@3a019e6 -> haskell/haskell-mode@1baa12a hlissner/doom-snippets@aa5587b -> hlissner/doom-snippets@afe549b hlissner/emacs-counsel-css@6427dfc -> hlissner/emacs-counsel-css@f7647b4 hlissner/emacs-doom-themes@55f01ed -> hlissner/emacs-doom-themes@4199e74 hlissner/emacs-solaire-mode@a8fe09d -> hlissner/emacs-solaire-mode@9d143db hvesalai/emacs-sbt-mode@7b121fc -> hvesalai/emacs-sbt-mode@0bdc36b hvesalai/emacs-scala-mode@402d6df -> hvesalai/emacs-scala-mode@1ab5f64 ideasman42/emacs-spell-fu@a7db587 -> ideasman42/emacs-spell-fu@30c5eea iqbalansari/emacs-emojify@cfa0086 -> iqbalansari/emacs-emojify@1b72641 jacktasia/dumb-jump@f6a1165 -> jacktasia/dumb-jump@8bc1950 jaor/geiser@26dd2f4 -> jaor/geiser@8e61c27 jcollard/elm-mode@188b9c7 -> jcollard/elm-mode@e9fcf9c jkitchin/ox-clip@38b83ac -> jkitchin/ox-clip@2095537 joaotavora/eglot@a2d1fc9 -> joaotavora/eglot@2fbcab2 joaotavora/sly@fb84318 -> joaotavora/sly@5966d68 jorgenschaefer/circe@265f36c -> jorgenschaefer/circe@e67e2d1 js-emacs/js2-refactor.el@d4c40b5 -> js-emacs/js2-refactor.el@a0977c4 js-emacs/xref-js2@6f1ed5d -> js-emacs/xref-js2@fd6b723 jscheid/dtrt-indent@4a30d8e -> jscheid/dtrt-indent@37529fc justbur/emacs-which-key@c0608e8 -> justbur/emacs-which-key@c632dbf justinbarclay/parinfer-rust-mode@c825606 -> justinbarclay/parinfer-rust-mode@f130fa0 jyp/dante@7b1ab64 -> jyp/dante@8741419 kaushalmodi/ox-hugo@a05667e -> kaushalmodi/ox-hugo@02140a2 kidd/org-gcal.el@0a6f9a7 -> kidd/org-gcal.el@d38acda leanprover/lean-mode@15bee87 -> leanprover/lean-mode@5c50338 ledger/ledger-mode@3495d12 -> ledger/ledger-mode@32fef09 magit/forge@8382fd3 -> magit/forge@f4c95dd magit/magit@4735b92 -> magit/magit@577f16d magit/orgit@ac9b1a4 -> magit/orgit@609fd0c magnars/expand-region.el@ea6b4cb -> magnars/expand-region.el@4b83227 magnars/multiple-cursors.el@a9d7764 -> magnars/multiple-cursors.el@7b13b03 mhayashi1120/Emacs-wgrep@f0ef9bf -> mhayashi1120/Emacs-wgrep@f9687c2 millejoh/emacs-ipython-notebook@4ff76e5 -> millejoh/emacs-ipython-notebook@142ff50 non-Jedi/lsp-julia@c523c25 -> non-Jedi/lsp-julia@c487ed7 nonsequitur/inf-ruby@1fc972e -> nonsequitur/inf-ruby@c6990a6 ocaml-ppx/ocamlformat@7db8d13 -> ocaml-ppx/ocamlformat@448ac7c ocaml/dune@f839fc1 -> ocaml/dune@a88ce5b ocaml/merlin@36d0aef -> ocaml/merlin@cc17ed6 ocaml/tuareg@ccde45b -> ocaml/tuareg@37a6730 org-roam/org-roam@b0fd126 -> org-roam/org-roam@8ad57b1 purcell/diredfl@cd052df -> purcell/diredfl@4ca3265 purcell/envrc@a7c6ca8 -> purcell/envrc@110a221 purescript-emacs/purescript-mode@8410baf -> purescript-emacs/purescript-mode@0acd1af racer-rust/emacs-racer@f17f9d7 -> racer-rust/emacs-racer@1e63e98 raxod502/prescient.el@9631db7 -> raxod502/prescient.el@8573df9 redguardtoo/evil-nerd-commenter@2730820 -> redguardtoo/evil-nerd-commenter@b8ac35f rolandwalker/flyspell-lazy@d57382c -> rolandwalker/flyspell-lazy@0fc5996 rubocop/rubocop-emacs@1372ee3 -> rubocop/rubocop-emacs@f5fd18a seagle0128/doom-modeline@5fe7fd6 -> seagle0128/doom-modeline@00bc89b seagle0128/grip-mode@1aebf9c -> seagle0128/grip-mode@98d566d skeeto/elfeed@362bbe5 -> skeeto/elfeed@e29c8b9 skk-dev/ddskk@275a831 -> skk-dev/ddskk@cec9936 snosov1/toc-org@aef220c -> snosov1/toc-org@c4c61c5 spotify/dockerfile-mode@ed1d04c -> spotify/dockerfile-mode@3b13745 takaxp/org-tree-slide@c9487e5 -> takaxp/org-tree-slide@9d2ba1d technomancy/fennel-mode@bebc9dd -> technomancy/fennel-mode@ba14a7d travisbhartwell/nix-emacs@977b9a5 -> travisbhartwell/nix-emacs@053a2d5 tumashu/posframe@3454a4c -> tumashu/posframe@fff21cc tumashu/pyim@e54153f -> tumashu/pyim@f48c3ed widefox/flycheck-raku@046f35a -> widefox/flycheck-raku@b1acccd wyuenho/all-the-icons-dired@fc2dfa1 -> wyuenho/all-the-icons-dired@f401fe2 xuchunyang/elisp-demos@ed9578d -> xuchunyang/elisp-demos@924b07d xuchunyang/osx-dictionary.el@1b79ff6 -> xuchunyang/osx-dictionary.el@4d4cc19 yqrashawn/fd-dired@9fb966d -> yqrashawn/fd-dired@7d18938 yyoncho/helm-icons@5a668ef -> yyoncho/helm-icons@e4a2cd1 Closes #4786 Closes #4801 Closes #4803 Skipped bumping straight.el because of raxod502/straight.el#714. Will adapt soon.
completion/helm
Description
This module provides Helm integration for a variety of Emacs commands, as well as a unified interface for project search and replace, powered by ripgrep.
I prefer ivy over ido for its flexibility. I prefer ivy over helm because it's lighter, simpler and faster in many cases.
Ivy is considered a first-class citizen in Doom, however it is still possible to use Helm if you so desire.
Module Flags
+fuzzy
Enables fuzzy completion for Helm searches.+childframe
Causes Helm to display in a floating child frame, above Emacs.+icons
Enables icons (supports bothall-the-icons
andtreemacs
icons)
Plugins
- helm
- helm-rg
- helm-c-yasnippet
- helm-company
- helm-describe-modes
- helm-projectile
- helm-swiper
- helm-descbinds
- helm-flx* (
+fuzzy
) - helm-posframe* (
+childframe
) - helm-org* (
:lang org
) - helm-icons* (
+icons
)
Prerequisites
This module depends on:
- ripgrep (rg)
Install
MacOS
brew install ripgrep
Arch Linux
sudo pacman --needed --noconfirm -S ripgrep
openSUSE
sudo zypper install ripgrep
Features
Much like Ivy, Helm is a large framework and as such covering everything is not in scope, however a number of Doom-specific features are shown below:
Jump-to navigation
Similar to Ivy, this module provides an interface to
navigate within a project using projectile
:
Keybind | Description |
---|---|
SPC p f , SPC SPC |
Jump to file in project |
SPC f f , SPC . |
Jump to file from current directory |
SPC s i |
Jump to symbol in file |
Project search & replace
This module also provides interacetive text search and replace using ripgrep
Search
Keybind | Description |
---|---|
SPC s p |
Search project |
SPC s P |
Search another project |
SPC s d |
Search this directory |
SPC s D |
Search another directory |
Prefixing these keys with the universal argument (SPC u
for evil users; C-u
otherwise) changes the behavior of these commands, instructing the underlying
search engine to include ignored files.
This module also provides Ex Commands for evil users:
Ex command | Description |
---|---|
:pg[rep][!] [QUERY] |
Search project (if ! , include hidden files) |
:pg[rep]d[!] [QUERY] |
Search from current directory (if ! , don't search recursively) |
The optional `!` is equivalent to the universal argument for the previous commands.
Replace
These keybindings are available while a search is active:
Keybind | Description |
---|---|
C-c C-o |
Open a buffer with your search results |
C-c C-e |
Open a writable buffer of your search results |
C-SPC |
Preview the current candidate |
C-RET |
Open the selected candidate in other-window |
Changes to the resulting wgrep buffer (opened by C-c C-e
) can be committed
with C-c C-c
and aborted with C-c C-k
(alternatively ZZ
and ZQ
, for evil
users).
In-buffer searching
The swiper
package provides an interactive buffer search powered by helm. It
can be invoked with:
SPC s s
(swiper-isearch
)SPC s S
(swiper-isearch-thing-at-point
)SPC s b
(swiper
):sw[iper] [QUERY]
A wgrep buffer can be opened from swiper with C-c C-e
.
Helm integration for various completing commands
Helm also has a number of overrides for built-in functionality:
General
Keybind | Description |
---|---|
M-x , SPC : |
Smarter, smex-powered M-x |
SPC ' |
Resume last ivy session |
Jump to files, buffers or projects
Keybind | Description |
---|---|
SPC RET |
Find bookmark |
SPC f f , SPC . |
Browse from current directory |
SPC p f , SPC SPC |
Find file in project |
SPC f r |
Find recently opened file |
SPC p p |
Open another project |
SPC b b , SPC , |
Switch to buffer in current workspace |
SPC b B , SPC < |
Switch to buffer |
Search
Keybind | Description |
---|---|
SPC p t |
List all TODO/FIXMEs in project |
SPC s b |
Search the current buffer |
SPC s d |
Search this directory |
SPC s D |
Search another directory |
SPC s i |
Search for symbol in current buffer |
SPC s p |
Search project |
SPC s P |
Search another project |
SPC s s |
Search the current buffer (incrementally) |
Configuration
Icons
Icons are now included, and support 2 providers (all-the-icons and treemacs).
By default, to maintain consistency we use all-the-icons
; however if you wish
to modify this you can do so using the below snippet:
(after! helm
(setq helm-icons-provider 'treemacs))