2010-02-01 37 views
20

Quiero copiar una cadena al portapapeles (no una región de un búfer en particular, solo una cadena simple). Sería bueno si también se añadiera al kill-ring. He aquí un ejemplo:Cómo copiar al portapapeles en Emacs Lisp

(copy-to-clipboard "Hello World")

qué existe esta función? Si es así, ¿cómo se llama y cómo lo encontraste? ¿Existe también una función paste-from-clipboard?

Parece que no puedo encontrar esto en el Manual de referencia de Lisp, así que díganme cómo lo encontraron.

+1

Usted puede encontrar esta pregunta útil: http://stackoverflow.com/questions/64360 –

Respuesta

36

Está buscando kill-new.

kill-new is a compiled Lisp function in `simple.el'. 

(kill-new string &optional replace yank-handler) 

Make string the latest kill in the kill ring. 
Set `kill-ring-yank-pointer' to point to it. 
If `interprogram-cut-function' is non-nil, apply it to string. 
Optional second argument replace non-nil means that string will replace 
the front of the kill ring, rather than being added to the list. 

Optional third arguments yank-handler controls how the string is later 
inserted into a buffer; see `insert-for-yank' for details. 
When a yank handler is specified, string must be non-empty (the yank 
handler, if non-nil, is stored as a `yank-handler' text property on string). 

When the yank handler has a non-nil PARAM element, the original string 
argument is not used by `insert-for-yank'. However, since Lisp code 
may access and use elements from the kill ring directly, the string 
argument should still be a "useful" string for such uses. 
+1

Parece muy prometedor. ¿Cómo encontraste esto? – User1

+0

Lo necesitaba yo mismo hace muchos, muchos años. No puedo recordar cómo lo encontré. –

+0

Bueno, (kill-new "Hello World") funcionó muy bien. ¡Gracias! – User1

3

hago esto:

(with-temp-buffer 
    (insert "Hello World") 
    (clipboard-kill-region (point-min) (point-max))) 

Eso pone en el portapapeles. Si lo quiere en el kill-ring, agregue un formulario kill-region también.

+0

'copy-region-as-kill' puede copiar al portapapeles y kill-ring de una vez: ' copy-region-as-kill es una función interactiva compilada de Lisp en 'simple.el '. (copy-region-as-kill beg end) Guarde la región como si la matara, pero no la mate. En modo marca transitoria, desactive la marca. Si 'interprogram-cut-function' no es nada, también guarde el texto para una ventana sistema de corte y pegado. –

0

El comando para colocar su selección en el portapapeles del sistema de ventanas es x-select-text. Puedes darle un bloque de texto para recordar. Entonces, un (buffer-substring (point) (mark)) o algo así debería darle lo que necesita para pasarle. En la respuesta de Joe, puede ver la función interprogram-cut-function. Mire eso para saber cómo encontrar esto.

0

En mi archivo .emacs, utilizo este

(global-set-key "\C-V" 'yank) 
(global-set-key "\C-cc" 'kill-ring-save) 

no podía usar Ctrl-C (o Sistema de copias), pero esto puede ser suficiente en caso de una patada en los viejos hábitos.

Cuestiones relacionadas