更新:我把自己的需求融合到一个插件里了,欢迎围观 240812 更新
原帖:借助 Dynamic Highlights 插件变通解决。
基本配置参 单插件+CSS 管理连续空格
和 QuickAdd JS & Templater JS 简介及相互修改“QuickAdd Capture 加载内部代码”。
插件配置名称:T1
。启用正则。
CSS 代码:
.T1 {text-decoration: underline dashed red;}
js quickadd 代码,点击展开
const { basePath, fs } = app.vault.adapter
, getFC = file=> app.metadataCache.getFileCache(file)
, DH = fun=> {
const id = 'obsidian-dynamic-highlights'
, path = `${basePath}/.obsidian/plugins/${id}/data.json`
fs.readFile(path, 'utf8', (err, data)=> {
if (err) throw err
const obj = JSON.parse(data); fun(obj)
const now = JSON.stringify(obj, null, 2)
fs.writeFile(path, now, 'utf8', err=> { if (err) throw err })
app.plugins.disablePlugin(id); app.plugins.enablePlugin(id)
})
}
, { file, editor } = app.workspace.getActiveFileView()
, str = getFC(file).frontmatter?.query.join('|') || editor.getSelection()
, cls = 'T1'
DH(obj=> {
if (obj.staticHighlighter.queries[cls].query == '[]' && !str) return
obj.staticHighlighter.queries[cls].query = str || '[]'
})
检测划选内容或属性类型为列表、键名为 query
的 YAML 值。