等我得空我写个安装命令吧,直接固定目录好了。然后我再发补丁。
lsp-bridge支持不同操作系统不同配置,只要路径固定都可以写。
在 Windows 中启用 Tabnine 补全可能会遇到问题,emacs 中调用 tabnine-bridge-install-binary
会下载文件到 emacs
的 HOME
目录,而 lsp-bridge
python 代码调用 TABNINE_BINARIES_FOLDER = os.path.expanduser("~/.TabNine/")
中的 ~
是指代 C:/Users/XXX
,和 emacs
的 HOME
通常不一致,会找不到下载的 Tabnine
。可以通过移动文件或者设置 tabnine-bridge-binaries-folder
解决。
能力有限,不会用代码优化,供各位大佬参考。
一直以来使用doomemacs,早就想用lsp-bridge了,但是因为需要用到很多的 completion backend,因此还是需要用 capf 的,所以一直没有上船。但是近来一直追踪项目的更新动态,现在 lsp-bridge 已经支持 citre backend,甚至支持输入法后端,以及已经支持多 lsp 了,这也给了我切换的动力。
如果有小伙伴使用 doomemacs,打算更换到 lsp-bridge的话,可以试下如下操作:
- 把 init.el 里有关 lsp 的内容全部注释掉。
- 在 package.el 里添加如下的段落,如果同时需要使用 acm-terminal 的话还需要非常丑陋的操作 (搞不懂 straight 这个包到底咋用,十分莫名其妙)
(package! lsp-bridge :recipe (:host github :repo "manateelazycat/lsp-bridge" :files ("*")))
(package! acm :recipe (:host github :repo "manateelazycat/lsp-bridge" :files ("acm")))
;; 如果没有上面这一行,安装 acm-terminal 的时候 doom sync 会报错,提示找不到 acm 这个包,不装 acm-terminal 不需要这奇怪的一行
(package! popon)
(package! acm-terminal :recipe (:host github :repo "twlz0ne/acm-terminal"))
- 在 config.el 里添加如下的段落
(customize-set-variable 'company-global-modes
(append company-global-modes '(python-mode)))
(use-package! lsp-bridge
:hook
(python-mode . lsp-bridge-mode)
:init
(setq acm-enable-citre t))
(unless (display-graphic-p)
(after! acm
(use-package! acm-terminal)))
暂时还没打算全局换成 acm,对于没补全性能要求的文件编辑,使用 capf 似乎是更好的选择。
Windows 下 (file-name-as-directory "~/.TabNine")
返回的是啥?
“~/.TabNine”
windows 中
- 如果设置了环境变量
HOME
,那么就用它的值作为HOME
目录 - 如果存在注册表键值
HKCU\SOFTWARE\GNU\Emacs\HOME
,就用它的值作为HOME目录 - 如果存在注册表键值
HKLM\SOFTWARE\GNU\Emacs\HOME
,就用它的值作为HOME目录(和2的区别是,2只是针对当前用户的注册表路径,3则是针对所有用户)。如果存在C:\.emacs
,就用C:\
作为HOME目录~ - 如果以上都不存在的话,就使用
C:\Users\<user name>\AppData\Roaming
作为HOME目录
就这样做吧,以后有好方法再提升。
目前看没有太好的办法。
send_initialize_request 应该在服务器启动之后吧?这个时候再改启动参数应该没用了吧。
你先按照你的补丁来写吧,写好我再改一下。
好,紫薯布丁
布丁已发,大佬查收
已经合并了。
语法检查可以用的,只不过有点慢 刚多等了一下,他就出来了。
懒猫你有在用 lsp bridge 的 code format 吗?最近用起来,发现一个问题,我仿佛记得 lsp bridge 的 code format 是会对 buffer 和文件都有操作,tree-sitter 有一个 tree-sitter-hl-mode 用来高亮 buffer 的,配合着使用,就会出现下面这样的上色问题:
我在 Emacs -Q 试过了,用下面这个配置,打开 tree-sitter-hl-mode
和 lsp-bridge-mode
,在一个 Go 文件里,进行一些操作后,不保存等 lsp bridge code format 几次就会出现。
(use-package lsp-bridge
:commands lsp-bridge-mode
:load-path ""
:ensure nil
:init
(use-package yasnippet)
(use-package markdown-mode)
(use-package posframe)
:config
(setq lsp-bridge-enable-auto-format-code t)
(yas-global-mode)
(global-lsp-bridge-mode))
(use-package tree-sitter
:init
(use-package tree-sitter-langs)
:config
(global-tree-sitter-mode)
(add-hook 'prog-mode-hook #'tree-sitter-hl-mode))
是tree sitter那个插件的问题,对buffer进行大量行改动操作就会这样。
那还treesitter的bug,有时候编辑范围比较大,颜色也会没有。
我感觉也是 tree sitter 的问题,一直等不到 tree sitter 更新🤣,看来只能先把 tree sitter 关了
elisp treesitter还并不成熟。而且似乎有另外的人在做将 treesitter 写入 core 的工作了。如果这个被 merge 了,感觉elisp treesitter 的维护动力可能就更弱了。 另外一点就是 elisp treesitter 因为很多syntax 的关键词都使用了自己的关键词,而不是常见的关键词,导致 treesitter 的 parser很多都要自己写,导致没办法直接用很多成熟的工作。比如neovim对treesitter的整合度就很高,有大量现成的parser,helix(另一个模态编辑器)甚至直接把neovim的treesitter parser直接拿过来就用,都没有任何问题