Emacs
將最後一條 Emacs 消息複製到目前緩衝區
有沒有可以用來將回顯區域(如果有)中的消息快速復製到我的工作緩衝區的功能?
define-key
我應該用或global-set-key
其他方式定義該功能的快捷方式嗎?
該函式
current-message
返回目前顯示在回顯區域中的消息(如果有)。您可以使用(insert (current-message))
. 但是,任何導致其他東西佔據迴聲區域的東西都會導致current-message
返回nil
。來自 Emacs 的消息存檔在
*Messages*
緩衝區中。從那裡抓住最後一行會更有用。這並不完全可靠,因為可能有多行消息,但這種情況很少見:該message
功能適用於適合一行的短消息。以下函式插入最後一條消息(更準確地說,是
*Messages*
緩衝區的最後一行。使用前綴參數,它返回較舊的消息:1 表示最新消息,2 表示倒數第二條消息,等等。參數 0 插入(current-message)
如果有的話。(defun last-message (&optional num) (or num (setq num 1)) (if (= num 0) (current-message) (save-excursion (set-buffer "*Messages*") (save-excursion (forward-line (- 1 num)) (backward-char) (let ((end (point))) (forward-line 0) (buffer-substring-no-properties (point) end)))))) (defun insert-last-message (&optional num) (interactive "*p") (insert (last-message num)))
以正常方式將其綁定到鍵。例如,如果您希望該命令
C-c m
始終可用:(global-set-key "\C-cm" 'insert-last-message)
可能有比呼叫兩個自定義命令來插入文件名更簡單的方法,請參閱Emacs wiki。
要插入使用 評估 Lisp 片段的輸出
C-x C-e
,請傳遞前綴參數:C-u C-x C-e
。