2012年12月22日土曜日

orgのバージョンを7.9.2にするとorg-googlecが使えなくなる件


Org-modeのバージョンが6.3くらいで古かったのでバージョンを上げた.
すると,Org-modeからこのブログに投稿するために使っているorg-googlecが使えなくなった.
今回は,この問題に対処する.

環境





OS
Mac OS X 10.7.5

Emacsバージョン
23.4.1

Org-modeバージョン
7.9.2







症状




http://tokikane-tec.blogspot.jp/2012/09/emacsblogger6970.html
で紹介した通り,
M-x org-googlecl-blog
を実行すると,以下のエラーメッセージが出力される.



let: Symbol's function definition is void: org-forward-same-level


どうやら, org-forward-same-level という関数がないらしい





原因




結論から言うと, Org-modeの関数名が変わってる のが原因.
具体的には, org-forward-same-level という関数の名前が org-forward-heading-same-level に変わった.
ちなみにこの関数は,今カーソルがあるネストのレベルと同じレベルの次の要素の先頭に移動する関数である.
そして,org-googlecは org-forward-same-level 内部で使っていた.
このために上記のようなエラーが出た,というわけである.





対処




関数の名前が変わったなら,呼び出す部分のソースコードを弄ればいい.
org-googlecl.elの



(org-forward-same-level 1 t)   


という行を



(org-forward-heading-same-level 1 t)   


と書き直す.
これで無事問題が解決する.





おわりに(余談)




どのバージョンを境に関数名が変わったかは不明である.

Org-modeは,結構,昔の環境のことを考えずに変更が加えられることがある.
以前もOrg-modeの参照で :- に置換するという(おせっかい)機能がついていて,はまった.
自分はいつも fig:hoge みたいな書き方をするので困った.

あとこういうのってgithubでpull requestを出して本家を直してもらう,というのがいいのだろうか?
今までpull requestを出したことがないので,よくわからない.










--
My Emacs Files At GitHub