emacs - emacs 迷你缓冲区中的可点击文本

标签 emacs elisp

如何将可点击的文本放入 emacs minibuffer 中?

例如,这段代码在文本缓冲区中生成可点击的文本,它对我来说效果很好。

(let ((map (make-sparse-keymap)))
     (define-key map (kbd "<down-mouse-1>") 
            '(lambda() (interactive) (message-box "it works!")))
     (add-text-properties 1 5 `(keymap, map
                                mouse-face highlight)))

但是,类似的迷你缓冲区代码无法正常工作

     [...]
     (with-current-buffer (window-buffer (minibuffer-window))
       (message "link")
       (add-text-properties (point-at-bol) (point-at-eol) 
                            `(keymap, map
                              mouse-face highlight))))

结果,文本被放入没有这些属性的迷你缓冲区中。 我也尝试过(属性化但结果是相同的。

     [...]
     (message (propertize "link" 
                          'mouse-face 'highlight
                          'keymap map)))

这有什么问题吗?

谢谢

最佳答案

  1. 消息写入回显区域,而不是写入迷你缓冲区。

  2. 迷你缓冲区未激活。即使您使用 insert 而不是 message,您也不会看到其中的文本。

你真正想做的是什么?您想要在迷你缓冲区中插入此类属性化文本的上下文是什么?例如,当读取输入时,迷你缓冲区处于事件状态。您可以开始阅读并在文本处于事件状态时将文本插入其中。

关于emacs - emacs 迷你缓冲区中的可点击文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8440013/

相关文章:

emacs - 如何在Emacs Dired中更改目录

elisp - 如何在新框架中访问文件

Emacs Lisp 语法高亮

emacs - 如何着手学习 Common Lisp 和 Emacs Lisp?

emacs - 如何用elisp代码注释掉sexps?

emacs - 如何在 emacsClient 中自动完成光光标

text - Carbon Emacs 不会粘贴 Microsoft Word 的复制内容

java - IntelliJ IDEA 有类似emacs 的增量搜索吗?

Emacs 打印边距栏

emacs - 在 osx 上的 gnu emacs 中使用 magit