我想从我的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