当用户输入内容时,将内容添加到Emacs迷你缓冲区?

时间:2013-05-24 13:31:41

标签: emacs elisp minibuffer

我可能会走错路,所以让我知道我是不是。我正在尝试构建一个与Vim's ctrlp和其他插件使用的用户界面类似的用户界面,从而为用户提供一个提示,当他们输入时,结果显示在上面迷你缓冲提示线。

我已经使用minibuffer-with-setup-hook和本地post-command-hook(简单)使迷你缓冲区命令处理部分正常工作,并且可以获得我想要显示的结果(仅通过(message)验证他们现在。)

如果我想在迷你缓冲区提示行上方显示10行结果,我应该以某种方式将文本添加到迷你缓冲区,或者使用单独的缓冲区,一旦命令完成,我将关闭它?有关本手册部分的任何指示,我应该阅读这篇文章的正确轨道吗?

2 个答案:

答案 0 :(得分:2)

“迷你缓冲区”是普通缓冲区,因此您可以通过以正常方式插入/删除文本来修改它。这就是说,在“之前”添加文本意味着基本上修改可能导致问题的提示。做一些像

这样的事情可能会好得多
(let ((ol (make-overlay (point-min) (point-min))))
  (overlay-put ol 'before-string (format "%s\n" myresults)))

答案 1 :(得分:1)

我开始把它写成评论,但它有点太长了......

TBH,我觉得有更轻量级的掌舵的空间。但现实是掌舵足够好,其他人已经写好了。

我和其他任何人(到目前为止)都没有足够的动力重写它。你所描述的“上帝”方面确实没有吸引力。但它可以加载它(现在很大,使用现代计算机,它确实不是问题),并且更改设置以使其极简主义。

ido是一种更简单的替代方案,但UI的风格并不完全是你所描述的。