我正在寻找一种模拟迷你缓冲区输入的方法。因此, some-func 从迷你缓冲区获取一些输入并对其进行处理。问题是我必须从其他函数调用功能调用 some-func ,我需要交互地进行操作,所以我不能只传递一个参数。
(defun some-func (arg)
(interactive "*sEnter something: ")
;; Do something with arg
)
(defun calling-func ()
(call-interactively 'some-func)
;; Type to minibuffer
)
有任何想法吗?
谢谢!
最佳答案
探索为什么您需要交互地调用其他函数可能很有趣……但这不是您要的。
这是一个以交互方式“调用”一个函数并将文本发送到迷你缓冲区的示例。您只需要使用Emacs键盘宏:
(defun my-call-find-file (something)
"An example of how to have emacs 'interact' with the minibuffer
use a kbd macro"
(interactive "sEnter something:")
(let ((base-vector [?\M-x ?f ?i ?n ?d ?- ?f ?i ?l ?e return]))
;; create new macro of the form
;; M-x find-file RET <userinput> RET
(execute-kbd-macro (vconcat base-vector
(string-to-vector something)
(vector 'return)))))
相关文档为Keyboard Macros和Functions for Vectors。
关于emacs - 在Emacs中模拟迷你缓冲区输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2074598/