Emacs 中的 minibuffer 如何实现类似Google实时补全的效果?

还真的是,应该是之前调试用的时候遗留下的。粗心了。:slight_smile:

看了下Helm的函数接口,应该也容易的。等用Helm实现下,回头贴上来。

(with-temp-message
        (with-current-buffer " *Minibuf-0*" (buffer-string))
      (DO-SOMETHING))

其实这样更好点

(let ((inhibit-message t))
  ...do-something)
1 个赞

谢谢,已更新 kiwix.el ,感觉更顺畅了。

这个代码方式感觉好hack啊。哈哈,有意思

抄送 @manateelazycat

原来改的时候就感觉还是有点不干净,偶尔会弹一两条保存信息出来,后来看了这个才知道要怎么控制Emacs不输出到echo area。

i以前也在Emacs-help邮件列表中见过这个shut-up.el,后来实在是没想起来。去我的Emacs extensions记录中去搜索也没找到。哈哈,现在补上。里面确实记录了不少silent的方式。 我这边倒是只需要 inhibit-message 就行了。毕竟只有 request请求一个方式嘛。

感觉大家知道的真的好多啊。

(inhibit-message t)并不足够好用。。在防止ivy闪烁这样的场景里,它和lazycat的hack一样能满足需求;然而在另一个eldoc被刷掉的问题中:

  • 无特殊处理:闪过“saved file”信息,eldoc不见了
  • (inhibit-message t):闪过空白,eldoc不见了
  • lazycat的hack:不闪,eldoc正常持续显示

刚才试了下with-temp-message的版本,在buffer里敲两个字符然后打开helm/ivy,还是会闪烁得很厉害

%E6%B7%B1%E5%BA%A6%E5%BD%95%E5%B1%8F_emacs_20191016112745

这个是用了inhibit-message

%E6%B7%B1%E5%BA%A6%E5%BD%95%E5%B1%8F_emacs_20191016112953

试了一下,只with-temp-message原来真的会闪 :joy: ,可能是因为我平时触发auto-save需要idle,而一通操作之后发呆idle,ivy通常都没有打开,所以这么久都没发现。。

所以还是两个一起用最好。。

我看你录屏效果很好,你是用什么录的?

深度录屏,紫薯布丁

2 个赞

代码我写的,哈哈哈哈

1 个赞

Awesome job!

深度截屏我也有在用,比flameshot要稳定多了 :+1:

暂时无法提供Helm版本的支持了。看了Helm的source 定义,看来还真的不好实现,默认只有 从process得到的list结果。无法传递input到process function。我已经在GitHub Issues 上提问了。希望能出个默认方案。