什么叫路径别名?
注释掉 yasnippet 的相关代码后 clangd 返回的 ${0:header} 就可以正常工作了。
(yas--place-overlays snippet field)
(overlay-put yas--active-field-overlay 'yas--snippet snippet)
(overlay-put yas--active-field-overlay 'yas--field field)
+ ;; make this field active
+ (setf (yas--snippet-active-field snippet) field)
(let ((number (yas--field-number field)))
- ;; check for the special ${0: ...} field
- (if (and number (zerop number))
- (progn
- (set-mark (yas--field-end field))
- (setf (yas--snippet-force-exit snippet)
- (or (yas--field-transform field)
- t)))
- ;; make this field active
- (setf (yas--snippet-active-field snippet) field)
+ (unless (and number (zerop number))
;; primary field transform: first call to snippet transform
(unless (yas--field-modified-p field)
(if (yas--field-update-display field)
好像不是那个问题,有时候还是可以连过去的,抱歉
yasnippet 好像没人修了啊。我最近拿 tampel 也整了个可以补全 lsp snippet 的函数,但是后来发现对于 clangd,特别容易把 server 搞挂,报错那个
trying to get preamble for non-added document
看 clangd, 好像得到了个 range length 不匹配的错误。不知道是不是 tempel 的问题,最近没空深入研究。
方便贴出来借鉴下么
晚上推送了一个新的补丁 Add new option lsp-bridge-get-project-path-by-filepath . · manateelazycat/lsp-bridge@7ee5ea0 · GitHub
主要增加了新的选项 lsp-bridge-get-project-path-by-filepath
更新后, lsp-bridge 有三种扫描模式:
- 检测到
.git
目录时(通过命令git rev-parse --is-inside-work-tree
来判断), lsp-bridge会扫描整个目录文件来提供补全 - 没有检测到
.git
目录时, lsp-bridge只会对打开的文件提供单文件补全 - 自定义
lsp-bridge-get-project-path-by-filepath
函数, 输入参数是打开文件的路径字符串, 输出参数是项目目录路径, lsp-bridge会根据输出目录路径来提供补全
新的 acm 依然闪烁,我估计是这两个地方:
这也是 Emacs 本身的问题,无法实现双缓冲内存绘制的效果。所以每次刷新都能明显感觉到 childframe 的「收缩→填充」过程,比终端 overlay 还严重。
试过把 (erase-buffer) (...)
这两句换成 (replace-buffer-contents ...)
依然会闪烁,因为 replace-buffer-contents
的 C 实现也是先删除再插入。
我本地 hack get_project_path
很久了,正需要这功能,大赞~
顺便贴一段配置给和我一样用了 monorepo 的人参考吧:
(setq lsp-bridge-get-project-path-by-filepath
(lambda (filepath)
(save-match-data
(and (string-match "/path/to/your/monorepo/\\([^/]*\\)" filepath)
(match-string 0 filepath)))))
emacs -Q 对比测试下?
就是用 emacs -Q
测试。可能我电脑比较慢,使得闪烁更明显。
当主题自动切换后,acm 的背景色不会自动切换。
大佬们是咱中国的EMACS之光啊!光浏览lsp-bridge 和EAF 会话就能感受大佬们的期待和热情!赞👍
欢迎发送补丁
我目前没有感受到闪烁,可能我电脑性能比较好的原因吧
我用 QuickTime 录了几秒视频,尽量匀速按键:https://i.imgur.com/hKQScdS.mp4
可以看到当下拉菜单内容发生变化时,闪烁比较明显(经过 QuickTime 的抽样已减弱了一些)。上下翻动选项的时候,文档 frame 也会有跳动感。
acm 目前是内容更新以后才会调用 fit-frame-to-buffer-1
更改 childframe 的大小的, 按道理不应该闪烁啊, 你有机会找一个稍微快一点的电脑对比看看?
你机器啥配置,我公司17年的垃圾 mbp 好像也没有闪烁
懒猫大佬,你那个lsp-bridge的架构图是用google docs画的吗,为啥我的google docs找不到画好看的架构图的地方?