O modo C (e especificamente a variável c-mode-map
) é fornecido por um pacote chamado cc-mode
, não c-mode
.
(eval-after-load 'cc-mode
'(define-key c-mode-map (kbd "C-<f12>") 'compile))
Para o seu outro método, como o vschum já respondeu , você está perdendo a lista de argumentos no seu defun
. Além disso, c-mode-common-hook
não é o lugar certo para isso: é executado toda vez que você entra no modo C. O momento certo para adicionar sua ligação é quando o modo C é carregado; você pode fazer isso através do mecanismo geral eval-after-load
como acima, ou através de c-initialization-hook
:
(defun my-c-mode-common-hook ()
(define-key c-mode-map (kbd "C-<f12>") 'compile))
(add-hook 'c-initialization-hook 'my-c-mode-common-hook)