emmmm, 我用最小化配置试了下没问题
你们反馈问题之前, 建议都 emacs -Q 一下。
哈哈哈抱歉,还有一些其他问题不过都不是主要的
等我好好准备能完整复现一下再来问:sneezing_face:
emacs -Q 测试过吗?补全插件肯定可以滚动呀
我测过了,是真的。。
- emacs -Q
- 在 scrath buffer 里面执行:
(push "~/.config/emacs/lib/posframe/" load-path)
(push "~/.config/emacs/lib/markdown-mode/" load-path)
(push "~/.config/emacs/lib/yasnippet/" load-path)
(push "~/.config/emacs/lib/lsp-bridge/" load-path)
(require 'lsp-bridge)
(lsp-bridge-mode 1)
确实不能滚动, 你试一试,我是v29.0.50 mac, 不知道你的行不行
我不用emacs29
哦,我试试其他的版本。
大佬我有个问题,我手动 M-x lsp-bridge-mode 运行之后显示项目已经被它接管,但是打开同项目下另一个文件之后 lsp-bridge-mode 是关闭的状态。
PS:没有用 hook 因为同一个语言有个项目是不开 lsp,所以现在只想通过手动开启 lsp-bridge-mode
使用这个配置可以复现,打开项目下的文件 M-x lsp-bridge-mode 然后打开同项目另一个文件后 C-h v lsp-bridge-mode 的值是 nil
(setq straight-check-for-modifications '(check-on-save find-when-checking))
(setq straight-vc-git-default-clone-depth 1)
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(straight-use-package '(lsp-bridge
:type git
:host github
:repo "manateelazycat/lsp-bridge"
:files ("*")))
我不用包管理器,没时间调研包管理器自己的问题 抱歉。
你在当前 buffer 开启 lsp-bridge-mode,这是 local 的,只能对当前 buffer 生效,项目地址只是发送给 lsp server 分析及标记当前 server 的,你切到其它文件,lsp-bridge-mode 相对该文件肯定是 nil。这是所有 minor-mode 的 feature,只要不是 global 启用的 ,都是这个表现。你想要的效果,应该能通过 .dir-locals.el 来实现
(你描述的项目已经被接管,只是这个文件及项目根目录被发送给了 lsp server,至于项目中其它的文件,主动帮你开启 lsp-bridge-mode 并不是 lsp-bridge 的职责,这是正常 mode 通用的表现)
跟包管理器没关系吧,我这样一样有这个问题
(add-to-list 'load-path "~/.config/emacs/posframe")
(add-to-list 'load-path "~/.config/emacs/lsp-bridge")
(add-to-list 'load-path "~/.config/emacs/markdown-mode")
(add-to-list 'load-path "~/.config/emacs/yasnippet")
(require 'yasnippet)
(yas-global-mode 1)
(require 'lsp-bridge)
我不知道为啥你要手动启动lsp-bridge, 能说一下你的目的吗?我看不懂你描述的问题,什么叫接管了?
确实有这个问题,已经合并,感谢补丁。
对于手动启动:
- 多语言有很多语言我没有装 lsp server,也不需要,因为只是偶尔需要看一下
- 单语言不同项目基本只有 1-2 个会开,而且有的时候代码在服务器上,用 tramp 查看的时候如果全局开了 lsp-bridge 也会报错
所说的接管了是指 lsp-bridge 输出的信息表示运行在 project mode,所以我认为如果打开这个项目其他文件的时候 lsp-bridge-mode 也应该是开启的(但现在是关闭的,只有一开始手动开启的那个文件的 lsp-bridge-mode 是开启的)
那正确的做法是全局依然要开启,如果文件符合tramp路径就不开启呀。
这样弄最简单。
vue代码会有如下报错
--- Send (notification): workspace/didChangeConfiguration
--- Send (notification): textDocument/didOpen
--- Send (34865): textDocument/signatureHelp
Traceback (most recent call last):
File "/Users/liyuan/elisp/lsp-bridge/lsp_bridge.py", line 110, in event_dispatcher
getattr(self, func_name)(*func_args)
File "/Users/liyuan/elisp/lsp-bridge/lsp_bridge.py", line 247, in _do
action.call(name, *args)
File "/Users/liyuan/elisp/lsp-bridge/core/fileaction.py", line 111, in call
return self.send_server_request(self.single_lsp_server, method, *args, **kwargs)
File "/Users/liyuan/elisp/lsp-bridge/core/fileaction.py", line 220, in send_server_request
handler: Handler = self.method_handlers[lsp_server.server_info["name"]][handler_name]
AttributeError: 'NoneType' object has no attribute 'server_info'
vue现在默认是volar和emmet-ls两个服务器,你的lsp server没安装全吧?
我去检查了一下,本地的server是安装全的。
我记得我之前vue用的了vls
,不过本地项目是用的vue2,不清楚会不会和这个有关系,之前修改了volar.json中的command值为vue-language-server
→ vls
,不过不影响使用,因为我用了vls的后端服务,这次发布了多服务的功能后,修改回去后调用lsp-bridge-find-def
会报以上错误