selectrum: README changes, TODO overhaul...

- Add explanation for orderless usage
- Minor wording improvements
This commit is contained in:
Itai Y. Efrat 2021-06-09 18:14:36 +03:00
parent 573bd73411
commit fad34eb718
2 changed files with 38 additions and 29 deletions

View file

@ -43,10 +43,11 @@ This module has no prerequisites.
* Features * Features
Selectrum and friends modify and use the built-in ~completing-read~ function, The packages in this module modify and use the built-in ~completing-read~
used by any function that requires completion. Due to this the full scope of function, which is used by any function that requires completion. Due to this
these packages is too large to cover here, so we will detail Doom-specific the full scope of these packages is too large to cover here and you are
additions: encouraged to go and read their excellent documentation. We will detail
Doom-specific additions:
** Jump-to navigation ** Jump-to navigation
This module provides an interface to navigate within a project using This module provides an interface to navigate within a project using
@ -106,7 +107,7 @@ users).
https://assets.doomemacs.org/completion/selectrum/search-replace.png https://assets.doomemacs.org/completion/selectrum/search-replace.png
** TODO In-buffer searching ** In-buffer searching
This module provides some in buffer searching bindings: This module provides some in buffer searching bindings:
+ =SPC s s= (~isearch~) + =SPC s s= (~isearch~)
@ -159,6 +160,15 @@ When using orderless to filter through candidates, the default behaviour is for
each space separated input to match the candidate as a regular expression or each space separated input to match the candidate as a regular expression or
literally. literally.
Note that due to this style of matching, pressing tab does not expand the input
to the longest matching prefix (like shell completion), but rather uses the
first matched candidate as input. Filtering further is instead achieved by
pressing space and entering another input. In essence, when trying to match
=foobar.org=, instead of option 1., use option 2.:
1. (BAD) Enter =foo TAB=, completes to =foobar.=, enter =org RET=
2. (GOOD) Enter =foo SPC org RET=
Doom has some builtin [[https://github.com/oantolin/orderless#style-dispatchers][style dispatchers]] for more finegrained filtering, which Doom has some builtin [[https://github.com/oantolin/orderless#style-dispatchers][style dispatchers]] for more finegrained filtering, which
you can use to further specify each space separated input in the following ways: you can use to further specify each space separated input in the following ways:
| Input | Description | | Input | Description |

View file

@ -54,41 +54,45 @@ but breaks slightly from the =C-c C-e= = =wgrep= convention.
** TODO keep or discard =C-M-j= and =C-M-k= ** TODO keep or discard =C-M-j= and =C-M-k=
Scroll up and down while previewing. Essentially shortcuts for =C-(j|k) C-SPC=. Scroll up and down while previewing. Essentially shortcuts for =C-(j|k) C-SPC=.
I like having them around but I can always just add them to my private config. I like having them around but I can always just add them to my private config.
** TODO Annotation Customization
Do we want to have the annotations be more like ivy? e.g.
- have a project column in the buffer annotations and a relative path? This has some overlap with project narrowing =SPC b B p SPC.
- Mark the modified/remote status of the buffer with color, on top of the modification column?
- Change colors in general?
* PROJ HACKs to be addressed * PROJ HACKs to be addressed
** ~fboundp~ issues ** TODO ~fboundp~ issues
Even if the =ivy= module isn't loaded, it's packages can still get loaded by Even if the =ivy= module isn't loaded, it's packages can still get loaded by
other means, such as =lispy= requiring =counsel=. This means that the ~fboundp~ other means, such as =lispy= requiring =counsel=. This means that the ~fboundp~
logic such [[file:~/.emacs.d/modules/config/default/autoload/text.el::(cond ((fboundp 'consult-yank-pop) #'consult-yank-pop) ;;HACK see @ymarco's comment on #5013 and TODO.org][here]] and [[file:~/.emacs.d/core/autoload/projects.el::((fboundp 'selectrum-mode) ;HACK see @ymarco's comment on #5013 and TODO.org][here]] won't work unless the selectrum option is checked logic such [[file:~/.emacs.d/modules/config/default/autoload/text.el::(cond ((fboundp 'consult-yank-pop) #'consult-yank-pop) ;;HACK see @ymarco's comment on #5013 and TODO.org][here]] and [[file:~/.emacs.d/core/autoload/projects.el::((fboundp 'selectrum-mode) ;HACK see @ymarco's comment on #5013 and TODO.org][here]] won't work unless the selectrum option is checked
first, which is what we do for now. first, which is what we do for now.
** ~projectile-switch-project-action~ definition ** TODO ~projectile-switch-project-action~ definition
Without [[file:~/.emacs.d/modules/ui/workspaces/config.el::;; HACK?? needs review][this]] change new projects don't get opened in a new tab, but the exact Without [[file:~/.emacs.d/modules/ui/workspaces/config.el::;; HACK?? needs review][this]] change new projects don't get opened in a new tab, but the exact
working of this whole set up are a bit opaque to me. working of this whole set up are a bit opaque to me.
* PROJ Bugs * PROJ Review blocking Issues
** TODO ripgrep height logic bad
selectrum bug caused by file descriptors
https://github.com/raxod502/selectrum/issues/491
** TODO ~(defadvice! +orderless-match-with-one-face..~ causes lexical error
probably caused by some doomism
https://github.com/oantolin/orderless/issues/41
** TODO ~selectrum-repeat~ Issues
Unlike Ivy, ~selectrum-repeat~ doesn't restore the position of the selection in
the completion buffer. Seems to be reproduced in ~emacs -Q~. If so, create
upstream selectrum issue.
** TODO Embark export window buffer switching logic ** TODO Embark export window buffer switching logic
If we export bookmarks, grep session, or ~find-file~ session, when pressing If we export bookmarks, grep session, or ~find-file~ session, when pressing
enter, it opens the new buffer in another window rather than the main one, even enter, it opens the new buffer in another window rather than the main one, even
though at least the bookmark function ostensibly uses though at least the bookmark function ostensibly uses
~pop-to-buffer-same-window~. Ivy gets the window switched in the bookmarks and ~pop-to-buffer-same-window~. Ivy gets the window switched in the bookmarks and
grep case due to a custom ivy occur window switching function. grep case due to a custom ivy occur window switching function.
** TODO selectrum =SPC /= is much slower than ivy =SPC /=
requires further investigation. is ~consult-ripgrep~ slower than ~counsel-rg~?
is it something the custom search function is doing? does ivy cache stuff?
* PROJ Missing Features
** TODO Icons ** TODO Icons
https://github.com/minad/marginalia/issues/59 Partially solved, seems to have interaction with selectrum height issue, so not yet implemented.
** TODO Profile selectrum =SPC /= vs ivy =SPC /=
** TODO ~(defadvice! +orderless-match-with-one-face..~ causes lexical error
probably caused by some doomism
https://github.com/oantolin/orderless/issues/41
* PROJ Upstream Issues
** TODO Selectrum separators cause size calculation bug
https://github.com/raxod502/selectrum/issues/491
** TODO ~selectrum-repeat~ doesn't scroll to previously selected candidate
Unlike Ivy, ~selectrum-repeat~ doesn't restore the position of the selection in
the completion buffer. Seems to be reproduced in ~emacs -Q~. If so, create
upstream selectrum issue.
* PROJ Extra credit
** TODO bibtex-actions improvements? ** TODO bibtex-actions improvements?
currently =SPC n b= is bound to a function, but =bibtex-actions= doesn't have a currently =SPC n b= is bound to a function, but =bibtex-actions= doesn't have a
main dispatch function like =ivy-bibtex=, rather it has a bunch of different main dispatch function like =ivy-bibtex=, rather it has a bunch of different
@ -102,11 +106,6 @@ straightforward.
*** TODO =C-RET= on minibuffer? *** TODO =C-RET= on minibuffer?
*** TODO pass module *** TODO pass module
*** TODO ~+ivy/jump-list~ analogue *** TODO ~+ivy/jump-list~ analogue
*** TODO marginalia stuff
**** TODO (buffer) clearly mark files opened with ~doom/sudo-find-file~ (remote?) with a different color
- including remote path in parens maybe
**** TODO (buffer) have a project column and use relative paths from that
**** TODO better colors?
*** WAIT lookup module *** WAIT lookup module
- ~dash-docs~ backend (needs to be created) - ~dash-docs~ backend (needs to be created)
- ~+lookup--online..~ functionality - ~+lookup--online..~ functionality