doomemacs/modules/completion/helm
2022-03-30 17:32:47 +02:00
..
autoload Bump :ui doom 2021-05-21 23:13:14 -04:00
config.el Remove remaining Emacs27+ checks 2021-07-10 16:03:41 +03:00
packages.el bump: :completion 2022-03-30 17:32:47 +02:00
README.org remove ripgrep dependency from ivy and helm readmes 2021-07-09 22:26:02 +03:00

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 both all-the-icons and treemacs icons)

Prerequisites

This module has no prerequisites.

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))

Posframe

Troubleshooting