搜索项目符号时如何自动预览结果条目所在的上下文?

我是用了半年doom-emacs的新手,2022-06-06更新的,completion用的是vertico(之前是ivy),Lang是(cc +lsp),其他配置基本没有修改。

想请教一下各位老手,如下图,我对一个符号(截图e处)进行搜索,用的是+default/search-project-for-symbol-at-point (SPC *)功能, 出来的结果有多个:

用vertico或ivy方案都可以:

  1. 有没有办法可以配置成类似+default/search-buffer (SPC s s)那样,在结果列表的行间切换时(比如用Ctrl n从a切换到b时),buffer会自动预览b所在的位置上下文(task_pc.c:88)?

  2. 如果我对a处的结果按回车将buffer切换过去了,我发现该位置不是我想找的,我想快速跳转到结果列表的下一个条目(b处),有没有相关的功能?以前用ivy的时候,我是按resume last search(SPC ')弹出搜索结果列表,再按Ctrl n回车来切换的,但同样的操作vertico在按回车切换完一次之后,下次再(SPC ')弹出搜索结果列表发现当前选中的行位置已经又从第一行开始了。

首次发帖求助,如果有缺少关键描述,请帮忙提出,谢谢各位。

  1. 可以试试 consult-grep or consult-ripgrep
  2. 试试把 vertico 换成 selectrum , selectrum-repeat 效果和 ivy-resume 貌似相同

建议每个帖子一个问题

  1. +default/search-project-for-symbol-at-point 如果用的是 vertico,doom 中默认设置为手动触发预览 (C-SPCdoomemacs/config.el at ec6bd0df0f3a3ee8a031c0d544f900d16661a192 · doomemacs/doomemacs · GitHub 。之所以手动大概是因为如果自动预览上下移动会打开很多文件,且速度较慢。可以自定义为自动,手动,延迟一定时间,详见 GitHub - minad/consult: consult.el - Consulting completing-read

  2. 我这边 vertico-repeat 无法工作了😂,试试 C-u SPC '?

ivy 不是 c-c c-c吗。helm是c-c c-f

不太会换selectrum, 我看doom的init.el里completion段没有它,只有helm, ido, ivy, vertico

  1. 按你说的设置, vertico能达到我想要的自动预览效果 :smiley: 但貌似ivy没有延迟的参数, 或者我没有发现
  2. C-u在我这里直接翻半页了, SPC ' 就是再次显示搜索结果, 但高亮行是首行, 不像ivy那样保持我最后高亮选中的第N行 所以为了第2点, 我还是用ivy了, 目前第1点只能按C-SPC来手动预览

我把 vertico-repeat 配置好之后,如果 M-x vertico-repeat-select 发现是有记录最后选了啥的,但是 vertcio-repeat 的时候没有恢复到选择的,感觉可以向作者提个 issue。

用ivy的话看看ivy-callingC-o调出hydra,可以单独设置。

我试了试 vertico, 发现 vertico-repeat 的效果和 ivy-resume 不一样,才换成了 selectrum.

你用consult-ripgrep吗,这个selectrum也能resume到原来位置?

呃, 试了一下,ripgrep 的结果会在 resume 时候重新生成,所以并不完美,我这里一般配合 consult-lines 或者 xref 来用,满足要求。