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

时间:2011-12-09 01:27:17

标签: emacs elisp

如何在emacs迷你缓冲区中添加可点击的文字?

例如,此代码在文本缓冲区中生成可单击的文本,它对我来说很好。

(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 个答案:

答案 0 :(得分:2)

  1. message写入回音区域,而不是迷你缓冲区。

  2. 迷你缓冲区未激活。即使您使用insert代替message,也不会在那里看到文字。

  3. 你真正想做的是什么?您想在迷你缓冲区中插入此类属性文本的上下文是什么?当例如正在读取输入时,迷你缓冲器是活动的。您可以启动阅读并在文本处于活动状态时插入文本。