generated at
引用文の前のドットを消すUserScript
>引用文
>
引用文の前のドット(箇条書き
これを消すUserScript

動作サンプル
――――――――――――(下は画像)―――――――――――――――――――――
――――――――――――(画像ここまで)―――――――――――――――――――
引用文2行目(正確には2行目以降)の箇条書きのドットが消えている。
1行目は残すようにしてある。
通常の箇条書きは変化なし。


ソース
removeDotBeforeQuote.js
function removeDotBeforeQuote(){ let lines = scrapbox.Page.lines // ScrapboxのAPIを叩いてページ内のデータを取得する。 let isMultiLineQuote = false // 引用ブロックの2行目以降はこのフラグがtrueになる。 let indentLevelBefore = 0 // 前の行のインデントの深さ。 if (lines == null) return for (let line of lines){ if (!hasQuote(line.nodes)){ isMultiLineQuote = false continue } let level = getIndentLevel(line) if (!isMultiLineQuote || (isMultiLineQuote && level != indentLevelBefore) ){ // 複数行引用文の始行 // または 前の行と箇条書きの階層が変わった場合 isMultiLineQuote = true indentLevelBefore = level revivalDot(line) continue } removeDot(line) indentLevelBefore = level } function hasQuote(nodes){ if (typeof nodes != "object") return false if (nodes.type == "quote") return true return hasQuote(nodes.children) } function getIndentLevel(line){ if (typeof line.nodes != "object") return null if (line.nodes.type != "indent") return null return line.nodes.unit.tag.match(/\s/g).length } function removeDot(line){ let dotQuery = document.querySelector(`#L${line.id} .dot`) if (dotQuery != null) dotQuery.classList.add("invisible") } function revivalDot(line){ let dotQuery = document.querySelector(`#L${line.id} .dot`) if (dotQuery != null) dotQuery.classList.remove("invisible") } } removeDotBeforeQuote(); scrapbox.on('lines:changed', removeDotBeforeQuote);

CSSじゃできなかったのか?
Scrapbox箇条書きの点は list-style とかではなく <div> を整形して丸にしている。
なのでドットを消すには <div> 自体を透明にするか、消すしかない。
後者でやったところ、特定条件下でScrapboxがクラッシュしたので前者にした。
.invisibleを使って非表示にしている。

既知のバグ
引用( > )を削除した後も点が消えたままになっている。
一応、ページを再起動するか、再度インデントすれば直る。