好的,我去看看。
我试一试eglot,我一直用的是lsp-mode,不过依赖太多了。
import (
"crypto/hmac"
"crypto/sha512"
"crypto/subtle"
"encoding/base64"
"errors"
"fmt"
"strings"
)
type Hello struct {
Name string
Age int64
}
// Verify ...
func VerifyHS512(signature string, sigKey string) (payload string, err error) {
parts := strings.Split(signature, ".")
// 签名数据
sign, err := base64.RawURLEncoding.DecodeString(parts[2])
if err != nil {
return
}
hmac := hmac.New(sha512.New, []byte(sigKey))
hmac.Write([]byte(strings.Join(parts[0:2], ".")))
if subtle.ConstantTimeCompare(hmac.Sum(nil), sign) != 1 {
err = errors.New("签名验证失败")
return
}
h := &Hello{
Name: "",
}
h.Age = 12
return parts[1], nil
}
func main() {
SIGNINGKEY := "K-9Nwl0UdVtkHIsOlvMSnzi5RfP5981KLL8PTQ"
ENCRYPTIONKEY := "0KVXaN-nlXay7OVI5pN0E"
sig := "eyJhbGciOiJIUzUxMiJ9.ZXlKNmFYQWlPaUpFU"
payload, err := VerifyHS512(sig, SIGNINGKEY)
if err != nil {
fmt.Println(err)
return
}
}
另外,那个参数类型连接在一起,又莫名其名的出现了。。
补全除了你给出的字符规则,还有按键规则么,比如tab
后才弹窗,或者.
访问属性的时候才弹
今天写了一天代码,实际使用下来,比如在浏览其他代码块时,莫名其妙的给补全成了其他东西。。干扰严重体验不佳
emacs -Q对比测试一下,默认肯定是不会有这个问题的,要不我怎么写代码?
看看和哪个插件在冲突。
社区反馈evil会冲突
参数类型链接到一起的给个截图
不能按照点来补全,比如vue里面你打v-if也是要补全的。
耐心点,看看emacs -Q对比测试下,看看啥在干扰lsp-bridge,不要着急。
社区大佬 @theFool32 有打 evil 的补丁,Add more constraints for completion popup by theFool32 · Pull Request #141 · manateelazycat/lsp-bridge · GitHub
试一下两个方案:
方案一:
(add-to-list 'lsp-bridge-enable-popup-predicates
'((lambda ()
(and
(< corfu--index 0) ; not select a candidate
(or (not (featurep 'evil)) (evil-insert-state-p))))))
方案二
(setq corfu-on-exact-match 'quit)
我不用 evil , 看看哪个代码对你有效果?
方案一,少了个括号 )
这个行为有些奇怪,当我输入到onM还能补全,输入到onMo补全就没了
也是和evil模式有关
为啥你们的 volar 补全比我丰富呀? 你们定制了 volar.json 还是安装方式和我不一样呀?
你们是怎么安装 volar 的?
npm i @volar/vue-language-server -g
我没有特别定制volar.json
打开日志看一下,是不是 textDocument/completion 的时候,两次返回的 isIncomplete 的值是什么?
先移除了吧,确实像 PR 另一个大佬说的,lsp-bridge 异步的方式,和 xref 不太好协作到一起
感谢大佬的速度回复
实测,方案一 启动时出现错误
方案二,解决了 python 代码补全与 evil的冲突,不会再多添加下划线 _ 了。
但是,对于 clangd 补全头文件,我这边还是会多添加一个 >
方案一需要你更新最新版
你说的多> 怎么感觉像你自己配置的问题呀
好的!感谢!我再试试!
之前用 company+lsp+clangd 的时候,同样操作,循环候选时就不会多出 >
也许是我的配置与 lsp-bridge 有冲突!我再检查检查自己的配置看看!
我测试了,没有问题,你试一下
(add-to-list 'lsp-bridge-enable-popup-predicates
'((lambda ()
(and
(< corfu--index 0) ; not select a candidate
(or (not (featurep 'evil)) (evil-insert-state-p))))))
呢?
你更新一下最新版,今天提交了一个 Always delete from range/start for all languages, golang delete rang … · manateelazycat/lsp-bridge@4583530 · GitHub 补丁,不知道有没有影响?
我找到我的 rust-analyzer 为啥不能补全了,因为我的工程是软链接的,启动时候的 rootUri 正常识别到了真实链接,但是 completion 那个请求的不是真实链接,还是软链接的,rust-analyzer 没处理这个情况。
解决了,evil模式下也没问题!
今天提交了两个补丁, evil 的用户可以用一下,看看还有啥问题了吗?