auto-complete.el 1.0aでlambdaで定義したコマンドが使えない

2009-11-20 追記
以下の変更は、 322dcb5a で本家にmergeされました。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


auto-complete.elのversionを 1.0a(http://github.com/m2ym/auto-complete)に上げたのですが、

(global-set-key (kbd "=") (lambda () (interactive) (insert "=")))

上のようにlambdaで定義されているコマンドを実行すると、エラーが出るようになってしまいました。
軽く追ってみたところ、ac-trigger-command-pのなかのsymbol-nameにlistが渡るのが原因みたいです。

具体的には、以下のテストが通りません。

(dont-compile
  (when (fboundp 'expectations)
    (expectations
      (desc "ac-trigger-command-p retums nil if command is lambda")
      (expect t
        (let ((command-fn (lambda () (interactive) "hi!")))
          (when (commandp command-fn)
            t)))
      (expect nil
        (let ((command-fn (lambda () (interactive) "hi!")))
          (ac-trigger-command-p command-fn))))))

コマンドを返す関数( (lambda () (interactive) ...) を返す関数)をつかってコマンドを定義するとこのような問題がでるかも、と思いました。
稚拙、http://github.com/imakado/emacs-smartchr でもこの方法でコマンドを定義しています。

とりあえずの回避策として、ac-trigger-command-pにlistで定義されたコマンドが渡って来た場合に、nilを返すようにしてみました。

http://github.com/imakado/auto-complete
githubにコードがあったので、forkしてpushしました。

実は久しぶりにauto-complete.elのバージョン上げたのですが、凄く便利になっていて感激しました。(incf m2ym )
k1LoWさんの "動かないと業務に支障がでる" 発言にも納得です。