Emacs24にしてからpsgmlが動かなくなったので何とかした。nxml-modeだとhtmlのvalidationにやや難があるため。
PSGML | Free Development software downloads at SourceForge.net
変更したのは次の三点。
- make-local-hookを使わないようにする
- old-style backquotesを新しい書き方に直す
- sgml-reduce-,をsgml-reduce-,にする
make-local-hookを使わないようにする
File mode specification error: (void-function make-local-hook)
というエラーが出るので修正する。単純に呼び出しを削除すれば良いみたい。
次のページにあるパッチでは、XEmacsのときだけmake-local-hookを呼び出すようにしている。修正箇所の参考になる。
old-style backquotesを直す
Loading `psgml-parse': old-style backquotes detected! cons: Invalid function: (` (defmacro ((, (intern (format "sgml-eltype-%s" n)))) (et) (list (quote get) et (quote (quote ((, n)))))))
というようなエラーが出るので修正する。
(`で始まる部分が問題。
psgml-1.3.2からであれば、1.3.3開発中にコミットされていた次の差分を適用すれば良い。
1.2.5からだといくつか適用できない部分がある。特にdefsubstの部分が無いとパッチが当たらない。
最低限、Merging Dave Loves patch from 1.2.4 branch.のdefun、define-compiler-macroをdefsubstへ置き換えている部分が必要。手作業でediffでもかけて修正すると良いかも。
私は1.3.2だとハイライトが正常に動作しなかったので以前から使っていた1.2.5をベースに修正をした。
sgml-reduce-,をsgml-reduce-,にする。
load-with-code-conversion: Invalid read syntax: ")"
というエラーが出るので修正する。
psgml-dtd.el内のsgml-reduce-,をsgml-reduce-,へ置換すれば良い。