doomemacs/modules/completion/selectrum/TODO.org
Itai Y. Efrat f136521c19 selectrum: sudo-edit -> doom/sudo-find-file...
doom doesn't use `sudo-edit`
also update TODO with subsequent marginalia tasks
2021-07-25 02:50:42 +03:00

6.2 KiB

PROJ Design Decisions

TODO bind consult-lsp-diagnostics to something?

TODO finalize embark-act keybindings

They are currently set to C-; and <leader> a. The motivation for this is as follows:

C-;

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 minibuffer evil-want-minibuffer users and regular buffer evil users), with the exception of:

  • C-; is bound to flyspell-auto-correct-previous-word. via the built in flyspell map.
  • C-; is bound to +company/complete in the vanilla emacs bindings.

We could also just bind it in the minibuffer if we do end up going with the leader key.

Alternative chord: C-,

still has some overlaps, but perhaps less important:

  • flyspell-goto-next-error
  • org-cycle-agenda-files has redundancy in C-' anway.

It is however less convenient than C-;

<leader> a

Even though top level module dependant bindings are frowned upon, here is my case for why this should be an exception:

  • 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 D to delete a file in eshell doesn't work, but embark recognies that it's a file, so <leader> a d does.
  • 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 on package! statements and recipes or url's.
  • 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 map! since that seems to be one of the main concerns.
  • embark like most packages in the selectrum cinematic universe can be 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 on-buffer actions.

TODO consider dropping prescient flag

The only advantage over orderless is frecency over recency, without the better 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 maintenance burden.

TODO SPC s s and SPC s S :sw ?

There isn't really a selectrum analogue to swiper-isearch, consult-isearch does something else (give you previously used isearch search terms). Bound to regular isearch for now.

TODO SPC s B

Selectrum/Consult don't have a swiper-all analogue either. Unbound for now.

TODO orderless style dispatchers

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.

TODO C-c C-e

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.

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. I like having them around but I can always just add them to my private config.

PROJ HACKs to be addressed

fboundp issues

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 logic such here and here won't work unless the selectrum option is checked first, which is what we do for now.

projectile-switch-project-action definition

Without 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.

PROJ Bugs

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

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 though at least the bookmark function ostensibly uses 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.

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 bibtex-actions improvements?

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 ones. Binding the bibtex-actions-map there would probably be better, but there are nontrivial loading order shenanigans happening that make that not straightforward.

TODO buffer switching

  • SPC b b should switch workspace after choosing a buffer from a different one
  • universal argument for opening buffer in another window?

TODO Ivy Parity

TODO C-RET on minibuffer?

TODO pass module

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

  • dash-docs backend (needs to be created)
  • +lookup--online.. functionality (needs a consult analogue of counsel-search)

WAIT taskrunner module

in all likelihood requires writing consult-taskrunner.