Emacs Elisp:将缓冲区复制到剪贴板

Emacs Elisp:将缓冲区复制到剪贴板,emacs,lisp,elisp,Emacs,Lisp,Elisp,用Elisp做了一番努力,但没有成功——说的参数数量不正确。如果你知道Elips,也许这可以用零努力优雅地完成。但我会把我的笨手笨脚的东西放进去,这样你马上就会明白我想做什么 (defun copy-all () "Copy entire buffer to clipboard" (interactive) (let ((pos (point))) (progn (mark-whole-buffer) (cl

用Elisp做了一番努力,但没有成功——说的参数数量不正确。如果你知道Elips,也许这可以用零努力优雅地完成。但我会把我的笨手笨脚的东西放进去,这样你马上就会明白我想做什么

(defun copy-all ()
    "Copy entire buffer to clipboard"
    (interactive)
    (let ((pos (point)))
        (progn
            (mark-whole-buffer)
            (clipboard-kill-ring-save)
            (keyboard-quit)
            (goto-char pos)
            (message "Copy done."))))

使用
保存偏移
,而不是保存点并在以后恢复。它更健壮,还可以恢复缓冲区。也不需要显式的
progn

这就是说,在本例中,只需将范围传递到
剪贴板kill ring save
,而不必尝试处理区域。例如:

(defun copy-all ()
    "Copy entire buffer to clipboard"
    (interactive)
    (clipboard-kill-ring-save (point-min) (point-max)))

请记住,如果您不确定函数需要哪些参数,则在emacs中始终可以使用带有
描述函数(C-HF)的elisp帮助。

您让它变得比必须的更难

(defun copy-whole-buffer ()
  "Copy entire buffer to clipboard"
  (interactive)
  (clipboard-kill-ring-save (point-min) (point-max)))