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

是不是把日志选项给打开了?这个影响性能的要把它关闭

lsp-bridge启动的pyright,光标在import os中的os下调用lsp-bridge-find-def返回路径指向pyright下的stdlib路径(pyright服务器返回的),测试了标准库都是这样,这是为何,我用eglot测试了返回路径指向就是正确的

日志: 链接: https://pan.baidu.com/s/1-SeUo6dYFw56G-FJM-s9DA?pwd=c53x 提取码: c53x –来自百度网盘超级会员v6的分享

麻烦报一下github

我没设置过日志选项呀 默认的就是开着的?

lsp-bridge-enable-log 这个选项要关闭

好的我在试试

大佬你好,有个问题想请教一下。

在补全rust的时候,在回车选中候选词后,当前行会自动跳成第一行。

比如,一开始是这样

显示的第1行,实际第13行 fn main() {
显示的第2行,实际第14行     let args: Vec<String> = env::args().collect();
显示的第3行,实际第15行     l |< 在此处补全
显示的第4行,实际第16行     if args.len() == 1 {

在回车选中补全后成了这样子

显示的第1行,实际第15行    let
显示的第2行,实际第16行    if args.len() == 1 {
显示的第3行,实际第17行        run_prompt();

在.el文件中补全则不会出现这种情况。

我希望在回车后文档不会上移,请问这个要怎么处理呢?

github上传一下issue, 最好录制一个gif并上传测试代码吧, 你说的我没有看懂。

在github上提了,麻烦大佬看看是啥情况

1 个赞

修复了。

下面是修复逻辑:

  1. 因为 window-start 这个函数有bug, 如果在 window-start 之前不调用 redisplay , window-start 就不会返回窗口起始位置
  2. 但是调用 redisplay 又会有其他奇奇怪怪的问题, 比如当前这个issue

好的是 window-end 的函数没有这个影响, 所以这个补丁的修复方法是:

  1. 直接去掉 redisplay , 避免这些奇奇怪怪的问题
  2. 给 LSP Server 发送 inlay hint 请求的时候直接请求 point-min/point-max, 这样永远都不会出错
  3. 因为 lsp-bridge-inlay-hint-cache 先天就做了缓存对比的, 所以 point-min/point-max 发送也不会导致重复的 inlay 来闪动屏幕
4 个赞

今天修复了一个隐蔽的bug,acm-enable-doc 选项没打开就没法 auto import

原因是:

  1. auto import 依赖每个补全的 additionalTextEdits 信息
  2. 不是每个语言都会自动返回 additionalTextEdits 信息, 有些语言只要发送 completion 消息就会返回 additionalTextEdits, 比如C, 有些语言默认就不会返回 additionalTextEdits, 比如Java, 像Java需要进一步调用 completionItem/resolve LSP消息才会返回 additionalTextEdits 消息

上面的补丁原理是, 即使 acm-enable-doc 设置为 nil, 也会尝试发送 completionItem/resolve 消息, 只是 acm-enable-doc 设置为 nil 时不显示 doc frame, 这样就永远保证 additionalTextEdits 信息都存在, 支持像Java这种语言的 auto import 功能。

3 个赞

lsp-bridge-code-action 不能去掉多余的import。

lsp-bridge日志:

Eval in Emacs: (lsp-bridge-diagnostic--render '"/Users/kuga/work/Repo/GITRepo/src/bmtapi/app/main.py" '"" '((:range (:start (:line 9 :character 7) :end (:line 9 :character 14)) :message "`pymysql` imported but unused" :severity 2 :code "F401" :codeDescription (:href "https://docs.astral.sh/ruff/rules/unused-import") :source "Ruff" :tags (1) :data (:fix (:applicability "safe" :edits ((:content "" :end_location (:column 0 :row 11) :location (:column 0 :row 10))) :message "Remove unused import: `pymysql`") :noqa_row 10 :cell ()) :server-name "ruff") (:range (:start (:line 10 :character 17) :end (:line 10 :character 19)) :message "`pandas` imported but unused" :severity 2 :code "F401" :codeDescription (:href "https://docs.astral.sh/ruff/rules/unused-import") :source "Ruff" :tags (1) :data (:fix (:applicability "safe" :edits ((:content "" :end_location (:column 0 :row 12) :location (:column 0 :row 11))) :message "Remove unused import: `pandas`") :noqa_row 11 :cell ()) :server-name "ruff")) '2)

python代码:

import logging

from fastapi import FastAPI, Request
from fastapi.logger import logger
from fastapi.responses import HTMLResponse, ORJSONResponse, RedirectResponse
from fastapi.exceptions import HTTPException

from app.api import api

import pymysql
import pandas as pd

经测试:

commit 58da5923ec9251d617f2bda29dfa9484fa332ea7 code action能用。

commit 54d7bd0d871bd7dd12fac6e48e193a5e506ef447 开始code action不能用。

已在github上提交issue。

1 个赞

对,今天我更之后code action不能用了

不好意思, 是因为 Only send request if method provider is True. · manateelazycat/lsp-bridge@54d7bd0 · GitHub 这个补丁引起的, 因为这个补丁原先的目的是, 避免LSP Server不支持某些能力就不要发送消息,比如 hint inlay , 避免 LSP Server 返回报错信息。

但是没有考虑到 Provider 有些不是 boolean 的范围

上面这个补丁已经修复了, 感谢反馈, 请更新到最新版。

1 个赞

大佬, 有空在更新一下吧, 今天提交个新的补丁, 综合解决了下面的问题:

  1. 不必要的 LSP 消息不要发, 主要是精确获取 Provider 的值
  2. additionalTextEdits时刻获取, 保证Java语言可以支持 auto import
  3. Inlay Hint重写了 get_nested_value 函数, 避免误发消息
1 个赞

猫大更新的太快了。手动点赞!

我的emacs每天用的最频繁的插件都是猫大开发的:

sort-tab, lsp-bridge, blink-search,color-rg, holo-layer, auto-save

感谢!

2 个赞

lsp-bridge 以前主要通过 git 目录或者 .dir-locals.el 文件来定位工程目录的, 今天写了一个补丁, 针对那些不支持单文件的LSP server, 可以在对应语言的 json 配置中增加一个 “project-files” 选项来辅助定位工程目录。

比如 elixirLS 语言的 “project-files” 是 [“mix.exs”], lsp-bridge 会根据当前单文件的目录向上搜索20层目录去找有没有 mix.exs 这个文件, 找到以后就自动定位为工程目录, 减少用户针对每个工程目录的手动配置。

用 lsp-bridge 的朋友, 如果你们也有工程目录的手动配置, 可以发送 project-files 给我, 我来自动配置到 lsp-bridge中。

2 个赞

刚刚给 lsp-bridge 添加了 vim-language-server 的支持, 以后可以在Emacs里面编辑 Vim 配置文件提供代码补全啦, 哈哈哈哈。

1 个赞

刚刚更新,发现了很多。

这个生草是怎么回事