打开日志看看吧,我估计是你pyright没配置好
感觉好像是/Users/apple/miniforge3/bin/python
没有安装numpy这个包?
安装pyright 是只需要用pip install pyright,还是 也要安装eglot or lsp-mode with lsp-pyright? 目前我只用pip install pyright。
在 lsp-bridge.el 中:
(defcustom lsp-bridge-python-command (if (memq system-type '(cygwin windows-nt ms-dos)) "python.exe" "python3")
"The Python interpreter used to run lsp_bridge.py."
:type 'string)
试下 pip3 install pyright ?
也试过了,还是不能在.后出现补全。我换成pylsp 倒是可以
大佬,请教一个问题,我配置文件设置了(global-company-mode nil)不生效,全局关不了company-mode补全!
你有遇到,每次打看文件,必须手动关闭下company-mode,不然敲代码和lsb-bridge一起弹出补全框,会弹2个补全框,好蛋疼
看我的回复:你说你在配置文件里写了
(global-company-mode nil)
等同于
(global-company-mode)
所以它被调用一次,就toggle ON了,你全局打开了,自然每个文件都要手动关 company-mode
了。
正确写法是:
(global-company-mode -1)
(global-company-mode -1)我已经这样设置了,但是每打开文件都要手动执行下company-mode,不知道为啥
你是不是在其他地方还有 (global-company-mode)?
或者 Emacs 保存了你开启company的状态?
第一种情况我排查了,其他没有设置的,第二种我怎么排查,我应该如何设置
如果你打开了session和desktop,就把.emacs.d目录下的.emacs.desktop
文件删掉试试?
试了,还是不行,好奇怪,我再看看吧,实在不行每次就手动关闭下company-mode= =
这个补丁合并后, lsp-bridge对不同工程的LSP配置(比如 volar)就更灵活了, 现在支持几种方式:
- 通过 lsp-bridge-get-single-lang-server-by-project 或 lsp-bridge-get-multi-lang-server-by-project 统一控制所有项目的LSP配置
- lsp-bridge-single-lang-server-extension-list 或 lsp-bridge-multi-lang-server-extension-list 按照扩展名来加载不同的LSP配置
- lsp-bridge-single-lang-server-mode-list 或 lsp-bridge-multi-lang-server-mode-list 按照Emacs mode来加载不同的LSP配置
- 加上今天这个补丁的新策略, 按照 lsp-bridge-user-langserver-dir 或 lsp-bridge-user-multiserver-dir, 读取不同工程目录下LSP配置
新增的方式就是把 lsp-bridge 的 LSP json 配置文件放到工程目录下自定义修改就可以了, 对于 JavaScript 语言很方便。
这个社区补丁合并后, Python默认用 pyright_ruff 这个混合LSP服务器来服务:
{
"completion": ["pyright"],
"completion_item_resolve": ["pyright"],
"diagnostics": ["ruff"],
"code_action": ["ruff"],
"execute_command": ["pyright", "ruff"],
"find_define": "pyright",
"find_implementation": "pyright",
"find_references": "pyright",
"formatting": "pyright",
"hover": "pyright",
"signature_help": "pyright",
"prepare_rename": "pyright",
"rename": "pyright"
}
代码诊断和代码修复用 ruff, 代码补全用 pyright, ruff是用Rust编写的, 传说性能是现有Python代码检查程序的100倍。
同时 lsp-bridge 最近提交了 Try to load single language server if not found all commands of multi… · manateelazycat/lsp-bridge@4f7fcec · GitHub 补丁, 默认会用混合LSP服务器, 如果混合LSP服务器中某一个命令不存在,就会尝试fallback到单服务器。
比如, lsp-bridge默认用 pyright_ruff 这个混合LSP服务器, 如果发现用户没有安装 ruff-lsp/ruff, lsp-bridge就会自动fallback到 pyright 这个单服务器。
最近合并了社区开发者的几个补丁:
增加了对 Kotlin 语言的支持
增加了对 QML 的支持, 同时利用 lsp-bridge 的混合服务器能力, 让 QMLLS + JavaScript 两个LSP Server 同时提供语法补全
增加了对 Astro 的支持, 传说是一个网站构建利器
利用 lsp-bridge 的混合服务器能力, 用 ruff 来替代 pyright 等 Python LSP Server 执行代码诊断, 诊断传说最高提升 100 倍性能
目前 lsp-bridge 已经支持61 种LSP Sever, 支持9种混合服务器配置, 欢迎各位大佬继续贡献补丁和功能。
tramp的卡顿本质是每个字符编辑变动就用很重的方法向远端同步文件。
分享设计想法,还没有时间开发,欢迎贡献,在酒店起床想的,纸太小,见谅。
刚刚发现一个问题,如果lsp-bridge-user-langserver-dir获取的路径类似
~/temp/tempPython
在python端测试路径是否存在的时候就会认为路径不存在,导致无法获取到用户的lsp 配置。
一下是测试代码:
import cv2
from pathlib import Path
if __name__ == "__main__":
test_path = Path("~/temp/testPython/")
test2_path = Path("/home/lizqwer/temp/testPython/")
if test_path.exists():
print("路径存在")
else:
print("路径不存在")
if test2_path.exists():
print("路径2存在")
else:
print("路径2不存在")
结果
希望可以在python端修复一下这个路径问题,或者给Readme这里加上file-truename