Facet
理解したいteramotodaiki.icon
Marign氏の解説ブログが出た。読むteramotodaiki.icon
defaultHighlightStyle と defaultHighlightStyle.fallback で優先度を変える
他の Highlight 設定が適用されている時、
defaultHighlightStyle ならば両者をマージする
defaultHighlightStyle.fallback ならばこの設定は使わない
要するに「他の Highlight 設定が存在しないときの fallback」として設定できる
どちらも実体は Extension
code:codemirror/highlight/blob/main/src/highlight.ts
const highlightStyle = Facet.define<HighlightStyle, ((tag: Tag, scope: NodeType) => string | null) | null>({
combine(stylings) { return stylings.length ? HighlightStyle.combinedMatch(stylings) : null }
})
const fallbackHighlightStyle = Facet.define<HighlightStyle, ((tag: Tag, scope: NodeType) => string | null) | null>({
combine(values) { return values.length ? values0.match : null } })
Facet が Extension を combine する挙動を定義している?
HighlightStyle というのは class のこと。この class のインスタンスを集めてきて、combine しているっぽい