Emacsでメジャーモードを書く

http://www.gentei.org/~yuuji/elisp/elisplec.html#SEC1

emacs起動

$ emacs

C-x bでデフォルトのバッファであるscratchバッファが起動
(C-x C-bやC-x C-fで開くのもOK)

;; This buffer is for notes you don't want to save, and for Lisp evaluation.    
;; If you want to create a file, visit that file with C-x C-f,                  
;; then enter the text in that file's own buffer.    


以下を記述

(defun nakamura-mode()
 (interactive)
 (setq major-mode 'nakamura-mode)
 (setq mode-name "中村くんみてるー??モード☆")
 (setq nakamura-map (make-keymap))
 (define-key nakamura-map "n" 'print_nakamura)
  (defun print_nakamura()
   (interactive)
   (insert "Hello, Nakamura!\n")
  )
 (use-local-map nakamura-map)
)

最後の閉じ括弧の右でCtrl-jかM(ESC) C-xを入力すると
defunしたS式が評価される。

これでNakamura-modeがEmacsに読み込まれた。

Nakamura-modeに切り替えるには
M-x nakamura-mode
を入力。(S式を評価した後だと補完が効く)

Nキーを押すと"Hello, Nakamura!"が入力される。

(追記)
lambda式を使うと以下のように書ける。

(defun namakura-mode()
 (interactive)
 (setq major-mode 'nakamura-mode)
 (setq mode-name "中村くんみてるー??モード☆")
 (setq nakamura-map (make-keymap))
 (define-key nakamura-map "n" (lambda() (interactive) (insert "Hello, Nakamura!\n")))
 (use-local-map nakamura-map)