我想从一些 elisp 代码中调用一个函数,就像我用前缀参数交互地调用它一样。具体来说,我想使用前缀调用 grep。
我最接近让它工作的是使用 execute-extended-command
,但这仍然需要我输入要使用前缀调用的命令...
;; calls command with a prefix, but I have to type the command to be called...
(global-set-key (kbd "C-c m g")
(lambda () (interactive)
(execute-extended-command t)))
文档说 execute-extended-command
使用 command-execute
来执行从迷你缓冲区读取的命令,但我无法使其工作:
;; doesn't call with prefix...
(global-set-key (kbd "C-c m g")
(lambda () (interactive)
(command-execute 'grep t [t] t)))
有没有办法以非交互方式调用带前缀的函数?
最佳答案
如果我没理解错的话,您正在尝试创建一个按键绑定(bind),其行为就像您键入 C-u M-x grep <ENTER>
一样。 。试试这个:
(global-set-key (kbd "C-c m g")
(lambda () (interactive)
(setq current-prefix-arg '(4)) ; C-u
(call-interactively 'grep)))
虽然我可能会为此创建一个命名函数:
(defun grep-with-prefix-arg ()
(interactive)
(setq current-prefix-arg '(4)) ; C-u
(call-interactively 'grep))
(global-set-key (kbd "C-c m g") 'grep-with-prefix-arg)
关于emacs lisp 以编程方式调用带有前缀参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6156286/