Obsidian
動作
- 更新日時を更新する
- H1に変更があればファイル名とfrontmatterのtitleを更新する
実装
_templates/_on_save<%*
// settings
const keys = {
title: "title",
modified: "modified",
}
const dateFormat = "YYYY-MM-DDTHH:mm+09:00"
// for date
const now = tp.date.now(dateFormat)
// for title
const h1 = tp.file.content.match(/^# (.+)/m)
if (!h1) {
new Notice("Templater: _on_save insertion failed.")
return
}
const title = h1[1].trim().replace(/[\\/:*?"<>|]/g, "")
// update frontmatter
const file = app.workspace.getActiveFile()
await app.fileManager.processFrontMatter(file, (fm) => {
fm[keys.title] = title
fm[keys.modified] = now
})
// update filename
if (title != tp.file.title) {
await tp.file.rename(title);
}
new Notice("Templater: _on_save was applied.")
-%>
設定
Templater
のTemplate Hotkeys
に作成したテンプレートを設定する
Commander
で以下のマクロを作る
Save current file
delay 250ms
Templater: Insert _templates/_on_save.md
Hotkeys
で<Ctrl-S>
に作ったマクロを設定する