Как скопировать текст без потери выделения?


11

Когда я копирую выбранный текст ( kill-ring-saveс помощью M-w), я автоматически теряю свой выбор. Я попытался с Transient Mark Mode без удачи. (Обратите внимание, что я не использую режим CUA.)


Сначала я думал, что речь идет о выборе X (в этом случае переменная select-active-regionsбудет релевантной), но, похоже, речь идет о выделении региона.
YoungFrog

Ответы:


11

Лучшее решение использовать C-x C-xдля реактивации знака. Но если вы действительно хотите сохранить выбор, вы можете использовать:

(defun copy-keep-highlight (beg end)
  (interactive "r")
  (prog1 (kill-ring-save beg end)
    (setq deactivate-mark nil)))

1
Я бы посоветовал воспользоваться таким советом, как этот:(defun yf/no-deactivate-mark (&rest _) (setq deactivate-mark nil)) (advice-addadvice-add 'kill-ring-save :after #'yf/no-deactivate-mark)
YoungFrog

@djangoliv, спасибо. Что это prog1?
NVaughan

@YoungFrog, спасибо, но ваш код не работает, поскольку где-то есть синтаксическая ошибка.
NVaughan

2
Ах, ошибка копирования и вставки: advice-addдолжна быть только один раз. Я не могу редактировать комментарий.
YoungFrog

1
@NVaughan здесь хорошее объяснение: emacs.stackexchange.com/questions/5829/…
djangoliv
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.