Jak skopiować tekst bez utraty zaznaczenia?

11

Kiedy kopiuję zaznaczony tekst (za kill-ring-savepomocą M-w), automatycznie tracę zaznaczenie. Próbowałem z Transient Mark Mode bez powodzenia. (Uwaga: nie używam trybu CUA).

NVaughan
źródło
Początkowo myślałem, że chodzi o wybór X (w takim przypadku zmienna select-active-regionsbyłaby odpowiednia), ale wydaje się, że chodzi o podkreślenie regionu.
YoungFrog

Odpowiedzi:

11

Najlepszym rozwiązaniem jest C-x C-xreaktywacja znaku. Ale jeśli naprawdę chcesz zachować wybór, możesz użyć:

(defun copy-keep-highlight (beg end)
  (interactive "r")
  (prog1 (kill-ring-save beg end)
    (setq deactivate-mark nil)))
djangoliv
źródło
1
Sugeruję skorzystanie z następującej porady:(defun yf/no-deactivate-mark (&rest _) (setq deactivate-mark nil)) (advice-addadvice-add 'kill-ring-save :after #'yf/no-deactivate-mark)
YoungFrog
@djangoliv, dzięki. Co to prog1jest
NVaughan
@YoungFrog, dzięki, ale twój kod nie działa, ponieważ ma gdzieś błąd składniowy.
NVaughan
2
Ach, błąd wklejania kopii: advice-addpowinien być tam tylko raz. Nie mogę edytować komentarza.
YoungFrog
1
@NVaughan tutaj dobre wyjaśnienie: emacs.stackexchange.com/questions/5829/…
djangoliv