33.8.5 Низкоуровневый кольцо обрезки

Эти функции и переменные предоставляют доступ к кольцу обрезки на более низком уровне, но они по-прежнему удобны для использования в программах Lisp, поскольку они заботятся о взаимодействии с выделениями оконной системы (см. Выделения оконной системы).

Функция: current-kill n &optional do-not-move

Функция current-kill поворачивает указатель обрезки, который обозначает переднюю часть кольца обрезки, на n позиций (от более новых обрезков к более старым) и возвращает текст в этой позиции в кольце.

Если необязательный второй аргумент do-not-move не равен nil, то current-kill не изменяет указатель обрезки; он просто возвращает n-й обрез, считая от текущего указателя обрезки.

Если n равен нулю, что указывает на запрос последнего обреза, current-kill вызывает значение interprogram-paste-function (описано ниже) перед обращением к кольцу обрезки. Если это значение является функцией, и вызов этой функции возвращает строку или список нескольких строк, current-kill помещает строки в кольцо обрезки и возвращает первую строку. Он также устанавливает указатель обрезки так, чтобы он указывал на запись кольца обрезки первой строки, возвращенной interprogram-paste-function, независимо от значения do-not-move. В противном случае current-kill не обрабатывает нулевое значение для n как особое: он возвращает запись, на которую указывает указатель обрезки, и не перемещает указатель обрезки.

Функция: kill-new string &optional replace

Эта функция помещает текст string в кольцо обрезки и заставляет указатель обрезки указывать на него. Она отбрасывает самую старую запись, если это уместно. Она также вызывает значения interprogram-paste-function (подлежащие пользовательскому варианту save-interprogram-paste-before-kill) и interprogram-cut-function (см. ниже).

Если replace не равен nil, то kill-new заменяет первый элемент кольца обрезки на string, а не помещает string в кольцо обрезки.

Функция: kill-append string before-p

Эта функция добавляет текст string к первой записи в кольце обрезки и заставляет указатель обрезки указывать на объединенную запись. Обычно string добавляется в конец записи, но если before-p не равен nil, то он добавляется в начало. Эта функция вызывает kill-new как подпрограмму, тем самым вызывая значения interprogram-cut-function и, возможно, interprogram-paste-function (см. ниже) по расширению.

Переменная: interprogram-paste-function

Эта переменная предоставляет способ передачи обрезанного текста из других программ, когда вы используете оконную систему. Ее значение должно быть nil или функцией без аргументов.

Если значение является функцией, current-kill вызывает ее, чтобы получить самый недавний обрез. Если функция возвращает значение, не равное nil, то это значение используется как самый недавний обрез. Если она возвращает nil, то используется передняя часть кольца обрезки.

Чтобы облегчить поддержку оконных систем, поддерживающих несколько выделений, эта функция также может вернуть список строк. В этом случае первая строка используется как самый недавний обрез, а все остальные строки помещаются в кольцо обрезки для легкого доступа с помощью yank-pop.

Обычное использование этой функции — получение буфера обмена оконной системы в качестве самого недавнего обреза, даже если выделение принадлежит другому приложению. См. Выделения оконной системы. Однако, если содержимое буфера обмена поступает из текущей сессии Emacs, эта функция должна вернуть nil.

Переменная: interprogram-cut-function

Эта переменная предоставляет способ передачи обрезанного текста в другие программы, когда вы используете оконную систему. Ее значение должно быть nil или функцией с одним требуемым аргументом.

Если значение является функцией, kill-new и kill-append вызывают ее с новым первым элементом кольца обрезки в качестве аргумента.

Обычное использование этой функции — помещать новый обрезанный текст в буфер обмена оконной системы. См. Выделения оконной системы.