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

Ema*_*erg 9 lisp emacs 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."))))
Run Code Online (Sandbox Code Playgroud)

ata*_*lor 14

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

也就是说,在这种情况下,只需通过范围clipboard-kill-ring-save而不是试图搞乱该区域.例如:

(defun copy-all ()
    "Copy entire buffer to clipboard"
    (interactive)
    (clipboard-kill-ring-save (point-min) (point-max)))
Run Code Online (Sandbox Code Playgroud)

请记住,如果您不确定函数需要什么参数,那么在使用describe-function(C-h f)的emacs中始终可以使用elisp帮助.


Tre*_*son 6

你让它变得比你更难.

(defun copy-whole-buffer ()
  "Copy entire buffer to clipboard"
  (interactive)
  (clipboard-kill-ring-save (point-min) (point-max)))
Run Code Online (Sandbox Code Playgroud)