emacs lsp-mode 如何用函数名 search 代码

我使用 lsp-mode 查看linux kernel 代码, go to definition, find reference 都可以工作, 但如何在整个源码目录范围 查找呢?比如 start_kernel 这个函数,我如何搜索找到它并打开文件?

1 个赞

lsp-find-references 只展示 ls (language server) 返回的结果,是否查找整个项目得看 ls 的实现。

clangd 自 v9 版本之后开始支持索引整个项目。你可能需要开启索引。

提问的时候最好说明使用哪个 ls,不要让别人从你的截图 mode line 上找。

2 个赞

看一下编译脚本里哪个参数可以导出compile_commands.json,之前有pr搞这种的来着。

然后索引几分钟应该就可以了

改一下lsp传给clangd的参数启用索引

1 个赞

你可能需要的只是 xref-find-apropos. 默认情况下使用的是 grep, 可以配置 xref-search-programripgrep 加快搜索速度。

自然在 lsp-mode 启用的情况下,由于 lsp-mode 提供了一个 xref backend, 当然是不会使用默认的情况珠。这个函数对应的是 language server 的 workspace/symbol.