Define mode-map before mode definition

在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已经定义,就不会再赋值了。

Late code contribution

偶然发现server.el里的server-running-p应该是用来检测是否有emacs server已经启动,但实际上却没有作用。前后看了看,原来是server-socket-dir的设置有问题,于是自己做了修改,把server-running-p里面的server-socket-dir换成了(or server-socket-dir (format “/tmp/
emacs%d” (user-uid))),这样就可以了。

其实这个问题上周四就发现了,拖了拖,到周六晚上无聊的时候才在gnu.emacs.bug上发了帖子,第二天早上发现有了回帖,原来人家刚刚修改过,只是方法不太一样,我也没仔细看,便以为问题还在,冒冒失失地发了帖子。第一次试图给自由软件贡献代码就这样失败了。:-(

整个事情的发展还真符合我的性格,呵呵!