helm 其实自带一个 helm-popup-tip-mode,不过它是显示文件的。我懒得去提交 pr,也不想把它搞复杂了,所以单独立一个项目,这样也方便维护。
hint 生成原则是:有文档显示文档(最关键的那一行),没文档显示函数原型,没文档的变量显示 Not documented
。
helm 其实自带一个 helm-popup-tip-mode,不过它是显示文件的。我懒得去提交 pr,也不想把它搞复杂了,所以单独立一个项目,这样也方便维护。
hint 生成原则是:有文档显示文档(最关键的那一行),没文档显示函数原型,没文档的变量显示 Not documented
。
起初有考虑过,但是感觉稍嫌密集,甚至还有点担心会拖慢 helm (毕竟 helm 性能不佳是有口碑的),所以先实现单条并且延迟显示。
如果事实证明我的担心是多余的,可以考虑作为可选项加入。
helm前期已经耗费大量时间准备好了,后面这点资源不算什么了,大不了显示当前函数/变量的文档。ivy-rich的经验看应该不是瓶颈。
我试了一下,在快速输入,候选列表不断变化的情况下,有点卡顿。
ivy 先天就比 helm 做得好,只要设置好 transformer 函数,它仅作用于显示区域(即便 M-x
总共有 5000 多项),不用操心翻页之类的问题。
helm 没有提供这个机制,所以它为了减少耗时,限制 M-x
只列出 100 项,它假定用户不会真的翻完 100 项,而是改为输入关键字缩小范围。可能我的电脑也不太好,反复取 100 项的文档也是有点耗时,如果仅取显示区域,需要自行处理翻页问题等等。
哦,原来helm底层是这么处理的,那就有点麻烦了
大佬没用 selectrum 之类的吗?
selectrum 裸测感觉比 ivy 稍微迟钝一些,全配置估计还有许多地方需要调整,helm 也还没到不可用的地步。
对,我的感受也是。selectrum 生态还不够完善,很多东西都要自己做更多的配置,有些功能也不全,性能其实也不好说。我现在都是全套ivy配置,感觉很完善了,性能和功能都兼顾。
这两天实现了对 Imenu 的支持:
现在已不仅限于 describe-{variable,function}:
(defvar helm-symbol-hint-source-method-alist
'(("Emacs Commands history" . helm-symbol-hint--symbol-summary)
("Emacs Commands" . helm-symbol-hint--symbol-summary)
("describe-function" . helm-symbol-hint--symbol-summary)
("describe-variable" . helm-symbol-hint--symbol-summary)
("describe-command" . helm-symbol-hint--symbol-summary)
("completion-at-point" . helm-symbol-hint--symbol-summary)
("Imenu" . helm-symbol-hint--imenu-function-hint)
("describe-package" . helm-symbol-hint--package-summary)
("package-install" . helm-symbol-hint--package-summary)
("package-reinstall" . helm-symbol-hint--package-summary)
("package-delete" . helm-symbol-hint--installed-package-summary))
"A list of (HELM-SOURCE . SUMMARY-METHOD).")