
(kill-ring-save)
명령을 실행할 때 해당 영역의 강조 표시가 사라지기 때문에 기본 Mw에 만족합니다 . 나는 그것의 동작을 바꾸고 싶지 않지만 <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)
사용: Ubuntu 10.04.3의 GNU Emacs 23.1.1
답변1
실행하면 kill-ring-save
태그가 직접 비활성화되지 않고 단순히 비활성화가 가능하도록 변수를 deactivate-mark
로 설정하기만 하면 됩니다.t
~ 후에. 이런 일이 발생하지 않도록 하려면 다음 deactivate-mark
으로 재설정하세요.nil
앞으로비활성화합니다.
(defun kill-ring-save-keep-highlight (beg end)
"Keep the region active after the kill"
(interactive "r")
(prog1 (kill-ring-save beg end)
(setq deactivate-mark nil)))
(global-set-key (kbd "<C-insert>") 'kill-ring-save-keep-highlight)
답변2
태그가 "활성" 상태이므로 해당 영역이 강조 표시됩니다. 따라서 태그를 명시적으로 활성화해도 괜찮습니다. 참고: 포인트/마커 교체가 작동하지 않는 이유를 잘 모르겠습니다. 이것은 새로운 함수이며 대화형으로 사용하여 매개변수를 채우도록 업데이트했습니다.
(defun kill-ring-save-keep-highlight (beg end)
"Keep the region active after the kill"
(interactive "r")
(kill-ring-save beg end)
(activate-mark))