在Intel的时候写过一个简单的emacs mode,这次又写了一个。和前一个一样,都是用来显示编译器打印出来的中间语言,不过这次的要复杂一些,除了高亮、光标定位之外,还有narrow、以及自动生成控制流图等(用dot)。
写得过程中发现一个问题,即define-derived-mode要在定义mode-map的语句之后,如:
(defvar foo-mode-map ...) (define-derived-mode foo-mode ...)
否则keybinding为空!因为define-derived-mode如果发现mode-map没有定义,就会自动定义一个,而后面的defvar在发现mode-map已经定义,就不会再赋值了。