10

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

2 に答える 2

16

ポイントを保存して後で復元する代わりに、 を使用しますsave-excursion。より堅牢で、バッファも復元します。明示的なものも必要ありませんprogn

とはいえ、この場合clipboard-kill-ring-save、リージョンをいじろうとするのではなく、単に範囲を渡すだけです。例えば:

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

関数に必要な引数がわからない場合は、 describe-function( )を使用して elisp ヘルプを emacs 内でいつでも利用できることを覚えておいてください。C-h f

于 2012-04-18T19:13:29.060 に答える
6

必要以上に難しくしている。

(defun copy-whole-buffer ()
  "Copy entire buffer to clipboard"
  (interactive)
  (clipboard-kill-ring-save (point-min) (point-max)))
于 2012-04-18T19:15:06.827 に答える