Emacs: Как переопределить Ctrl-Enter, когда включен режим CUA? - PullRequest
1 голос
/ 18 апреля 2020

Если cua-mode включен, переопределение Ctrl-Enter не работает должным образом и всегда выполняет функцию cua-set-rectangle-mark . В приведенном ниже коде вы можете видеть, что я также определил Alt-Enter для своей функции, просто для тестирования, и она работает нормально. Но я буду sh влево Alt-Enter до cua-set-rectangle-mark , потому что я предпочитаю использовать Ctrl-Enter для вызова моей функции, которая создает линию под текущей строкой. Что не так?

(cua-mode t)
(defun vscode-insert-line-below()
  (interactive)
  (move-end-of-line 1)
  (newline-and-indent))
(global-set-key (kbd "C-<return>") 'vscode-insert-line-below)
(global-set-key (kbd "M-<return>") 'vscode-insert-line-below)

1 Ответ

1 голос
/ 19 апреля 2020

Это, вероятно, то, что вы хотите:

(cua-mode t)
(defun vscode-insert-line-below()
  (interactive)
  (move-end-of-line 1)
  (newline-and-indent))
(define-key cua-global-keymap (kbd "<C-return>") 'vscode-insert-line-below)

(Вы можете использовать либо (kbd "<C-return>") или (kbd "C-<return>"), но мне нравится использовать форму, которую C-h k показывает мне.)

Когда вы находитесь в cua-mode, локальная таблица ключей - cua-global-keymap, и ее привязки переопределяют те же глобальные привязки.

Я нашел эту карту, выполнив C-h k C-RET в cua-mode. Он сказал мне:

<C-return> запускает команду cua-set-rectangle-mark (находится в cua-global-keymap), которая представляет собой интерактивную функцию автозагрузки Lisp в cua-rect.el.

привязан к <C-return>.

[Список аргументов недоступен, пока не загружено определение функции.]

Начать прямоугольник в позиции щелчка мыши.

...