回答:
次のように、モード固有のマップでキーを定義できます。
(add-hook 'coffee-mode-hook
    (lambda ()
        (define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file)))
または、よりきれいに:
(eval-after-load "coffee-mode"
    '(define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file))
2番目のステートメントでは、キーの定義が1回だけ行われますが、最初のステートメントでは、coffee-mode有効になるたびに定義が行われます(過剰です)。
eval-after-loadこの場合ステートメントを使用するよりもクリーンではありません。回答を適宜更新します。
                    Emacs 24.4で置き換えeval-after-loadられましたwith-eval-after-load:
** New macro `with-eval-after-load'.
This is like the old `eval-after-load', but better behaved.
だから答えは
(with-eval-after-load 'coffee-mode
  (define-key coffee-mode-map (kbd "C-c C-c") 'coffee-compile-file)
  (define-key erlang-mode-map (kbd "C-c C-m") 'coffee-make-coffee)
  ;; Add other coffee commands
)
              
(add-hook 'coffee-mode-hook (lambda () (define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file)))