Переопределение ключей в режиме ENSIME scala в emacs - PullRequest
2 голосов
/ 23 февраля 2012

Я пытаюсь переопределить «М-». в режиме ENSIME, чтобы он выполнял автозаполнение вместо ensime-edit-definition. Который является привязкой по умолчанию. У меня есть следующий код в .emacs:

(defun my-scala-mode()
  (ensime-mode)
  (local-set-key [return] 'newline-and-indent)
  (local-unset-key (kbd "M-."))
  (local-set-key (kbd "M-.") 'auto-complete)
  (global-unset-key (kbd "M-."))
  (global-set-key (kbd "M-.") 'auto-complete)
  ;(scala-electric-mode)
  (yas/minor-mode-on))
(add-hook 'scala-mode-hook 'my-scala-mode)

Однако, как только режим ensime загружается, и как-то переопределяет ключи обратно по умолчанию. Если я закомментирую "(ensime-mode)", он будет отображаться правильно.

Что мне здесь делать? Я пропускаю еще один модовый хук? Или порядок должен быть другим?

Спасибо

1 Ответ

5 голосов
/ 23 февраля 2012

Очевидно, режим ensime является второстепенным режимом, поэтому его привязки имеют приоритет над привязками основного режима. И local-set-key влияет на привязки основного режима. Возможно, вы захотите сделать что-то вроде следующего (гарантировано 100% не проверено) вместо этого:

(require 'ensime)
(define-key ensime-mode-map (kbd "M-.") 'auto-complete)

или

(add-hook 'ensime-mode-hook (lambda () (define-key ensime-mode-map (kbd "M-.") nil)))
...