1つの引数を取る「called-interactively-p」関数のバージョンを持たないバージョンのEmacsを使用しています(以前のバージョンの関数は引数を取りませんでした)。これを回避するには、この回避策(ここに投稿:http://paste.lisp.org/display/115598/raw)をEmacsのinitファイルに入れます。
(condition-case nil (called-interactively-p 'interactive)
(error
; Save reference to called-interactively-p in
; inglorion-system-called-interactively-p
(fset 'inglorion-system-called-interactively-p
(symbol-function 'called-interactively-p))
; Define called-interactively-p so that it discards
; its arguments and calls inglorion-system-called-interactively-p
(fset 'called-interactively-p
(lambda (&rest args)
(inglorion-system-called-interactively-p)))))
しかし、これを行ってEmacs 22でテストしようとすると、特定の関数が存在しないために他のエラーも発生したため、lua-modeを使用する場合はEmacsのバージョンをアップグレードする必要があります。
Emacs 23および24では、「lua-mode.el」は既存のluaファイルで機能するように見えますが(私はluaプログラマーではないため、適切にテストできませんでした)、新しいluaファイルを作成しようとすると機能しなくなります。これは実際には、新しいluaファイルを開こうとしたときに発生する「lua-mode.el」コードのバグです(既存のluaファイルを開こうとしても発生しません)。問題は、行番号1218での「remove-text-properties」呼び出し(「lua-unmark-multiline-literals」関数内)が、開始値「1」で「remove-text-properties」関数を呼び出していることです。終了値は「0」です(新しいファイルの場合、バッファサイズが「0」であるため「0」です。これを修正するには、行番号1218を次のように変更します。
(remove-text-properties (or begin 1) (or end (buffer-size)) '(syntax-table ()))
に:
(remove-text-properties (or begin 1)
(or end
(if (> (buffer-size) 0)
(buffer-size)
(or begin 1)))
'(syntax-table ()))
「lua-mode.el」の開発者にバグについて知らせ、場合によっては以前のEmacsバージョンのサポートもリクエストする必要があります。