capf肯定是没法适应LSP协议的, 而 capf 所有想要实现的功能, acm 都是完全可以实现的, 我之所以没有抽象通用接口的原因是, 现实世界根本不像 capf 现有固定接口设计的那样发展。
我的建议是先可以工作, 只要逻辑没有问题, 重构的问题我可以来改一版就好了。
capf肯定是没法适应LSP协议的, 而 capf 所有想要实现的功能, acm 都是完全可以实现的, 我之所以没有抽象通用接口的原因是, 现实世界根本不像 capf 现有固定接口设计的那样发展。
我的建议是先可以工作, 只要逻辑没有问题, 重构的问题我可以来改一版就好了。
目前所处理的一个python项目的结构如下
repo
├── main.py
├── src
│ ├── training
│ │ ├── distributed.py
│ │ ├── logger.py
在 main.py 中, 首先将 src 加入 sys.path
import sys
sys.path.append("/path/to/repo/src")
from training.distributed import is_master
from training.logger import setup_logging, get_exp_name
但似乎 lsp-bridge 解析不到相应的函数
可以临时打开调试选项看lsp server啥反馈,readme底部有讲怎么打开调试选项。
重启emacs再来一次就正常
大佬你好,lsp-bridge各方面都太赞了,但是我在使用时遇到一个问题,补全的窗口在输入时会不停的刷新闪烁,从而导致体验不是太好,不知道有没有什么好的解决办法。现象可以参考下面这个gif:
可以发现:
感觉是每次输入都导致了补齐内容更新了多次造成的,这一块儿有什么好的改进措施或者使用建议吗?希望编辑器的补齐效果能够更加平稳一些,能够达到vs code的那种体验
这是太快的原因,emacs 的frame没法做到不闪烁
Archlinux 使用paru安装了 python-epc,并且 python 中可以直接 import。但是在 Emacs 中却提示找不到 epc 可能是什么原因呢?我使用 doomemacs
感谢回复,关于前面提到的第二个问题再请教一下:当我输入 name. 时,可以看到acm显示闪现了一个关键字的补全list,然后一闪而过再是name这个类型对应的方法,这里可以有办法取消掉第一个list的内容吗?因为用户已经输入了name. ,显示有语义的提示应该就好了
因为lsp-bridge快到,你每个字符的补全它都可以计算。
我暂时没有想到怎么解决这个问题。
请看readme写的安装方式。
问题找到了,我有 pypy3 和 python3,而 lsp-bridge 默认找 pypy3 而不是 python3。因此我把 pypy3 删除然后再重启就好了
今天写了点东西,发现以下情况:
{
"contents": [
{
"language": "java",
"value": "org.springframework.boot.SpringBootApplication"
},
"Class that can be used to bootstrap ....."
]
}
导致解析时进入到增加 text
block的代码片段,那么 show/popup doc 都显示不正常。
我认为问题1时jdtls的问题,不太应该算作lsp-bridge的问题,所以修复的代码有点monkey hack的感觉,就没有发补丁了,如果过些时间jdtls修复了,lsp-bridge是不用修改的。
From c46061b01f2aee5441f3556d3cd7c23e30775de7 Mon Sep 17 00:00:00 2001
From: Zhou Peng <[email protected]>
Date: Wed, 31 Jan 2024 19:51:54 +0800
Subject: [PATCH] Fix jdtls, rust-analyzer documentation issues.
current jdtls lsp server textDocument/hover request response is messy
{
"contents": [
{
"language": "java",
"value": "org.springframework.boot.SpringBootApplication"
},
"Class that can be used to bootstrap ....."
]
}
jdtls and rust-analyzer requires client capabilities cocnfiguration to
request sever to respond "markdown" format content.
---
core/handler/hover.py | 14 ++++++++++++--
langserver/jdtls.json | 7 +++++++
langserver/rust-analyzer.json | 7 +++++++
3 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/core/handler/hover.py b/core/handler/hover.py
index 98efc62..2339525 100644
--- a/core/handler/hover.py
+++ b/core/handler/hover.py
@@ -35,9 +35,19 @@ class Hover(Handler):
elif "language" in contents:
render_strings.append(make_code_block(contents["language"], contents["value"]))
elif content_type == list:
+ language = ""
for item in contents:
- if item != "":
- self.parse_hover_contents(item, render_strings)
+ if type(item) == dict:
+ language = item["language"]
+ val = item["value"]
+ if type(val) == str and val != "":
+ render_strings.append("```java\n{content}\n```".format(content=val))
+ if type(item) == str:
+ if item != "":
+ if language == "java":
+ render_strings.append(item)
+ else:
+ self.parse_hover_contents(item, render_strings)
return "\n".join(render_strings)
def process_response(self, response: dict) -> None:
diff --git a/langserver/jdtls.json b/langserver/jdtls.json
index 5f0ddea..5fd7b2c 100644
--- a/langserver/jdtls.json
+++ b/langserver/jdtls.json
@@ -5,6 +5,13 @@
"jdtls"
],
"settings": {},
+ "capabilities": {
+ "textDocument": {
+ "hover": {
+ "contentFormat": ["markdown"]
+ }
+ }
+ },
"initializationOptions": {
"settings": {
"java": {
diff --git a/langserver/rust-analyzer.json b/langserver/rust-analyzer.json
index 3f2d920..f2cd6cb 100644
--- a/langserver/rust-analyzer.json
+++ b/langserver/rust-analyzer.json
@@ -3,6 +3,13 @@
"languageId": "rust",
"command": ["rust-analyzer"],
"settings": {},
+ "capabilities": {
+ "textDocument": {
+ "hover": {
+ "contentFormat": ["markdown"]
+ }
+ }
+ },
"initializationOptions": {
"enableExperimental": false,
"diagnostics": {
--
2.43.0
大佬,可以发补丁
lsp-bridge这边做兼容没问题的。
使用tramp的 访问文件/sudo:root@localhost:/etc/environment 报错 or: Wrong type argument: lsp-bridge-epc-manager, nil
在lsp-bridge开启时,若我一直按住C-n/C-p移动光标时,会时不时卡几下是什么原因呢?
emacs -Q 对比测试
如何设置才能让lsp-bridge支持racket的racket-langserver ?
点开我发送的连接
racket-langserver.json 文件是否可以修改成如下?
{
"name": "racket-langserver",
"languageId": "racket",
"command": [
"racket-langserver"
],
"settings": {}
}