使用 go-imenu 设置 go-mode 的 imenu 时, 意外的发现 imenu-create-index-function
已经被 lsp-mode 修改了. 像这样如果两个 hook 同时修改某个变量, 如何指定顺序呢? 或者如何在 go-mode 中把 lsp-imenu 关掉?
lspmode是如何开启的呢?
应该是go-mode-hook的作用吧!
你只需要在打开lspmode的时候再次设置那个变量就可以了。
我单独写了一个函数 foo, 先开 lsp, 再开 go-imenu, 然后加给 go-mode-hook, 结果 imenu-create-index-function
还是不对. 如果不开 lsp, 只把 go-imenu 加到 go-mode-hook 里, 这个变量就是正常的.
可能是因为go-imeun并不设置 imenu-create-index-function
你应该试试用setq设置
试试这个方法,这里的 js2-imenu-make-index 函数是我自己定义的 create-imenu-index 函数
(defun my-js2-mode-hook ()
(progn
(setq imenu-create-index-function 'js2-imenu-make-index)
))
(add-hook 'lsp-after-open-hook 'my-js2-mode-hook)
啊, 这个 lsp-after-open-hook
确实是我需要的. 谢谢!