generated at
選択行をソート
選択範囲内の行をソートするUserScriptを書いたよ~!

選択範囲の1行目と同じ or 1行目より浅いインデントの行だけソートするよ。
つまりこんなふうにインデントが深い行の順番はそのまま。
1行目がインデントされてなければ、インデントされてない行だけをソートする。
しっかり行を選択して実行するのがポイント。行の途中から選択しちゃうと悲しいことになる。

チェックボックスで始まる行をソートすると、未完 [_] が上に、完了 [x] が下になるよ。

ちなみに上のタスクの書き方はTodo.txtに影響されてます。
日本語の紹介記事もいっぱいあるし、Scrapboxとの相性もいいです。おすすめ!

script.js
scrapbox.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') } })

初出 2017-10-12