microsoft / microsoft/vscode-java-debug

Provide a pseudoterminal for the running/debugging console

オープン
#906 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

ai-triaged enhancement feature request terminal
主要言語
TypeScript
スター
591
フォーク
429
平均マージ
1日 9時間
マージ済み PR(30日)
19

説明

The current default when running or debugging Java programs is to launch it in the integrated terminal, using a generated command that usually gets quite verbose. By setting java.debug.settings.console to internalConsole, users can get more clean output of their program, but the problem is that VS Code doesn't support user input from the debug console.

Therefore, it would be nice if the extension provided the option to launch a pseudoterminal for the program when running or debugging, which only shows the output of the program, and accepts user input. I think this is a much better user experience for most people, since the output of the program is what's important, not the full command used to launch it. Of course, that information may still be useful to some, and for debugging purposes, which is why I think the pseudoterminal should be just another option in java.debug.settings.console. Perhaps the pseudoterminal could be the default option, like in the Eclipse IDE:
eclipse-console

I believe implementing this should be possible using the Pseudoterminal interface by passing ExtensionTerminalOptions to vscode.window.createTerminal. Then it should just be a matter of launching the java program in the background, and redirecting it's stdin/stdout to the pseudoterminal. I would have a go at implementing it myself if I had time, but unfortunately I'm quite busy with other projects right now. If anyone has time to work on this, it would be a really nice feature to have - I've heard multiple people who want a less verbose console but who also need support for stdin.

Come to think of it, you may also be able to use createTerminal with TerminalOptions instead, but without experimenting I can't quite tell whether or not it will be able to achieve the same result as a pseudoterminal. The advantage would be that it's a little easier to implement. I'm thinking it might be possible to use the JRE path for shellPath, put the JVM and program arguments in shellArgs, and then use cwd instead of generating a cd command.

Current Result

"java.debug.settings.console": "integratedTerminal"
current-console

"java.debug.settings.console": "internalConsole"
debug-console

Expected Result

"java.debug.settings.console": "pseudoTerminal"
expected-console

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、java.debug.settings.console の処理と、実行/デバッグコンソールの起動経路を特定します。Issue で参照されている VS Code の PseudoterminalExtensionTerminalOptionsTerminalOptions API を読みます。pseudoTerminal オプションによって Java プログラムがクリーンな出力で起動し、実行時とデバッグ時の両方で stdin を受け付けられれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java, typescript, vscode
領域
developer-experience, devtools
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。