Emacs:函数中的通用参数(Cu)

Pas*_*ten 14 emacs arguments function

我想C-u在函数(例如,regexp)中使用,其中调用它C-u具有不同的效果.我怎么能在Emacs中做到这一点?该文档没有说明如何使用Emacs Lisp执行此操作.

(defun test ()
  (interactive)
  (align-regexp)) ; I would like to add the C-u prefix to this.
Run Code Online (Sandbox Code Playgroud)

Sea*_*rry 19

(defun my/test ()
  (interactive)
  (let ((current-prefix-arg 4)) ;; emulate C-u
    (call-interactively 'align-regexp) ;; invoke align-regexp interactively
    )
  )
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

  • 注意,模拟`Cu`*的必要参数值会有所不同*,具体取决于原始函数的期望(即它对`interactive`的参数).如果它接受"raw"前缀参数,那么你会想要传递列表''(4)`而不是数值`4`.参见`Ch ig``(elisp)Prefix Command Arguments``RET` (4认同)
  • 我不明白,看来这不是海报要求的。我认为应该:如果不使用Cu则做一件事,而一旦使用Cu则要做另一件事。 (2认同)

kot*_*ane 10

我来到这里寻找一种方法来检测我的函数是否被 Cu 调用。这是你如何做到的:

(defun my-function ()
 (interactive)
  (if (equal current-prefix-arg nil) ; no C-u
   ;; then
    (message "my-function was called normally")
   ;; else
    (message "my-function was called with C-u")))

Run Code Online (Sandbox Code Playgroud)

原发帖者问的是如何从他/她的函数内部使用 Cu调用另一个函数。我将其发布为对上面@codyChan 评论的澄清,希望它可以帮助其他人。

  • 我也是,谢谢了。如果你交换分支,你可以使用 `(if current-prefix-arg ...` 代替 (2认同)