Как совместить первичный/буфер обмена Emacs с копией и вставкой в MS Windows?
Emacs 24 изменил способ работы с копиями/вставкой, чтобы он соответствовал современным X-приложениям (см. в этой статье в разделе "Изменения выбора" ). Они явно отделяют первичный выбор и среднюю кнопку мыши от копирования/вставки буфера обмена.
К сожалению, для меня, используя собственный (а не cygwin!) Emacs 24.2.1 под MS Windows, это испортится, как я хочу работать.
Вот что я хочу:
- Выделение (выделение) текста в Emacs автоматически копирует его в буфер обмена Windows. Если я вставляю его (Ctrl-V) в другое приложение Windows, он вставляет его. Если я набираю C-y (yank) в Emacs, он вставляет. Если я кликнув по центру в Emacs, он вставляет.
- Убийство в Emacs (C-w) копирует данные в буфер обмена. Если я вставляю его (Ctrl-V) в другое приложение Windows, он вставляет его. Если я набираю C-y (yank) в Emacs, он вставляет. Если я кликнув по середине в Emacs, он вставляет содержимое буфера обмена, а не последний выделенный текст.
- Все, что я скопировал в буфер обмена из другого приложения Windows (например, с помощью Ctrl-C), можно вставить в Emacs, набрав Cy (yank) или щелкнув по середине (прямо сейчас, вставляет последний выделенный текст, а не содержимое буфера обмена).
Подводя итог, я думаю, что это означает устранение различия между первичными выборами и буфером обмена в Emacs. Я хочу, чтобы все было в буфере обмена!
Ответы
Ответ 1
Следующие записи из НОВОСТИ кажутся уместными:
Это пасты из основного выбора, игнорируя kill-ring.
Ранее мышь-2 была привязана к mouse-yank-at-click
.
Я думаю, чтобы получить предыдущее поведение в Windows, вам нужно оставить как x-select-enable-primary
, так и x-select-enable-clipboard
по их текущим значениям, и, возможно, select-active-regions
не связано с изменением поведения, о котором вы жалуетесь здесь.
Вот точные строки, которые нужно поместить в файл .emacs:
(setq select-active-regions nil)
(setq mouse-drag-copy-region t)
(global-set-key [mouse-2] 'mouse-yank-at-click)
Ответ 2
Кажется, что перетаскивание мыши ничего не делает с буфером обмена. Следующее добавляет, что, но я не знаю, что он делает, чтобы указать и отметить:
(defadvice mouse-drag-region (after copy-to-clipboard activate)
(clipboard-kill-ring-save (region-beginning) (region-end))
(goto-char st) (push-mark nd nil t)
)
Ответ 3
- Насколько я могу судить, пункты 2 и 3 уже работают "из коробки"?
- Кроме того, я считаю, что вам не интересно иметь историю (например,
убийственное кольцо)?
- Вы имеете в виду выделение "выбора" (в emacs, известном как
регион), или фактически выделяя его (придавая ему цвет, например,
желтый)?
Если вы хотите выбрать его, я думаю, проблема заключается в том, что Emacs не знает, когда ваш выбор заканчивается, и, следовательно, он должен скопировать его в буфер обмена? Вот почему вы использовали бы Meta-W
(Alt-Shift-w), который копирует его в kill-ring
, доступный вне Emacs.
(Я разместил это здесь, так как я думаю, что комментарии запутаны, но я удалю или изменю этот ответ позже)
Думаю, вы найдете всю необходимую информацию в mouse.el
:
Чтобы попасть туда, попробуйте: C-h k any mouse button и нажмите mouse.el, чтобы узнать, где он определен. Если вы ищете более "global-set-key
" в файле, вы можете найти именно то, что ищете (я все еще не уверен на 100%)