问题描述
|
我想从一些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)))
有没有办法以非交互方式调用带有前缀的函数?
解决方法
如果我正确地理解了您的意思,则您正在尝试进行一个键绑定,就像您键入
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)
, 或者您可以只使用键盘宏
(global-set-key (kbd \"s-l\") (kbd \"C-u C-SPC\"))
在此示例中,组合键\“ sl \”(s(\“ super \”)是PC键盘上的\“ windows logo \”键)将返回标记环,就像您键入\“ Cu C -SPC \”。