2012-04-18 12 views
9

Elispで努力しましたが、うまくいかず、引数の数が正しくありません。もしあなたがElipsを知っていれば、これはおそらくゼロの努力でエレガントに行えるでしょう。しかし、私は私のやりたいことをすぐに理解できるように、私の重い手持ちのものを含んでいます。代わりにポイントを保存し、後でそれを復元するElisp:クリップボードにバッファをコピーする

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

答えて

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の助けを忘れないでくださいあなたは機能が必要とする引数についてわからない場合は(C-HのF)常にdescribe-functionで利用可能な内部emacsのです。

+0

大変お手伝いいただきありがとうございます。 –

5

あなたがしなければならないより頑丈にしています。

(defun copy-whole-buffer() 
    "Copy entire buffer to clipboard" 
    (interactive) 
    (clipboard-kill-ring-save (point-min) (point-max))) 
関連する問題