Documents Edge
　Document Edges（Start / End の仮想ノード）を追加  
　設定項目 `plaintextplus.outline.showDocumentEdges` を追加予定  

@コマンドに他キーを追加


§TODO
◯description検討
◯insertDate復活
◯isWholeLineを拡張、全体、後ろ、だけ→range
◯decorationにしたものをまたhighlightに戻す
◯コメントの見直し
◯サンプル作り直し
◯READMEの見直しと英語版
◯スクショ用サンプル小説準備
◯スクショ準備

？キーワードのカンタン入力（ショートカット？）→スニペットとキーバインディング

○LSPとしての実装
○絵文字でもいいかも
×日付取得削除
○英語の記号でも動く？
○アウトライン検出モード
○行数を空行抜きと空行ありで計算する←どっちか表示で分かるように
○チラつきをどうするか

○言語ではないので、名前を「CappText LSP」から「PlainText+ ~Outline & Highlight~」とする
○capptextは廃止
○言語モード：plaintextplus
○ユーザー設定で新規ファイルと.txtをplaintextplusで開くようにしてもらう


○matchの行内をinlineに他のオプションは削除
○" aaa"のquoteが行全体になってる
○行頭マッチがうまく動いてないところがある
○quoteをcommentに変更
○コメントの設定の区切り文字もパイプにする？
○📍を9階層目に置いておくのはできる？
○装飾の優先順位（isWholeLine＜行コメント＜ブロックコメント＜キーワード）
○「」や（）の優先順位というか内側でも有効にしたい→さらに行装飾などより強く
○textDecorationの;が無くても適用されるようにする→fontFamilyを分ける
○Highlightが残ってるところをDecorationに変換
○settings.jsonの更新リロード



×なんかdepricatedになってるやつの解決
○workspaceフォルダーのsetting.jsonがある場合に行装飾ができない←ユーザーとワークスペースのキーワードがマージできていない
×アウトラインの行単位背景色←アウトラインはいじれない
○行全体の背景色設定←いつの間にかできてた
○アウトラインのシンボル前装飾をなしにする
○シンボルジャンプ
○日付入力
○行数表示
○シンボルのショートカット入力→KeyBindings.json
○デフォルトアウトラインシンボル入力コマンド
○アウトラインシンボルの最適化
○アウトラインシンボル行の装飾
○READMEの見直し
○ßデフォルト値の重複
○アウトラインシンボル行の装飾
○設定ファイルからの設定がうまく動くか
○タブ切り替えなどのタイミングでの装飾実行
○コマンドが死んでる
○//の装飾
○アウトラインのシンボルとタイトルの間にあるスペースを取り除く

○設定値
 "capptext.outline": {
 "capptext.outline.delimiters": [

○capptext.outlineの内容をcapptext.outline.delimiterに集約して、名前をcapptext.outlineに変更する
○blankLabelは要らないかも
・borderRadiusって効いてる？

○カラーリングは基本的に名称で設定する

共通で使う装飾はユーザーのsetting.jsonに記述
例えばquoteの装飾や要注意文字（全角スペースや全角ダッシュ）の装飾など。

キーワードは各フォルダー内のsetting.jsonに記述
同じ装飾の複数キーワードをまとめて設定できるといいな

txtファイルは基本的にcapptextで扱う。
 "files.associations": {
   "*.txt": "capptext"
   "*.bas": "vb",
   "*.frm": "vb",
   "*.cls": "vb",
 },

"files.defaultLanguage": "capptext"

■Extension名変更
○CappText LSP Extension→CappText LSP→PlainText+

■タグコメント併用
あああああ // #tag あああ
あああああ // あいうえお
// あああああ

■装飾適用のタイミング
・ウィンドウがアクティブになったとき
・テキストが編集されたとき
・ファイルを開いたとき
・VSCodeを開いたとき

§テスト用テキスト
先頭マッチ
■outline
【ああああ】
§いいいい
　▼うううう
■ええええ
・おおおお

　▽うううう
　□おおおお
あ○しししし
　あ●かかかか
あ■きききき
　◆くくくく
■けけ"ももも"けけ
◆ここここ
　■ささささ

平文平文平文平文平文平文平文平文

あああ■ああああ

■keyword
　←全角スペース
―←全角ダッシュ
＠

平文平文　平文平文平文平文―平文平文

■comment
「」あああ
あああ「あああ」
あああ「あああ」あああ
あああ（あああ）
ああああ<!-- aaa -->
|aaaaa
あ｜aaaaa
あああ // あああああああ
// #tag タグコメント
/* あああ */

ダブルクォートが終わらない
"あいうえお"あああ
"aaaa"aaa
aa

■commentの入れ子
/* いいいい「ああああ」いいいい */
「いいいい/*ああ＠ああ*/いいいい」
（いいいい「ああああ」いい）
「いいい（ああああ）いいい」
　　　　// aaaaa（あああ）aaa

§仕様
・極力シンプルに
・LSPを使った
・アウトライン（先頭文字での抽出、ターゲット範囲のカウント）
・文字列装飾（キーワード、行、囲まれた文字列）
・サーバー側に処理は寄せる

§検討
■「」や（ああ）の優先順位について
・装飾範囲を取得して、範囲の文字数を取得、小さい
・欲を言うなら表示範囲を優先で装飾をしたい

✔ 1. まず区間を全部集める
✔ 2. 区間を start asc, length asc でソート
（開始位置が早い順、同じなら短い順）
✔ 3. その順に decoration を apply
→ 内側 → 外側の順になる
→ 互いに独立した区間も自然に処理される
→ 分割不要
→ VSCode の仕様に完全一致

1. まず全ての装飾区間（'...' や "..."）を抽出
（ここは今まで通り）
2. 内側→外側の順にソート
（長さの短い順で OK）
3. その区間が visibleRanges に含まれているか判定
コード
if (range intersects visibleRanges) → 先に apply
else → 後で apply
4. apply の順序はこうなる：
画面内 × 内側
画面内 × 外側
画面外 × 内側
画面外 × 外側

これで：
内側優先
画面内優先
装飾の上書きも正しく動作
パフォーマンスも良い

という理想的な動作になる。
