问题 Emacs:函数中的通用参数(C-u)


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

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

11859
2017-10-10 20:34


起源



答案:


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

希望有所帮助。


14
2017-10-10 23:14



优秀。做它有什么和一些解释。 - PascalVKooten
注意要模拟的必要参数值 C-u  变化,取决于原始功能的期望(即其参数 interactive)。如果它接受“raw”前缀参数,那么您可能希望传递列表 '(4) 而不是数值 4。看到 C-h i g  (elisp) Prefix Command Arguments  RET - phils
我不明白,这似乎不是要求的海报。我认为它应该是:如果没有用C-u调用那么做一件事,并且用C-u调用另一件事。 - CodyChan
谢谢,我使用org-journal来抑制自动时间输入创建。 - DuckPyjamas


答案:


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

希望有所帮助。


14
2017-10-10 23:14



优秀。做它有什么和一些解释。 - PascalVKooten
注意要模拟的必要参数值 C-u  变化,取决于原始功能的期望(即其参数 interactive)。如果它接受“raw”前缀参数,那么您可能希望传递列表 '(4) 而不是数值 4。看到 C-h i g  (elisp) Prefix Command Arguments  RET - phils
我不明白,这似乎不是要求的海报。我认为它应该是:如果没有用C-u调用那么做一件事,并且用C-u调用另一件事。 - CodyChan
谢谢,我使用org-journal来抑制自动时间输入创建。 - DuckPyjamas