Search code examples
emacselisp

How to copy to clipboard in Emacs Lisp


I want to copy a string to the clipboard (not a region of any particular buffer, just a plain string). It would be nice if it were also added to the kill-ring. Here's an example:

(copy-to-clipboard "Hello World")

Does this function exist? If so, what is it called and how did you find it? Is there also a paste-from-clipboard function?

I can't seem to find this stuff in the Lisp Reference Manual, so please tell me how you found it.


Solution

  • You're looking for 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.