Obsidian: Recent Filesプラグインの履歴をデバイス間で同期する

※以下はおそらく近いうちにRecent Filesプラグイン自体のアップデートで対応されると思われ、そうなると無意味になってしまう話ですが…

超絶便利プラグインRecent Filesですが、動作上ちょっと気になる点として、Obsidian Syncで同期しているデバイス間で、閲覧したノートの履歴が同期されない点がありました。(正確にはSyncが完了するまで操作せず、Obsidianを再起動すれば同期されるのですが)。

で、最近のObsidianのアップデートで、
Plugin.onExternalSettingsChange
というAPIが追加されました。
https://github.com/obsidianmd/obsidian-api/blob/master/CHANGELOG.md#v157

これは、プラグインの設定情報等が記録されているファイルであるdata.jsonが外部から変更されたときの動作を指定できるもので、Syncによりリモート側のアクセス履歴が同期されたタイミングで再度data.jsonを読み込んでやることで履歴の同期が可能になります。
Recent Filesのmain.jsを適当なエディタで開き、RecentFilesPluginクラスに(例えばasync saveData(){~~} のブロックの次に)以下のコード

async onExternalSettingsChange() {
    await this.loadData();
    this.view.redraw();
}

を加えてやることで、(少なくともObsidian Syncで同期している環境では)別デバイスでのRecent Filesの履歴を同期で引き継げるようになり、一層利便性があがりました(正確には、同期に時間がかかった場合、同期が完了した際にその間の手元での閲覧履歴が失われますが、実用上は問題にならないと思います)。

いいなと思ったら応援しよう!