【问题标题】:Elisp: Copy buffer to clipboardElisp:将缓冲区复制到剪贴板
【发布时间】:2012-04-18 19:01:48
【问题描述】:

尝试使用 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."))))

【问题讨论】:

    标签: emacs lisp elisp


    【解决方案1】:

    请使用save-excursion,而不是保存该点并稍后恢复它。它更健壮,并且还将恢复缓冲区。也不需要明确的progn

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

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

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

    【讨论】:

      【解决方案2】:

      你做的比你必须做的更难。

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

      【讨论】:

        猜你喜欢
        • 2014-01-21
        • 2013-04-13
        • 1970-01-01
        • 2011-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-15
        • 1970-01-01
        相关资源
        最近更新 更多