我想從我的elisp函數中獲得動態提示。我想要一個像replace-regexp的地方,它會顯示輸入的最後一個正則表達式。我試過 (交互式 (concat「sab」「bab」))) 不起作用!Emacs Elisp動態交互式提示
我也嘗試過類似的消息格式 (互動「s%S」上次使用的,正則表達式)
和不工作! 任何人都知道如何做到這一點?
謝謝!
我想從我的elisp函數中獲得動態提示。我想要一個像replace-regexp的地方,它會顯示輸入的最後一個正則表達式。我試過 (交互式 (concat「sab」「bab」))) 不起作用!Emacs Elisp動態交互式提示
我也嘗試過類似的消息格式 (互動「s%S」上次使用的,正則表達式)
和不工作! 任何人都知道如何做到這一點?
謝謝!
M-x find-function
是你的朋友。它會通過向您顯示源代碼來告訴您emacs中的任何內容。使用它,我發現query-regexp-replace
調用query-replace-read-args
,它調用query-replace-read-from
,它調用read-from-minibuffer
使用從上次使用的正則表達式創建的提示,該提示保存在虛線對query-replace-defaults
中。
所以:
(defun my-func()
"Do stuff..."
(interactive)
(read-from-minibuffer "Regexp? " (first query-replace-defaults)))
是拋出了最後輸入的正則表達式作爲默認提示的命令。
使用輸入歷史變量,互動與列表:
(defvar my-func-history nil)
(defun my-func (str)
(interactive (list (read-from-minibuffer "Input string: " (car my-func-history) nil nil 'my-func-history)))
(insert str))
如果你不想在那裏開始進入最後的值,改變(car my-func-history)
到nil
。您當然可以上/下箭頭在提示符處瀏覽歷史記錄。
謝謝不錯,現在我所需要的就是完成... – To1ne 2011-05-05 10:21:17