Open 0dinD opened 4 years ago
This looks a general feature that VS Code should provide. Ideally make the DEBUG CONSOLE to support program input.
I don't disagree, but the feature has been requested multiple times and it seems like the vscode devs only want the debug console to be a simple REPL. See this issue for example. I think I saw somewhere in another issue that the pseudoterminal interface is the intended replacement for this, but I can't find the comment right now. Therefore, I think it is up to this extension to provide a pseudoterminal (or one using TerminalOptions
), unless you can change the minds of the vscode devs.
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
tointernalConsole
, 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 passingExtensionTerminalOptions
tovscode.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
withTerminalOptions
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 forshellPath
, put the JVM and program arguments inshellArgs
, and then usecwd
instead of generating acd
command.Current Result
"java.debug.settings.console": "integratedTerminal"
"java.debug.settings.console": "internalConsole"
Expected Result
"java.debug.settings.console": "pseudoTerminal"