選択行をソート
選択範囲の1行目と同じ or 1行目より浅いインデントの行だけソートするよ。
つまりこんなふうにインデントが深い行の順番はそのまま。
1行目がインデントされてなければ、インデントされてない行だけをソートする。
しっかり行を選択して実行するのがポイント。行の途中から選択しちゃうと悲しいことになる。
チェックボックスで始まる行をソートすると、未完 [_]
が上に、完了 [x]
が下になるよ。
日本語の紹介記事もいっぱいあるし、Scrapboxとの相性もいいです。おすすめ!
script.jsscrapbox.PopupMenu.addButton({
title: 'ソート',
onClick: text => {
const re = /^(\s*)/
const b = re.exec(text)[1].length
const lines = text.split(/\n/)
let sorting = [], chLines = []
for (var i = 0; i < lines.length; i++) {
const line = lines[i]
while (lines[i + 1] && b < re.exec(lines[i + 1])[1].length)
chLines.push(lines[++i])
if (0 < chLines.length) chLines.unshift('')
sorting.push(line + chLines.join('@n@'))
chLines = []
}
return sorting.sort().join('\n').replace(/@n@/g, '\n')
}
})