selectrum: update TODO, add docs/modules.org entry

This commit is contained in:
Itai Y. Efrat 2021-06-29 20:16:29 +03:00
parent 3283acbde9
commit 83abd71db7
2 changed files with 42 additions and 23 deletions

View file

@ -46,6 +46,7 @@ completion.
+ helm =+fuzzy +childframe= - *Another* search engine for love and life + helm =+fuzzy +childframe= - *Another* search engine for love and life
+ ido - The /other/ *other* search engine for love and life + ido - The /other/ *other* search engine for love and life
+ [[file:../modules/completion/ivy/README.org][ivy]] =+fuzzy +prescient +childframe +icons= - /The/ search engine for love and life + [[file:../modules/completion/ivy/README.org][ivy]] =+fuzzy +prescient +childframe +icons= - /The/ search engine for love and life
+ [[file:../modules/completion/selectrum/README.org][selectrum]] =+prescient= - The search engine of the future
* :config * :config
Modules that configure Emacs one way or another, or focus on making it easier Modules that configure Emacs one way or another, or focus on making it easier

View file

@ -1,7 +1,8 @@
* PROJ Design Decisions * PROJ Design Decisions
** TODO bind =consult-lsp-diagnostics= to something? ** TODO Bind =consult-lsp-diagnostics= to something?
** TODO finalize =embark-act= keybindings ** TODO Finalize =embark-act= keybindings
They are currently set to =C-;= and =<leader> a=. The motivation for this is as follows: They are currently set to =C-;= and =<leader> a=. The motivation for this is as
follows:
*** =C-;= *** =C-;=
Least intrusive key-chord type binding I could find. Doesn't interfere with Least intrusive key-chord type binding I could find. Doesn't interfere with
other keybindings for the most part (unlike =C-o= which clashes for in other keybindings for the most part (unlike =C-o= which clashes for in
@ -13,20 +14,20 @@ exception of:
We could also just bind it in the minibuffer if we do end up going with the We could also just bind it in the minibuffer if we do end up going with the
leader key. leader key.
*** Alternative chord: =C-,= *** Alternative chord: =C-,=
still has some overlaps, but perhaps less important: Still has some overlaps, but perhaps less important:
- ~flyspell-goto-next-error~ - ~flyspell-goto-next-error~
- ~org-cycle-agenda-files~ has redundancy in =C-'= anway. - ~org-cycle-agenda-files~ has redundancy in =C-'= anyway.
It is however less convenient than =C-;= It is however less convenient than =C-;=
*** =<leader> a= *** =<leader> a=
Even though top level module dependant bindings are frowned upon, here is my Even though top level module dependant bindings are frowned upon, here is my
case for why this should be an exception: case for why this should be an exception:
- It provide a useful shortcut for a bunch of commands relevant to the symbol at - It provide a useful shortcut for a bunch of commands relevant to the symbol at
point, and seems to be better at this than built in stuff, e.g. doing =<leader> f point, and seems to be better at this than built in stuff, e.g. doing
D= to delete a file in =eshell= doesn't work, but embark recognies that it's a =<leader> f D= to delete a file in =eshell= doesn't work, but embark
file, so =<leader> a d= does. recognises that it's a file, so =<leader> a d= does.
- other than helping with discoverability for stuff this also allows for - other than helping with discoverability for stuff this also allows for
commands for things that are too niche for top level bindings, such as actions commands for things that are too niche for top level bindings, such as actions
on ~package!~ statements and recipes or url's. on ~package!~ statements and recipes or urls.
- selectrum is slated to become the default completion module, which makes this - selectrum is slated to become the default completion module, which makes this
less of an inconsistency, but I'm not sure about the performance slowdown in less of an inconsistency, but I'm not sure about the performance slowdown in
~map!~ since that seems to be one of the main concerns. ~map!~ since that seems to be one of the main concerns.
@ -34,7 +35,7 @@ case for why this should be an exception:
installed independently, so if you find it sufficiently useful you could also installed independently, so if you find it sufficiently useful you could also
have a stripped down version of the config in doom core that is just used for have a stripped down version of the config in doom core that is just used for
on-buffer actions. on-buffer actions.
** TODO consider dropping prescient flag ** TODO Consider dropping prescient flag
The only advantage over orderless is frecency over recency, without the better The only advantage over orderless is frecency over recency, without the better
integration orderless has with built in emacs completion. A compromise might be integration orderless has with built in emacs completion. A compromise might be
to have ~+prescient~ just add prescient sorting, but it's probably not worth the to have ~+prescient~ just add prescient sorting, but it's probably not worth the
@ -45,20 +46,27 @@ does something else (give you previously used isearch search terms). Bound to
regular isearch for now. regular isearch for now.
** TODO =SPC s B= ** TODO =SPC s B=
Selectrum/Consult don't have a ~swiper-all~ analogue either. Unbound for now. Selectrum/Consult don't have a ~swiper-all~ analogue either. Unbound for now.
** TODO orderless style dispatchers ** TODO Orderless style dispatchers
Currently the =!= style dispatcher is only as a prefix, due to the abundance of Currently the =!= style dispatcher is only as a prefix, due to the abundance of
=!= final macros. In my opinion this is useful enough to break consistency. =!= final macros. In my opinion this is useful enough to break consistency.
** TODO =C-c C-e= ** TODO =C-c C-e=
on ~consult-line~ this opens a ~occur-edit~ buffer, which is a more natural fit On ~consult-line~ this opens a ~occur-edit~ buffer, which is a more natural fit
but breaks slightly from the =C-c C-e= = =wgrep= convention. 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 ** TODO Annotation Customization
Do we want to have the annotations be more like ivy? e.g. 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. - Have a project column in the buffer annotations and a relative path? This has
- Mark the modified/remote status of the buffer with color, on top of the modification column? 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? - Change colors in general?
** TODO Consider renaming the module
=:completion selectrum= is a bit of a misnomer. Selectrum is probably the
most easily replaceable part of the module as it can replaced with Vertico
fairly easily, other than losing the ~selectrum-repeat~ command. However,
naming is hard™. Best alternative I can think of is =:completion modular=.
* PROJ HACKs to be addressed * PROJ HACKs to be addressed
** TODO ~fboundp~ issues ** TODO ~fboundp~ issues
@ -78,10 +86,18 @@ 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 Icons ** TODO Icons
Partially solved, seems to have interaction with selectrum height issue, so not yet implemented. Partially solved, seems to have interaction with selectrum height issue, so not
yet implemented.
** TODO ~company~ completions get ordered really weirdly
This is due to orderless adding a bunch of other matches.
* PROJ Review non-blocking Issues
** TODO Profile selectrum =SPC /= vs ivy =SPC /= ** TODO Profile selectrum =SPC /= vs ivy =SPC /=
Check if there are other places where optimisations can be made. Perhaps the
~command-input-async~ variables can tolorate lower values.
** TODO ~(defadvice! +orderless-match-with-one-face..~ causes lexical error ** TODO ~(defadvice! +orderless-match-with-one-face..~ causes lexical error
probably caused by some doomism Probably caused by some doomism
https://github.com/oantolin/orderless/issues/41 https://github.com/oantolin/orderless/issues/41
* PROJ Upstream Issues * PROJ Upstream Issues
@ -91,24 +107,26 @@ https://github.com/raxod502/selectrum/issues/491
Unlike Ivy, ~selectrum-repeat~ doesn't restore the position of the selection in 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 the completion buffer. Seems to be reproduced in ~emacs -Q~. If so, create
upstream selectrum issue. upstream selectrum issue.
** TODO Marginalia annotations sometimes disappear on ~find-file~
https://github.com/raxod502/selectrum/issues/561
* PROJ Extra credit * 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
ones. Binding the ~bibtex-actions-map~ there would probably be better, but there ones. Binding the ~bibtex-actions-map~ there would probably be better, but there
are nontrivial loading order shenanigans happening that make that not are nontrivial loading order shenanigans happening that make that not
straightforward. straightforward.
** TODO buffer switching ** TODO Buffer switching
- =SPC b b= should switch workspace after choosing a buffer from a different one - =SPC b b= should switch workspace after choosing a buffer from a different one
- universal argument for opening buffer in another window? - Universal argument for opening buffer in another window?
** TODO Ivy Parity ** TODO Ivy Parity
*** 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
*** 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 (needs a consult analogue of
(needs a consult analogue of ~counsel-search~) ~counsel-search~)
*** WAIT taskrunner module *** WAIT taskrunner module
in all likelihood requires writing ~consult-taskrunner~. in all likelihood requires writing ~consult-taskrunner~.