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).


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)))

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.