2012-04-18 30 views
9

Fatto uno sforzo con Elisp, ma non ha funzionato - dice il numero errato di argomenti. Se conosci Elips, probabilmente questo potrebbe essere fatto elegantemente con zero sforzi. Ma includo la mia roba pesante in modo da capire immediatamente cosa sto cercando di fare.Elisp: copia buffer negli appunti

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

risposta

13

Invece di salvare il punto e ripristino, oltre che utilizzare save-excursion. È più robusto e ripristinerà anche il buffer. Non c'è nemmeno bisogno di un esplicito progn.

Detto questo, in questo caso è sufficiente passare gli intervalli su clipboard-kill-ring-save invece di cercare di fare confusione con la regione. Per esempio:

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

Ricordate, aiuto elisp è sempre disponibile emacs interne con describe-function (C-h f) se non siete sicuri di ciò che gli argomenti di una funzione richiede.

+0

Grande, grazie per il suggerimento sull'aiuto. –

5

Lo stai rendendo più difficile del necessario.

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