Объединение списка убийств и буфера обмена в Aquamacs на OSX

@lawlist запросил более подробную информацию, поэтому я переписываю вопрос:

Моя цель состоит в том, чтобы рассматривать ^X и ^K как два разных способа вырезать текст в ЕДИНСТВЕННЫЙ логический буфер обмена, который можно вставить с помощью ^V в emacs или в любом другом приложении.

Предположим, что в буфере emacs есть две строки: я первая строка я вторая строка

и я нажимаю ^K в первой строке, затем кольцо уничтожения И буфер обмена на уровне ОС теперь имеют «Я первая строка», нажав ^K еще два раза, затем буфер обмена на уровне ОС будет снова обновлен, чтобы иметь " Я на первой линии\nЯ на второй линии"

Нажатие ^V в emacs или других приложениях приведет к тому, что этот текст будет вставлен в них. (^Y может продолжать вести себя как обычно или нет, мне все равно)

Прямо сейчас ^K привязан к org-kill-line или просто kill-line, в зависимости от того, в каком режиме редактирования я нахожусь.

Я не думаю, что для этого существует команда emacs, но если бы я только знал, какие функции вызывать, держу пари, просто обновлять буфер обмена ОС после каждого ^K было бы тривиально.

Любая помощь будет здорово.

спасибо, Дэн


person Dan Oblinger    schedule 07.06.2015    source источник
comment
Что происходит теперь, когда вы нажимаете Control-K в Aquamacs, и чем это отличается от того, чего вы хотите достичь? Также будет полезно включить имя конкретной вызываемой функции, например, kill-line. В Emacs имя функции можно получить, набрав Control-h k, а затем нажав любое последующее сочетание клавиш. Большинство участников форума будут иметь легкий доступ к универсальному Emacs, но не к Aquamacs. Если эта функция является общей для стандартного Emacs, ваши шансы получить ответ существенно возрастают.   -  person lawlist    schedule 07.06.2015
comment
@lawlist Я переписал свой вопрос, чтобы он был более точным. дайте мне знать, если вам нужна дополнительная информация. p.s. Я ожидаю, что ответ, который работает для emacs, также будет работать для Aquamac, я просто заканчивал. Спасибо!   -  person Dan Oblinger    schedule 08.06.2015
comment
Строка документа для kill-line частично гласит: Если вы хотите добавить удаленную строку к последнему удаленному тексту, используйте append-next-kill перед kill-line. Приблизит ли это вас к желаемому результату? Поведение по умолчанию состоит в том, чтобы добавить убитые данные как в список уничтожений Emacs, так и в список уничтожений OSX. Вот ссылка на руководство по append-next-kill: gnu. org/software/emacs/manual/html_node/emacs/ Строку документа можно просмотреть в Emacs, вызвав C-h f или M-x describe-function.   -  person lawlist    schedule 08.06.2015
comment
Спасибо @lawlist, функция kill-line прямо сейчас вообще не влияет на буфер обмена на уровне ОС ... на самом деле у нее уже есть семантика, на которую я надеюсь, но это ОТДЕЛЬНЫЙ буфер обмена. (это глупо), поэтому я мечтаю о функции, которая в основном выглядит примерно так: (defun merged_kill() (kill-line) (setq clipboard (current-kill-buffer)) но я не знаю команд. поэтому добавление или нет, это не проблема, проблема в том, что он не обновляет буфер обмена на уровне ОС   -  person Dan Oblinger    schedule 08.06.2015
comment
В общей версии Emacs kill-line вызывает kill-region, который вызывает kill-new если (eq last-command 'kill-region) -- kill-new содержит материал interprogram-..., отвечающий за отправку в буфер обмена OSX. Возможно, автор Aquamacs изменил kill-line и/или его базовые функции, чтобы изолировать буфер обмена OSX — вы можете использовать M-x find-function, чтобы найти kill-line и другие функции. M-x find-variable используется для переменных. Я стараюсь не устанавливать Aquamacs, потому что он добавляет папки и файлы в места, которые мне не нравятся.   -  person lawlist    schedule 08.06.2015


Ответы (1)


Я думаю, вы ищете save-interprogram-paste-before-kill. Попробуйте добавить это

(setq save-interprogram-paste-before-kill t)

к вашему init.el

person PuercoPop    schedule 08.06.2015
comment
Спасибо за попытку. это, кажется, сохраняет содержимое буфера обмена в кольцо уничтожения. моя цель обратная, чтобы сохранить содержимое из ^K (в настоящее время в списке уничтожений) в буфер обмена. Если бы я знал, как получить содержимое текущей записи списка уничтожений в переменную elisp, думаю, я мог бы написать эту функцию. к сожалению, значение, возвращаемое мне, не является простой строкой, когда я пытаюсь это сделать. Какой византийский беспорядок! - person Dan Oblinger; 09.06.2015
comment
У меня больше нет Mac, чтобы проверить это, но когда я это сделал, интеграция пошла в обоих направлениях. Хотя я использовал ванильный GNU/Emacs, а не Aquamacs. странный. - person PuercoPop; 10.06.2015
comment
Я попробую это в ванильном emacs. Парень, управляющий Aqua, лучше справляется с исправлением ошибок, специфичных для OSX .... поэтому у меня были проблемы с w. ванильный emacs лет назад .... может быть, теперь они будут исправлены. - person Dan Oblinger; 10.06.2015