Подтвердить что ты не робот

Как совместить первичный/буфер обмена 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. Я хочу, чтобы все было в буфере обмена!

4b9b3361

Ответ 1

Следующие записи из НОВОСТИ кажутся уместными:

  • mouse-drag-copy-region теперь по умолчанию имеет значение nil.

  • mouse-2 теперь привязан к mouse-yank-primary.

Это пасты из основного выбора, игнорируя kill-ring. Ранее мышь-2 была привязана к mouse-yank-at-click.

  • Чтобы вернуться к предыдущему поведению, выполните следующие действия:

    • Измените select-active-regions на ноль.
    • Измените mouse-drag-copy-region на t.
    • Измените x-select-enable-primary на t (только на X).
    • Измените x-select-enable-clipboard на ноль.
    • Привязать mouse-yank-at-click к мыши-2.

Я думаю, чтобы получить предыдущее поведение в 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%)