2011-12-09 93 views
2

如何將可點擊文本放入emacs迷你緩衝區中?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)))) 

工作作爲結果的文本爲一個小緩衝區沒有這些屬性。 我也試過(propertize但結果是一樣的。

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

這有什麼錯呢?

感謝

回答

2
  1. message寫入回聲區,而不是迷你緩衝區。

  2. 迷你緩衝器未激活即使您使用insert而不是message您將不會沒有看到那裏的文字。

什麼是你真的想要做什麼?你想要在minibuffer中插入這樣的財產化文本的上下文是什麼?當例如正在讀取輸入時,微型緩衝器處於激活狀態。您可以啓動閱讀並在文本處於活動狀態時將其插入。

+0

我在minibuffer上下文中使用了屬性文本 - '(with-current-buffer(window-buffer(minibuffer-window))[...])'。所以我嘗試使用'insert'而不是'message',它在小緩衝區中顯示可點擊的文本。這是我需要的。謝謝。 – Taras