1

Основная проблема, которую я имею, состоит в том, что режим маркировки работает как кнопка переключения. Каждый раз, когда вы вызываете set-mark-command "C-Space" вы входите или выходите из режима пометки. Я мог связать любую комбинацию клавиш с

(defun foo () "" (progn (set-mark-command) (left-word)))

но в следующий раз, когда я позвоню foo мой выбор будет отменен.

Есть ли функция, которая только входит в режим выбора, а не переключает его? Тогда я мог бы более свободно выбирать текст, который мне действительно нужен, так как я комментирую большой текстовый корпус.

1 ответ1

2

Я не уверен, что правильно понял ваш вопрос, но вот несколько мыслей по этому поводу:

1) Если переменная shift-select-mode установлена в t , все комбинации Shift и точки перемещения команды временно активируют регион и расширяют его:

  • SC- <right>: расширить область на одно слово справа
  • S- <right>: расширить область на один символ справа

Вы можете установить shift-select-mode используя либо инфраструктуру customize :

Mx customize-variable RET shift-select-mode RET

или в вашем файле инициализации:

(setq shift-select-mode t)

2) Исходя из примера кода, вы можете написать команду, активирующую регион и расширяющую ее следующим образом:

(defun foo ()
  ""
  (interactive) ;; this is a command (i.e. can be interactively used)

  (when (not (region-active-p))  ;; if the region is not active...
    (push-mark (point) t t))     ;; ... set the mark and activate it

  (backward-word))               ;; move point

;; Bind the command to a key
(global-set-key (kbd "C-S-<left>") 'foo)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .