microsoft / microsoft/vscode-java-debug
Provide a pseudoterminal for the running/debugging console
還沒有人認領這個 Issue。
- 主要語言
- TypeScript
- 星號
- 591
- 分支
- 429
- 平均合併
- 1 天 9 小時
- 30 天內合併 PR
- 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:

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"

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

Expected Result
"java.debug.settings.console": "pseudoTerminal"

貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
先找出 java.debug.settings.console 的處理方式,以及執行/偵錯主控台的啟動路徑。閱讀 issue 中參照的 VS Code Pseudoterminal、ExtensionTerminalOptions 和 TerminalOptions API。當 pseudoTerminal 選項能以乾淨的輸出啟動 Java 程式,並在執行和偵錯時都接受 stdin,即表示完成。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- java, typescript, vscode
- 領域
- developer-experience, devtools
- Issue 類型
- 功能
- 難度
- 5/5
- 預估耗時
- 一週以上
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100