2012-04-18 39 views
9

Thực hiện một nỗ lực với Elisp, nhưng không hoạt động - cho biết số lượng đối số không chính xác. Nếu bạn biết Elips, có lẽ điều này có thể được thực hiện một cách tao nhã với nỗ lực không. Nhưng tôi bao gồm những thứ nặng tay của tôi để bạn ngay lập tức sẽ hiểu những gì tôi đang cố gắng làm.Elisp: Sao chép bộ đệm vào clipboard

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

Trả lời

13

Thay vì lưu điểm và khôi phục sau, sử dụng save-excursion. Nó mạnh mẽ hơn và sẽ khôi phục lại bộ đệm. Không cần phải rõ ràng progn.

Điều đó nói rằng, trong trường hợp này chỉ cần chuyển các phạm vi đến clipboard-kill-ring-save thay vì cố gắng gây rối với khu vực. Ví dụ:

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

Hãy nhớ rằng, sự giúp đỡ elisp luôn luôn có sẵn emacs bên trong với describe-function (C-h f) nếu bạn không chắc chắn về những gì lập luận một chức năng yêu cầu.

+0

Tuyệt vời, cảm ơn mẹo giúp đỡ. –

5

Bạn đang làm cho nó khó khăn hơn bạn phải làm.

(defun copy-whole-buffer() 
    "Copy entire buffer to clipboard" 
    (interactive) 
    (clipboard-kill-ring-save (point-min) (point-max))) 
Các vấn đề liên quan