Emacs Lisp函数带有可选参数调用其他函数

时间:2014-02-26 11:23:07

标签: emacs elisp

我的功能如下:

(defun swap-region-ring ()
  "replace selected text with the one from kill ring"
  (interactive)
  (backward-delete-char (- (point) (mark)))
  (yank))

(global-set-key (kbd "C-c y") 'swap-region-ring)

如何重写该函数以使用参数调用yank并且还具有可选参数,因此它的作用与yank相同?所以我可以打电话给 C-u 2 C-c y

1 个答案:

答案 0 :(得分:1)

yank碰巧接受“原始前缀参数”作为其参数,因此您可以将其取出并转发它:

(defun swap-region-ring (&optional arg)
  "replace selected text with the one from kill ring"
  (interactive "*P")
  (backward-delete-char (- (point) (mark)))
  (yank arg))

输入C-h f interactive以获取有关交互式规范的详细信息。