Skip to content

org2blog で投稿時にエラーが出る件について

2012/03/01

投稿のタイミングでエラーが出てしまう

以前から org2blog で記事を投稿しようとすると

File mode specification error: (wrong-type-argument characterp sgml-xml-mode)

というエラーが出てしまい困っていましたが、やっと原因がわかりました。

結論から言うと html-mode-hook に登録していた html-fold-mode が原因でした。

org2blog では、記事を投稿する際に html-mode が呼ばれるのですが、
その際に html-mode-hook に登録してあった html-fold-mode がエラーしていたようです。
html-fold-mode は自身が有効なときに html-mode のモードライン用表示文字列である mode-name に “/F” を追加する仕組みになっているのですが、
html-mode の mode-name が文字列ではなく (sgml-xml-mode “XHTML” “HTML”) と、
リストの形で記述されていたために文字列の連結処理で失敗しているようでした。

ということで mode-name がリストの場合はリスト内の文字列に対して連結処理を行うように修正しました。
修正版は下記から手に入ります。

一応作者さんにプルリクエストを送ったので、
もしかしたら取り込んでもらえるかもしれません。

mode-name をリストで記述?

さて、 mode-name に文字列ではなくリストを記述した場合についてですが、
mode-name を (sgml-xml-mode “XHTML” “HTML”) というようにしておくと
sgml-xml-mode が t の時は “XHTML” 、 nil の時は “HTML” と状況に合わせてモードラインに表示される文字列が切り替わるようです。
ちなみにリストの先頭が t でも nil でもない時はリストの中身がすべて連結されたものになるみたいです。

("hoge" "huga" "hoo") ; => "hogehugahoo"

自分はこの仕組みについて今回初めて知ったのですが、
Emacs のマニュアルかなにかに書いてあるんでしょうか?
詳しいことを知っている方がいたら是非教えて欲しいです。

広告

From → Emacs

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。