cperl-modeでエラーが出る

再現性はつかめてないんだけど、*.plなファイルを開いたときにたまにエラーが起こる。発生すると、以降は毎回*.plなファイルを開いたときに同じエラーが起こる。

cperl-mode.elを新しいのにしてから不調のような気がする。

とりあえずバックトレースをコピペ。

Debugger entered--Lisp error: (void-function compilation-build-compilation-error-regexp-alist)
  compilation-build-compilation-error-regexp-alist()
  funcall(compilation-build-compilation-error-regexp-alist)
  (let ((f ...)) (funcall f))
  (cond ((boundp ...) (make-local-variable ...) (set ... ...) (let ... ...)) ((boundp ...) (make-local-variable ...) (set ... ...)))
  cperl-mode()
  set-auto-mode-0(cperl-mode nil)
  set-auto-mode()
  normal-mode(t)
  after-find-file(nil t)
  find-file-noselect-1(#<buffer oops.pl> "~/oops.pl" nil nil "~/oops.pl" (95939 772))
  find-file-noselect("/home/hirose31/oops.pl" nil nil nil)
  find-file("/home/hirose31/oops.pl")
  find-file-at-point()
  call-interactively(find-file-at-point)

追記

cperl-mode.el.5.22だと、

  (cond ((boundp 'compilation-error-regexp-alist-alist);; xemacs 20.x

なふうにcompilation-error-regexp-alist-alistのあり/なしでXEmacsかどうかの判別をしてるんだけど、最近のEmacs

でcompilation-error-regexp-alist-alistが導入されたので、EmacsなのにXEmacs用のコードに入っちゃうのが原因っぽい。

サンクス!>katokenさん


さらに追記

Emacsのレポジトリ

に、cperl-mode.el-5.22がマージされてるみたいなので、コレ使ってみよ。