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

rust的diagnostics有点问题, 我创建了一个最简单的main.rs

fn test(x :i32){
    
}

fn main() {
    println!("Hello, world!");
}

期望是fn test(x :i32){ 这行会有提示,变量未使用

在命令行中使用rust-analyzer diagnostics test_rust/main.rs 得到的结果是 Diagnostic { code: RustcLint(“unused_variables”), message: “unused variable”, range: FileRange { file_id: FileId(11), range: 8…9 }, severity: Warning, unused: false, experimental: true, fixes: Some([Assist { id: AssistId(“unscore_unused_variable_name”, QuickFix), label: “Rename unused x to _x”, group: None, target: 8…9, source_change: Some(SourceChange { source_file_edits: {FileId(11): (TextEdit { indels: [Indel { insert: “_x”, delete: 8…9 }] }, None)}, file_system_edits: , is_snippet: false }), trigger_signature_help: false }]), main_node: Some(InFileWrapper { file_id: FileId(11), value: SyntaxNodePtr { kind: IDENT_PAT, range: 8…9 } }) }

会提示有未使用的变量。

但是在lsp-bridge的diagnostic中却没有提示。

好像是 acm-frame-default-face 的初始化的问题,如果 theme 设置在 acm 加载之前, acm-reset-colors 就不会被调用。 acm-frame-init-colors 只在 acm-update 中被主动调用,没激活 acm 补全窗口时 acm-frame-set-frame-colors 就会因为 acm-frame-default-face 是空的就把背景设置的跟 default face 一样。

可以发issue和测试代码, 要不我没法复现。

是不是到了加测试的时候了,eslint的初始化好像又坏了 :smiling_face_with_tear:

1 个赞

大佬, 能帮忙看一下吗?

估计是动 workspace/configuration 相关 response 代码弄坏的, workspace/configuration 这一块很多语言都依赖这个协议的正确响应。

好像这块没有调用……

# lsp-bridge/core/lspserver.py:563

def handle_workspace_configuration_request(self, name, request_id, params):

配置代码

(package-initialize)
(add-to-list 'load-path "~/.emacs.d/elpa/lsp-bridge")
(require 'yasnippet)
(yas-global-mode 1)
(require 'lsp-bridge)
(setq lsp-bridge-enable-log nil)
(global-lsp-bridge-mode)

rust 项目执行 cargo new test_rust 在生成的文件 src/main.rs 中加上

fn x(){
    let y = 12;
}

期望是会对 fn x()let y = 12;提示未使用。但是没有提示。

麻烦发个issue吧

有测试代码吗?

我早上看了一下, 命令行确实有unused var的诊断信息。

但是LSP server返回的却是空 {'jsonrpc': '2.0', 'method': 'textDocument/publishDiagnostics', 'params': {'uri': 'file:///home/andy/rust_test/src/main.rs', 'diagnostics': [], 'version': 0}}

我估计 rust-analyzer 的LSP协议这一块有差异, 或者 lsp-bridge 默认给 rust-analyzer 的配置 lsp-bridge/langserver/rust-analyzer.json at cb523ab55a1b2f36b496e00cc7991d78c8f6e63a · manateelazycat/lsp-bridge · GitHub 有缺失

我早上翻了一下 rust-analyzer 的文档, 没有发现配置有啥特别的。

如果有线索, 欢迎反馈。

早上添加了5个新的编程语言: Cobol、Yang、HLASM、 GLSL、 Jsonnet的支持。

lsp-bridge目前已经支持97种LSP Server, 还有46种LSP Server, lsp-bridge就完成对所有LSP语言的支持。

欢迎大家对46种LSP Server提交PR。 :wink:

7 个赞

求助大佬一个问题,我现在用lsp-bridge看上去在工作,但是对于有问题的地方只会有标注,例如红色/橙色波浪线,但是不会提示错误信息,我想请问,我应该检查哪些接口是否工作,哪些组件是否工作呢?

lsp-bridge-diagnostic-jump-next

感谢回复!我去看看。

lsp-bridge能自由定制lsp server的启动参数吗,根据设定逻辑自动选择使用哪些参数,例如根据使用的gcc还是clang来给clangd传递不同的参数,可以自动检测,也可以设置某个变量来指定启动参数,我看现在lsp都是json文件配置的,不知道怎么配置这个功能

c++怎么启用inlay hints,lsp-bridge-enable-inlay-hint已经设置为t,但是没效果

1 个赞

大家有没有遇到即使 emacs -q 最简加载 lsp-bridge 后,lsp-bridge 也无法找到 pyright 的情况?
错误提示信息为

[LSP-Bridge] Error: can’t find command ’basedpyright-langserver’ to start LSP server basedpyright



已经正常安装了 pyright,而且在 vim、neovim 中都可以正常使用 pyright。



系统: Arch, Debian 12.6
Emacs 版本 : 29.4

lsp-bridge 最新版换成 basedpyright 做为默认的 Python LSP Server, 你需要安装 basedpyright

2 个赞