Когда я копирую выбранный текст ( 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)))
Я бы посоветовал воспользоваться таким советом, как этот:(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должна быть только один раз. Я не могу редактировать комментарий.
select-active-regions
будет релевантной), но, похоже, речь идет о выделении региона.Ответы:
Лучшее решение использовать
C-x C-x
для реактивации знака. Но если вы действительно хотите сохранить выбор, вы можете использовать:источник
(defun yf/no-deactivate-mark (&rest _) (setq deactivate-mark nil)) (advice-addadvice-add 'kill-ring-save :after #'yf/no-deactivate-mark)
prog1
?advice-add
должна быть только один раз. Я не могу редактировать комментарий.