如何解决具有前缀参数的emacs lisp调用函数以编程方式
| 我想从一些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 \”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。