sakura
sakura copied to clipboard
ターミナルを組み込んで欲しい
要望機能
Visual Studio Codeにはエディタ内にターミナルが組み込んであります。 何かを開発しているときにエディタからビルドコマンドを叩いたりと、ターミナルがついていると色々便利です。 同等の機能がサクラエディタにも欲しいです。
スクリーンショット
いいですね。GOで。
次アクション>
- とりあえずテキトーに実装してみたぜ!ヒャッハーとPR出してみる。
- どうしたら実現できるか意見を募ってみる。
experimental ブランチを切るときがきたのかもしんない・・・。
参考までに、Vimの端末機能は ConPTY または winpty と libvterm を組み合わせることで実現されています。
せっかく参考情報(キーワード)をいただいたのでリンク貼っときます。
conpty は最新技術 なので、とりあえず見送る感じになるのかな?と思っていますが、あえて windows10 pro 1909 以降のみ対応
として作ってしまうのも面白いかも知れません。
サクラエディタに導入する場合の課題はいくつかあります。
- console の所有権とウインドウの関連をどうするか?
タブモードのON/OFF状態をどうするかによって見方が変わると思います。 - 接続先のシェルexeとして、標準(CMD.exe)の他多数の選択肢(pwsh.exe、bash.exe、powershell.exeなど)があります。
実行モジュールごとに設定を分けられる構造にする必要に迫られそうな気がします。
対象の数が多いので動作確認が死ぬほどウザそうです。 - 既存機能「外部コマンド実行」との兼ね合いがビミョーです。
- 既存機能「アウトプットウインドウ」との兼ね合いがビミョーです。
ConPTY が使えるようになったのは Win 10 1809 以降です。 ConPTY は 24bit 色が扱えるという利点があります。(winpty は 16 色のみ) 一方で、ambiguous width な文字の扱いに難があります。
既存の「外部コマンド実行」は、出力結果をエディタ内に取り込むという「要件」があるかと思います。
「ターミナル」はコンソールを内部で取り込んでコマンドを実行するということかと思いますが、 後者の要件は私はCMD.EXE他を単独で実行することで実現しています(代替え可能)
もし、コンソールをテキストエディタの内部で持つ場合、出力結果をうまく取り込めるとか、編集中のテキストをうまくコンソールへ反映させるような機能があると、内部にもつ意義があるかなと思います。
内部で持つ場合には、なるべく既存のexeが肥大化しない仕組みがあるとか、一からカーソル移動等を実装しなくてもよい(なるべく外部モジュールへ任せられる)方向に倒したいなとおもいます。 そういう仕組みがあればですが。
ターミナルをゼロからくみ上げるのは結構骨が折れそうなので。