shaka
1
我在用emacs开发c++的时候发现, imenu依赖于semantic-mode. 也就是说, 打开semantic-mode的时候, imenu工作正常, 能够列出当前buffer所有的类成员函数. 但是如果不开semantic-mode, imenu彻底失效. 因为semantic-mode打开的情况下, emacs反应有点慢, 而且每次写注释的时候都会对系统头文件进行索引, 常常造成emacs卡顿. 所以我想把semantic-mode关掉.
BTW, 整个C++工程定义在独立的命名空间(namespace)中, 而且命名空间所有的类定义, 函数定义都采用了缩进.
大家在用imenu的时候有没有遇到这种问题. 是怎么解决的? 这个问题困扰我很久了, 一直没有找到解决办法.
一个namespace里,但是是多个文件里的?那估计是semantic-mode自己有个复杂的实现,可以看看变量imenu-create-index-function
的值,然后看看那个函数的实现。觉得卡又实在要用,可以设置成idle 30秒再重索引之类的,陈斌的博客有讲(用ctag还是gtag时)当idle的时候再重建tag文件的文章,可以找找。
M-: imenu-create-index-function
-> lsp--imenu-create-index
M-x imenu
時lsp-mode會發送textDocument/documentSymbol
請求,很多language server不支持,cquery支持
shaka
5
把imenu-create-index-function改为lsp–imenu-create-index, 还是和原来一样, 没有反应.