doomemacs/modules/completion/selectrum
Itai Y. Efrat 49a5c51615 selectrum: fix bugs when counsel is loaded (hack)
some doom functions check the completion module with `fboundp`'s instead
of `featurep!`, and counsel can be loaded by using e.g. `lispy`. we add
temporary fixes for this by checking for selectrum stuff first, but this
should be given a more robust fix later on

also we document the selectrum PR's hacks in the TODO.org

see discussion on #5013
2021-07-25 02:50:42 +03:00
..
autoload selectrum: partially fix selectrum-repeat issue 2021-07-25 02:50:42 +03:00
config.el selectrum: set manual preview to all grep variants 2021-07-25 02:50:42 +03:00
packages.el Bump :completion selectrum 2021-07-25 02:50:42 +03:00
README.org selectrum: improve bindings 2021-07-25 02:50:42 +03:00
TODO.org selectrum: fix bugs when counsel is loaded (hack) 2021-07-25 02:50:42 +03:00

completion/selectrum

Description

This module provides Selectrum integration for a variety of Emacs commands, as well as a unified interface for project search and replace, powered by ripgrep.

TODO

Module Flags

  • +prescient Enables prescient filtering and sorting for Selectrum searches instead of orderless.

Plugins

selectrum consult embark embark-consult marginalia orderless (unless +prescient) wgrep prescient (+prescient) consult-flycheck (:checkers syntax)

Prerequisites

This module has no prerequisites.

Features

Selectrum and friends modify and use the built-in completing-read function, used by any function that requires completion. Due to this the full scope of these packages is too large to cover here, so we will detail Doom-specific additions:

Jump-to navigation

This module provides an interface to navigate within a project using projectile:

https://assets.doomemacs.org/completion/selectrum/projectile.png

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 provides interactive text search and replace using ripgrep.

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

https://assets.doomemacs.org/completion/selectrum/search.png

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.


These keybindings are available while a search is active:

Keybind Description
C-o Open an embark-act menu to chose a useful action
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).

https://assets.doomemacs.org/completion/selectrum/search-replace.png

TODO In-buffer searching

This module provides some in buffer searching bindings:

  • SPC s s (isearch)
  • SPC s S (+selectrum/search-symbol-at-point via consult-line)
  • SPC s b (consult-line)

https://assets.doomemacs.org/completion/selectrum/buffer-search.png

A wgrep buffer can be opened from consult-line with C-c C-e (not yet).

Selectrum integration for various completing commands

General

Keybind Description
M-x, SPC : Enhanced M-x
SPC ' Resume last Selectrum 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)

Orderless filtering

When using orderless to filter through candidates, the default behaviour is for each space separated inputs to match the candidate as a regular expression or literally.

You can further specify each space separated input in the following ways:

Input Description
!foo or foo! match without literal input foo
`bar or bar` match input bar as an initialism
=baz or baz= match only with literal input baz
~qux or qux~ match input qux with fuzzy/flex matching