这个要在 LSP 语言里查找才行, 不要在 elisp 里面看。
C-h v 找不到, 但是在eval里面看到了,好奇怪
Eval expression:
(buffer-local-value 'acm-backend-lsp-server-names (current-buffer))
;; => ("tailwindcss" "typescript-ls" "emmet-ls")
我现在方法是:
(defun my/bridge-server-setup ()
(when (bound-and-true-p acm-backend-lsp-server-names)
(with-current-buffer (current-buffer)
(let ((servers (buffer-local-value 'acm-backend-lsp-server-names (current-buffer))))
;; enable : in emmet completion
(when (member "emmet-ls" servers)
(setq-local lsp-bridge-completion-hide-characters
(delete ":" lsp-bridge-completion-hide-characters)))
;; enable - in tailwindcss completion
(when (member "tailwindcss" servers)
(modify-syntax-entry ?- "w"))))))
(add-hook 'lsp-bridge-mode-hook
(lambda ()
(run-with-timer 3 nil #'my/bridge-server-setup)))
我加了一个判断逻辑, 如果 acm-backend-lsp-server-names 这个局部变量存在就直接返回 acm-backend-lsp-server-names 的值, 这样不管是用户自定义配置、还是按照扩展名和mode规则,一旦LSP server启动了, 就按照 acm-backend-lsp-server-names 的值来返回。
不知道能不能解决你的问题, 至少加上去, 确实会让这部分代码执行更快, 因为 lsp-bridge 在各个功能都用了 lsp-bridge-has-lsp-server-p 这个检查函数。
好的,我已经用上了, 最终解决方案
(defun my/bridge-server-setup ()
(with-current-buffer (current-buffer)
(when (bound-and-true-p acm-backend-lsp-server-names)
(let ((servers acm-backend-lsp-server-names))
;; enable : in emmet completion
(when (member "emmet-ls" servers)
(setq-local lsp-bridge-completion-hide-characters
(delete ":" lsp-bridge-completion-hide-characters)))
;; enable - in tailwindcss completion
(when (member "tailwindcss" servers)
(modify-syntax-entry ?- "w"))))))
(add-hook 'lsp-bridge-mode-hook
(lambda ()
(run-with-timer 3 nil #'my/bridge-server-setup)))
传统上has-server返回的是一个json文件名, 而names返回的是一个列表,感觉返回值不怎么一致, 确定代码其他用到的地方没问题?
我直接用那个 server-names变量, 不用has-server-p来判断了,你这个也可以改回去,要不然的话可能其他地方出问题,毕竟返回值变了
应该没事, 跑一段时间吧, 加了感觉更快。
@manateelazycat 大佬,今天 pull 了最新代码后出现一个问题,您有时间的话可以看一下。js-ts-mode 中使用 lsp-bridge,选中候选项然后回车会报错,无法补全,我确认了下是最新的 commit 有关,回退上一个没有这个问题。另外 python (pyright) 没有问题
commit:1f47c8fbf4b145e4f8b42dc1aebf096e4cd159f9
server:typescript-language-server
mac emacs-plus 30.0.50
帮我提一个issue嘛,我晚上看一下
已提,麻烦啦
最新的 commit 已经 revert 了, 看来 capabilites 配置还是要一点点微调, 不能大范围改。
好嘞,麻烦啦
将org升级到org-9.7.4在补全python代码时出现如下的提示:
Send textDocument/signatureHelp request (2977) to 'pyright' for project test.org
Recv message (error):
{
"jsonrpc": "2.0",
"id": 2977,
"error": {
"code": -32603,
"message": "Request textDocument/signatureHelp failed with message: index is out of range"
}
}
在org-9.6.29 下没有问题。mac, emacs-plus@29
我很少用 org , 欢迎发送测试文档, 要不不知道怎么解决。
发现一个小bug, lsp-bridge-popup-documentation
命令弹出的acm-frame 背景色异常.
我必须先激活一次 acm的补全frame, 之后popup documentation的背景色才正常,如果直接popup的话,背景色会不正常.
怎么重现的?
就是正常启动啊, 我还排除了主题因素. 正常启动直接call lsp-bridge-popup-documentation
和 先激活补全acm一次,之后再启动 popup.我感觉是初始化的问题,可能有些东西要acm补全才能激活.
今天推送了新的补丁, lsp-bridge Python 默认 LSP Server 改成了 basedpyright, basedpyright 默认把微软在闭源 pylance 里藏的功能都暴露出来了。
具体的特性可以查看 basedpyright 的官网: BasedPyright
今天晚上一口气给 GitHub - manateelazycat/lsp-bridge: A blazingly fast LSP client for Emacs 加了很多语言的LSP支持, 包括 basedpyright, Ada, marksman, Perl, Futhark, PureScript, Mint, lua-lsp.
截止 2024-07-06, lsp-bridge 已经支持 92 种 LSP 语言服务器, 代码提交超过 2506 个补丁, 合并529个社区补丁, 全世界开发人员超过124位。