1

我可能在这里走错了路,所以如果我是,请告诉我。我正在尝试构建与Vim 的 ctrlp和其他插件使用的用户界面类似的用户界面,从而为用户提供提示,并且在他们键入时,结果显示在 minibuffer 提示行上方。

我已经让 minibuffer 命令处理部分可以正常工作,minibuffer-with-setup-hook并且可以使用本地post-command-hook(简单),并且可以获得我想要显示的结果((message)现在只需 ing 它们进行验证)。

如果我想在 minibuffer 提示行上方显示 10 行结果,我应该以某种方式将文本添加到 minibuffer,还是使用一个单独的缓冲区,一旦命令完成,我将关闭它?任何指向我应该阅读的手册部分内容的指针都在正确的轨道上?

4

2 回答 2

2

“minibuffer”是一个普通的缓冲区,因此您可以通过以正常方式在其中插入/删除文本来修改它。这就是说,在“之前”添加文本基本上意味着修改可能会导致问题的提示。做类似的事情可能会好得多

(let ((ol (make-overlay (point-min) (point-min))))
  (overlay-put ol 'before-string (format "%s\n" myresults)))
于 2013-05-25T05:28:44.407 回答
1

我开始写这个作为评论,但它有点太长了......

TBH,我觉得重量更轻的 helm 有空间。但实际情况是 helm 已经足够好了,而且已经有人写过了。

我和其他任何人(到目前为止)都没有足够的动力去重写它。你所描述的它的“上帝”方面确实没有吸引力。但是可以加载它(尽管它很大,但对于现代计算机来说,这真的不是问题),并可以更改设置,使其变得简约。

ido 是一个更简单的替代方案,但 UI 的样式与您描述的不完全一样。

于 2013-05-25T04:10:47.793 回答