generated at
リアルタイム文字カウンター


status barに単語数と文字数、行数を常に表示するUserScript

script.js
(() => { const counters = document.createElement('div'); counters.setAttribute('class', 'counters'); const counts = counters.appendChild(document.createElement('span')); counts.setAttribute('class', 'item'); const statusBar = document.getElementsByClassName('status-bar')[0]; if (cosense.Layout == 'page') { statusBar.appendChild(counters); } cosense.on('layout:changed', () => { if (cosense.Layout == 'page') { statusBar.prepend(counters); } else { statusBar.removeChild(counters); } }); const updateCounts = () => { if (!window.cosense.Page.lines) return; const words = cosense.Page.lines .map(line => line.text.split(/\s+/).filter(Boolean).length) .reduce((a, b) => a + b); const chars = cosense.Page.lines .map(line => line.text.length) .reduce((a, b) => a + b); const lines = cosense.Page.lines.length; counts.innerText = `${words} words, ${chars + lines - 1} chars, ${lines} lines`; }; updateCounts(); cosense.on('lines:changed', updateCounts); })();

変更点
modernに書き直した
どうもコピペでは動かなかったので

#2025-01-13 15:54:05 scrapbox. cosense. に置換した
#2024-05-31 00:52:27
単語数のカウント方法を最適化した
filter(Boolean) で空文字を除去するようにした
文字数に改行を含むようにした