Как скопировать в буфер обмена в Emacs Lisp - PullRequest
30 голосов
/ 01 февраля 2010

Я хочу скопировать строку в буфер обмена (не область какого-либо конкретного буфера, просто простая строка). Было бы хорошо, если бы он был добавлен в список убийств. Вот пример:

(copy-to-clipboard "Hello World")

Эта функция существует? Если да, то как это называется и как вы его нашли? Также есть функция paste-from-clipboard?

Я не могу найти этот материал в Справочном руководстве по Лиспу, поэтому, пожалуйста, расскажите, как вы его нашли.

Ответы [ 4 ]

48 голосов
/ 01 февраля 2010

Вы ищете 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.
4 голосов
/ 01 февраля 2010

Я делаю это:

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

Это попадает в буфер обмена. Если вы хотите это в kill-ring, добавьте также kill-region форму.

0 голосов
/ 26 августа 2014

В моем файле .emacs я использую это

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

Я не мог использовать Ctrl-C (или System-copy), но этого может быть достаточно, если старые привычки проявятся.

0 голосов
/ 01 февраля 2010

Команда для размещения вашего выбора в буфере обмена оконной системы: x-select-text. Вы можете дать ему блок текста для запоминания. Так что (buffer-substring (point) (mark)) или что-то должно дать вам то, что вам нужно передать. В ответе Джо вы можете увидеть функцию interprogram-cut. Посмотрите, как найти это.

...