macOS可以用pypy3。
提个issue吧
这个补丁应该修复了。
其实 Python 3.11 已经更快了, 不用 pypy 已经非常快了, lsp-bridge 主要是靠多线程获取性能优势的, 语言本身的性能对体验影响不大。
不想全局开启,除了global-lsp-bridge-mode,还有什么函数可以用,加到hook里?
默认就用 global-lsp-bridge-mode, 但是你可以通过 lsp-bridge-default-mode-hooks 选项来定制那些模式开, 哪些模式不开。
(defcustom lsp-bridge-default-mode-hooks '(prog-mode))
(global-lsp-bridge-mode)
这样写配置能行吗?
自己可以用 describe-variable 来查看变量值是否生效
defcustom只有第一次会生效,对于另一个人定义的变量,你要用setq
(setq lsp-bridge-default-mode-hooks '(prog-mode-hook))
(global-lsp-bridge-mode)
有效
今天发现 Rust LSP Server 的bug, rust-analyzer 返回诊断的时候, 会返回两种类型的诊断, 一种是 rustc 分析的诊断, 一种是 rust-analyzer 分析的诊断, rust-analzyer分析诊断的经常误报, 比如经常遇到的 Expected semicolon 。
写了一个补丁
在lsp-bridge修复了。
请问,我使用lsp-bridge-find-def查找C语言函数定义的时候,不是跳转到函数的实现代码,而是跳转到头文件函数声明那。 怎么可以直接跳转到函数的实现代码那里呢?
lsp-bridge-find-impl
这个命令会跳转到 .h头文件,而不是这个头文件对应的.c文件。
难道是我用法不对? 由于不是git下载,直接下载的源码包,我设置了
(setq lsp-bridge-get-project-path-by-filepath
(lambda (filepath)
(save-match-data
(and (string-match "/Users/lula/work/src/src/C/ffmpeg-1.0.10" filepath)
(match-string 0 filepath)))))
然后打开 ffplay.c,想查看 av_log_set_flags()定义,只能跳转到 libavutil/log.h。本希望它跳转到libavutil/log.c
如果跳转了那就是clangd或者是别的lsp告诉你要跳转到那头文件。这不是lsp客户端的问题
你把compilation_commands.json弄出来了吗?
明白了。没玩过compilation_commands.json。我先研究一下。
lsp-bridge如果发现LSP Server返回的文档是Markdown时, 会调用 markdown-mode 去渲染, 当 markdown-mode 渲染文档或代码时, 会创建很多临时 buffer , 这些临时buffer如果匹配 lsp-bridge-default-mode-hooks 里面的 mode 类型时, 就会导致这些临时 buffer 误调用 lsp-bridge-monitor-before-change
和 lsp-bridge-monitor-after-change
函数。
这些临时的Buffer会干扰 lsp-bridge 发送错误的 textDocument/didChange 消息给 LSP Server, 从而导致几个严重的错误:
- 诊断误报: 即使代码是对的, LSP Server也返回诊断
- 代码补全: 补全偶尔会失效, 补一补的就没反应了
- 其他依赖光标位置的功能
今天看了一晚上日志, 终于通过补丁 When user do `delete' operation, `length' is bigger than 0, and the … · manateelazycat/lsp-bridge@e13ba84 · GitHub 修复了。
这个bug估计从 lsp-bridge 弹出API文档支持 Markdown 渲染就有了, 强烈建议大家更新到最新版。
整明白了。按照lsp-bridge文档,做了两件事,现在看代码非常丝滑,比source insight还要爽
1,实现一函数lsp-bridge-set-project-path,来设置lsp-bridge-get-project-path-by-filepath为当前目录
(defun lsp-bridge-set-project-path ()
(interactive)
(setq lsp-bridge-get-project-path-by-filepath
(lambda (filepath)
(save-match-data
(and (string-match default-directory filepath)
(match-string 0 filepath))))))
2,很多代码只是用来看的,本地无法编译,就写了个脚本造一个 compilation_commands.json,内容就是
{
"arguments": [
"/usr/bin/gcc",
"-c",
"-Wall"
],
"directory": "/Users/lula/work/src/src/C/ffmpeg-1.0.10",
"file": "/Users/lula/work/src/src/C/ffmpeg-1.0.10/ffplay.c"
}
lsp-bridge解决了补全提示,一键编译/运行、调试有什么插件推荐呢?列举几个常用语言,如c、python、shell等,特别是不和lsp-bridge冲突。