Я достаточно доволен Mw по умолчанию, (kill-ring-save)
который теряет подсветку региона при запуске команды. Я не хочу изменять его поведение, но я хочу повторно <C-insert>
выполнить привязку, чтобы выполнить подобное действие и сохранить выделение региона.
Я попытался (не) установить transient-mark-mode
напрямую и через функцию, но регион по-прежнему теряет свою подсветку.
Запуск только (kill-ring-save (region-beginning) (region-end))
в интерактивной функции работает как положено, т.е. он теряет выделение.
Запуск только (exchange-point-and-mark) (exchange-point-and-mark)
в интерактивной функции работает как положено, т.е. это повторно подсвечивает область и помещает / оставляет точку в ее оригинальном / правильном месте.
Однако когда я соединяю их все вместе в функцию, она не выделяет регион заново. Вот неработающая функция и привязка:
(defun kill-ring-save-keep-highlight ()
(interactive)
(kill-ring-save (region-beginning) (region-end))
(exchange-point-and-mark) (exchange-point-and-mark)
)
(global-unset-key (kbd "<C-insert>"))
(global-set-key (kbd "<C-insert>") 'kill-ring-save-keep-highlight)
Использование: GNU Emacs 23.1.1 в Ubuntu 10.04.3
activate-mark
, но это все еще не работает. Я даже установил чистую виртуальную машину Ubuntu 11.04 с единственным кодом.emacs
, выполняющим эту функцию, но она по-прежнему не активирует метку, но применяется вручнуюC-x C-x
сразу послеC-insert
восстановления подсветки ...emacs -q
с кодом и проверить, работает ли он.~/.emacs
и без чего-либо внутри~/.emacs.d/
, и, как уже упоминалось, также в новой установке emacs на новой виртуальной машине .... Я сейчас попробовал эту команду, но это тоже не работает:/usr/bin/emacs --no-init-file --no-site-file --eval '(defun kill-ring-save-keep-highlight (beg end) (interactive "r") (kill-ring-save beg end) (activate-mark))'
... Функция работает для вас?