VSCode のグループ内でのカーソルポジションの履歴の移動をしたい
解決したい課題
navigate(Back|Forward) がグループ(= Window 内の分割)を横断して移動するので体験が悪い
グループ単位で履歴を保持したい
履歴にアクセスする API は無いので自前で実装する
ユースケース
ある実装の定義を見たいが、今のコードを表示したままにしたい
画面を分割(workbench.action.splitEditor*)し新しいグループを作る
定義へジャンプ(editor.action.revealDefinition)
revealDefinitionAside でもよい
ジャンプ(revealDefition, navigate(Back|Forward)を繰り返してコードを読む
navigate(Back|Forward) で他のグループにカーソルが移らないまま読める
やること
グループが閉じたらグループの履歴エントリを消す
ファイルが削除されたら履歴から選択的に除く?
気になり
グループごとに履歴を持つ
そもそもグループ関連の API がほとんどない
TextEditor の ID に含まれる数字を監視する
"vs.editor.ICodeEditor:5,$model8" 👈 これはグループ5番目
表示上の位置とは関係なくて分割したりして新しいグループが増えたらインクリメントされていく
グループ分割が直接分かるイベントはない
window.onDidChangeVisibleTextEditors で新しく出てきたグループを見つける
同じ ID で同じカーソル位置が同じエディタを origin として履歴を複製する
分割して back して見たりしたいので
エディタが閉じたらどうなるべきか
履歴から消す?