Jestem zadowolony z domyślnego Mw, (kill-ring-save)
który traci podświetlenie regionu po uruchomieniu polecenia. Nie chcę zmieniać jego zachowania, ale chcę ponownie powiązać, <C-insert>
aby wykonać podobną akcję i zachować podświetlanie regionu.
Próbowałem (cofnąć) ustawienie transient-mark-mode
bezpośrednio i za pomocą funkcji, ale region wciąż traci wyróżnienie.
Uruchamianie tylko (kill-ring-save (region-beginning) (region-end))
w funkcji interaktywnej działa zgodnie z oczekiwaniami, tj. traci podświetlanie.
Uruchamianie tylko (exchange-point-and-mark) (exchange-point-and-mark)
w funkcji interaktywnej działa zgodnie z oczekiwaniami, tj. ponownie podkreśla region i umieszcza / pozostawia punkt w jego oryginalnym / poprawnym miejscu.
Jednak kiedy zestawię je wszystkie w funkcję, nie spowoduje to ponownego podświetlenia regionu. Oto funkcja niedziałająca i wiążąca:
(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)
Używanie: GNU Emacs 23.1.1 w Ubuntu 10.04.3
activate-mark
, ale nadal nie działa. Zainstalowałem nawet czystą maszynę wirtualną z Ubuntu 11.04 z jedynym kodem.emacs
będącym tą funkcją, ale nadal nie aktywuje znaku, ale ręczne zastosowanieC-x C-x
natychmiast po tymC-insert
powoduje przywrócenie podświetlenia ...emacs -q
z kodem i sprawdź, czy działa.~/.emacs
i bez niczego~/.emacs.d/
, i jak wspomniano, również w zupełnie nowej instalacji emacsa w zupełnie nowej maszynie wirtualnej .... Próbowałem teraz tego polecenia, ale to też nie działa:/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))'
... Czy funkcja działa dla Ciebie?