lsp-bridge -- 速度最快的语法补全插件

在支持tty-child-frame的emacs下这个bug不再出现

1 个赞

  1. 有两个代码错误但是只显示一个
  2. 代码错误不显示在对应行,而是显示在代码第一行

详细说测试代码,怎么重现的,就一张图,没法沟通哇。

这张图还不够吗。。。 go mod init创建项目 新建main.go文件,lsp-bridge会自动加载 然后随便写点什么,我图里就是随便写的啊 环境是ubuntu22 用的doom,没进行过flycheck的配置

那我没法说什么,这个不是商业项目,我不会因为一张图就提供啥服务的。

zyd0o-vczqb

这是创建项目的全流程 只是一个helloworld级的测试代码,还需要其他细节我可以继续提供

整个测试代码两个文件
main.go文件


package main

func main() {
    fmt.xxxx
    fmr.xxxxx
}

go.mod文件

module xxx

go 1.23.1

你还需要啥测试细节可以告诉我,我会在回复里提供

我的doom配置: package.el

(package! gruber-darker-theme
  :recipe (:host github :repo "rexim/gruber-darker-theme"))
(package! evil-terminal-cursor-changer)
(when (package! lsp-bridge
        :recipe (:host github
                 :repo "manateelazycat/lsp-bridge"
                 :branch "master"
                 :files ("*.el" "*.py" "acm" "core" "langserver" "multiserver" "resources")
                 ;; do not perform byte compilation or native compilation for lsp-bridge
                 :build (:not compile)))
  (package! markdown-mode)
  (package! yasnippet))
(package! popon
  :recipe (:host nil :repo "https://codeberg.org/akib/emacs-popon.git"))
(package! acm-terminal
  :recipe (:host github :repo "twlz0ne/acm-terminal"))

config.el

(use-package! lsp-bridge
  :config
  (setq lsp-bridge-enable-log nil)
  (setq acm-backend-lsp-show-progress t)
  (global-lsp-bridge-mode))
(after! acm
  (require 'acm-terminal))

正常情况下,报错提示应该出现在
·fmt.xxxx·行以及fmr.xxxxx行,共两个错误
但是报错出现在package main行,并且右下角提示只有一个错误

以下为lsp-mode的提示效果,为正常情况下应有的提示


经进一步测试,该问题仅在终端会出现,gui不会出现该问题

  1. 我没有重现你说的诊断在buffer里面少或者错位的问题
  2. lsp-bridge 只提供 lsp-bridge-diagnostic-count 变量(和诊断overlay数量一样), mode-line 的数量渲染问题应该是 GitHub - liuyinz/flymake-bridge 的问题, lsp-bridge 不提供 mode-line 显示诊断数量的功能
  3. 重现问题, 请用 emacs -Q 加载最小配置的方法去测试, 这样可以最少程度减少自己其他配置的影响

反馈问题, 应该详细的按照 emacs -Q、 最小配置、 详细环境、 怎么重现、 代码文本等尽可能详细的信息去反馈, 一是帮助你自己排查问题, 二是节省开发者的时间, 一张图, 什么都不说, 希望开发者照着你的图去敲代码重现问题, 这个很不尊重人, 让开发者觉得 “我丢了一张图给你, 你就应该修bug”, 开源项目都是为爱发电, 不是商品, 开发者没有义务去牺牲自己让大家爽。

3 个赞

tty-childframe目前是个未完善的分支,有很多奇怪的行为要等上游解决。再其次,等上游解决完问题,因为懒猫主用的gui,应该会等到其他终端用户来解决。

推荐继续acm-terminal,等这分支完善了再说。

或者eglot+emacs-lsp-booster,我感觉性能算够用

1 个赞

已解决,是flycheck的问题,根据 Flycheck displays all erros on first line. · Issue #12696 · syl20bnr/spacemacs

进行如下设置即可解决

(setq-default flycheck-disabled-checkers '(golangci-lint))
1 个赞

点赞👍, zsbd

想问下,这个红线的 error(缺包)已经修了, diagnostic 也没有这个 error 了,但是 face 似乎没有正确更新,我该如何手动更新或者检查相关的什么设置/依赖呢?

图片

有稳定重现方法吗?

执行下lsp-bridge-restart-process应该就好了,XD

这个试过了,似乎不太行。

目前没有,偶尔出现,开的项目不太多的时候我就直接 restart-emacs 解决😂

先留在这吧,看有没有朋友遇到类似的问题。

或者,我想确定一下是在 lsp-bridge/lsp-bridge-diagnostic.el at d46260fcddbb39bf4762acbba6db18434892dfd8 · manateelazycat/lsp-bridge · GitHub 这里做的相关逻辑对不?是的话,我之后遇到了先尽力看看有什么异常。

好的, 感谢反馈。

能稳定重现我就可以修复。

可能和这个我刚提的 issue 有关

这个很理想, LSP有协议, 但是这些 LSP server 的首先并不标准, 比如就发送 save 提醒这个标准:

  1. Python: basedpyright 服务器 有 willSave 字段
  2. Rust: rust-anaylzer 服务器有 save 字段
  3. Nix: nil 服务器没有 save 和 willSave 字段

干脆直接在 lsp-bridge 兼容得了, 增加一个 sendSaveNotification 字段, 大多数LSP server都支持 save 提醒协议, 专门针对 Nix LSP server 设置这个字段。

这样也修复了

也保证nil不会出错

现在皆大欢喜啦。

5 个赞