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

时间:2012-04-18 19:01:49

标签: emacs lisp elisp

与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."))))

2 个答案:

答案 0 :(得分:13)

使用save-excursion,而不是保存点并在以后恢复。它更强大,也将恢复缓冲区。也不需要明确的progn

那就是说,在这种情况下,只需将范围传递给clipboard-kill-ring-save,而不是试图弄乱该区域。例如:

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

请记住,如果你不确定函数需要什么参数,那么elisp帮助总是在带有describe-function C-h f )的emacs中可用。

答案 1 :(得分:5)

你使它变得比你更难。

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