2017年1月12日木曜日

MobileOrg で Agenda ファイルを org-directry 以外の場所に置くと何が起こるか?   gblog

1.1 はじめに

何やらMobileOrgの同期がうまくいかないなぁ,と思ったときについカッとなってコードを読んだ時の簡単なメモです.

※以下,本文中では,Emacs のシンボル(関数や変数)は(シンボル)で書いてます


1.2 何が起きる?

  • (org-mobile-push) はうまくいく (Emacs –> MobileOrg アプリ)

    • (org-agenda-file) でファイルのフルパスを指定していれば.

  • (org-mobile-pull) はうまくいなかい (MobileOrg アプリ –> Emacs)

片方だけうまくいくおかげで,問題に気づくのにちょっと時間かかった.

1.3 なぜなのか?

1.3.1 org-mobile-pull の挙動

早い話が, (org-mobile-pull) は Agenda ファイルが (org-directory) 以下にあることを想定している


  • (org-mobile-pull) は独自のフォーマットで差分を読み込み,パースして,適用する.

    • Dropbox で同期していれば,MobileOrg アプリは差分情報を (org-mobile-directory)/(org-mobile-capture-file) に保存する

      • (org-mobile-directory) は設定が必要なので,init.el などで設定しているはず.

      • (org-mobile-capture-file) はデフォルトだと,"mobileorg.org"

    • (org-mobile-pull) 時に,(org-mobile-capture-file) から(org-mobile-inbox-for-pull) へコピーする

      • (org-mobile-index-for-pull) のデフォルト値は "~/org/from-mobile.org"

    • この差分を記述するフォーマットはともかく,変更箇所の記述方法が問題

      =~[[olp:<ファイル名>:H1/H2/H3][Head名]]~=
      
      となっている.

    • これを,(org-mobile-locate-entry) が実際のファイルパスとポジションに変換する.

      • このとき,ファイルパスは (org-directry) /<ファイル名>になる.

        • (org-directory) はデフォルトで "~/org"

1.3.2 org-mobile-push の挙動

じゃあ,push はどうなのよというと,実は Agenda ファイルが (org-directory) 以下になくても動くようになっている


  • (org-mobile-push) は.org ファイルを丸々転送している.

    • コピー元は, (org-agenda-files) からファイルパスごと 取ってくる

    • 暗号化しているときは,(org-mobile-capture-file) 経由で暗号化して転送するっぽい

    • でも,この時も .org は暗号化せずに転送しているように見えるけど,大丈夫か?(動かしたわけじゃないから実際はどうなのかわからないけども)


1.4 おわりに

Agenda ファイルはちゃんと,(org-directory) 以下に置きましょう.

どうしてもいやなら,MobileOrg か org-mobile.el を改造しましょう.