lyjdwh
2215
我发现lsp中两个蛮有用的功能lsp-bridge还没有,不知道是否有计划支持
- lsp-ivy 中
lsp-ivy-workspace-symbol
可以在项目全局精准查找类,函数等等。比在项目根目录下使用ag/rg 给出的侯选项要少不少
- lsp-treemacs 中
lsp-treemacs-call-hierarchy
lsp-treemacs-type-hierarchy
查看调用关系和类型继承关系很方便
lyjdwh
2217
似乎不太一样,lsp-bridge-ref
是查引用的,lsp-ivy-workspace-symbol
是提前不知道 symbol在哪,然后在全局范围内查找, 和ag/rg 相比,更加精准,侯选项更少 。相当于项目级别的imenu
这个是它的demo
你说的应该是 Specification 这个协议的支持
第二个要想一想高效的UI, 可以采用类似 lsp-bridge-ref 的形式。
treemacs 那样的布局操作效率不高。
git rev-parse --show-toplevel
git rev-parse --is-inside-work-tree eshell执行返回值都没问题,有的文件手动激活lsp-bridge-mode是buffer模式 有的是project模式。。我去log看下
lyjdwh
2223
刚用emacs -q 在一个python 项目中测试lsp-bridge-list-workspace-symbols
,提示 “LSP server did not return any symbols.”,大佬遇到过么
那是有些LSP server 不支持这个功能,比如pyright,可以试一下clangd
这个Bug影响多文件重命名和跨文件 Code-Action 操作, 已经修复, 建议大家都更新一下。
1 个赞
有个 Rust 的问题, Cargo.toml
更新依赖后,我不知道 lsp 什么时候会更新依赖
lsp-bridge将参加今年的EmacsConf, 欢迎大家观看演讲
https://emacsconf.org/2022/talks/lspbridge/
因为我英语口语太烂了,将由EAF核心开发者 @MatthewZMD 来做英文演讲。
希望 lsp-bridge 能让更多的emacser知道,减少无谓的折腾,享受流畅写代码的快乐。
44 个赞
大佬请问一下 acm 能否实现 tab-and-go 形式的补全呢?
我的使用习惯是 TAB 键同时负责选中和插入(除了snippet之外的)候选,就和这个 issue 里描述和演示的一样。 我没有在 README 里看到相关说明, 也没有在帖子里搜到, 不确定有没有人问过这个。
我大概看了, 其实类似 Emacs 最早 auto-complete 的实现, 就是选择菜单后选项的时候不断的切换真实输入的内容, 具体绑定任意按键都可以。
具体的实现可以看这一楼 lsp-bridge -- 速度最快的语法补全插件 - #1013,来自 manateelazycat
你可以看到截图是带有 overlay 的预插入的效果的, 后面去掉的原因:
- Overlay用于现有关键字着色很好用, 但是 after-string 等属性在行尾的时候有各种各样的兼容性问题, 时间长了, 有点记不太清楚了
- 预览的问题, 最大的问题是, 各种插件混合的时候, 容易导致预览被误插入, 这个超级烦, 因为 Emacser的配置和环境都千奇百怪, 偶尔被插入不要的候选词就很烦躁
- Java类的语言有大量参数不一样的重载函数, 我们不展开Snippet就会导致预插入名字都一样, 展开遇到那种多行 Snippet 就头大
这个功能做好其实还挺帅的, 但是要做好在各种地方不出bug还是没那么容易的, 欢迎大佬写完美补丁。
1 个赞
看了 rust-analyzer 的文档, 给 rust lsp server 默认添加了一些参数, 不知道能否解决 Cargo.toml 变动后刷新的问题, 没有验证过。
今天写 Rust 代码的时候, 总是感觉诊断信息慢一拍, 有时候要移动两次光标才能拉取最新的诊断信息。
调查原因是因为原来的拉取诊断信息的方法和LSP Server发送消息会有多线程条件竞争的问题, 如果拉取最新诊断信息的时候, LSP Sever 还没有分析出来, 就会导致诊断信息延后, 不爽的就是, 有时候代码已经写对了但是诊断信息还没有消除, 或者反过来代码已经有错误了但是诊断信息还没有刷新。
今天写了一个新的补丁 https://github.com/manateelazycat/lsp-bridge/commit/8d08380c2d5c02c7b4f0b72ed1ab7df23cd03222
用Push的方法替代原来Pull的方法, 同时对诊断信息做Ticker处理, 修复上面问题的同时, 避免写代码过程中那些临时诊断信息Push到Emacs端, 影响Emacs的性能。
4 个赞
lsp-bridge 从构思到现在已经快速发展了5个月了, 添加了很多不同的功能, 导致命令的名字比较混乱。
今天重新把所有命令的名字都重新整理了一遍 Refactory names. · manateelazycat/lsp-bridge@096f6df · GitHub , 现在应该比较一致了, 同时针对重命名的命令都做了 alias 处理, 大家升级后应该不影响使用。
最新的名字都可以在 README 中查看: https://github.com/manateelazycat/lsp-bridge/blob/master/README.zh-CN.md
8 个赞