2014-05-11 11 views
5

Sto cercando di implementare quanto segue: duplica la regione attualmente selezionata o una linea (se non c'è alcuna selezione) e commenta la regione originale con l'aiuto di comment-or-uncomment-region-or-line.Emacs copia regione/linea e commento allo stesso tempo

Ho pensato che potrei usare kill-region seguito da yank ma poi la mia selezione originale è andata persa, quindi non posso commentare. Se d'altra parte, prima commenterò, farò commentare entrambe le copie della mia regione.

L'altra idea che ho (che ritengo sia meglio perché utilizzo la modalità male) consiste nell'utilizzare evil-yank e quindi in evil-visual-restore per ripristinare la selezione in modo che possa commentarla. Ma io non riesco a capire quali argomenti da passare al evil-yank per specificare la regione selezionata.

Cosa mi manca qui?

risposta

5

La cosa principale che manca è la funzione copy-region-as-kill.

(defun copy-and-comment-region (beg end &optional arg) 
    "Duplicate the region and comment-out the copied text. 
See `comment-region' for behavior of a prefix arg." 
    (interactive "r\nP") 
    (copy-region-as-kill beg end) 
    (goto-char end) 
    (yank) 
    (comment-region beg end arg)) 
+0

Grazie! Come posso spostare una linea verso il basso dopo questo? Ho provato (next-line 1), ma non sembra funzionare per qualche motivo. – egdmitry

+0

Vedere la funzione 'avanti-linea'. – Drew

+0

Non funziona così. Ho il sospetto che è correlato al modo il male, se seleziono la regione con 'V, 'forward-Line' non funziona. – egdmitry