如何在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)))
这有什么问题?
由于
答案 0 :(得分:2)
message
写入回音区域,而不是迷你缓冲区。
迷你缓冲区未激活。即使您使用insert
代替message
,也不会在那里看到文字。
你真正想做的是什么?您想在迷你缓冲区中插入此类属性文本的上下文是什么?当例如正在读取输入时,迷你缓冲器是活动的。您可以启动阅读并在文本处于活动状态时插入文本。