Access console logs from VS Code extension - visual-studio-code

I'm working on a VS code extension which needs to access console.log() output, written into the user's active terminal.
I'm aware of the vscode.window.activeTerminal API which returns a Terminal. However, according to the docs I can only sendText() to the terminal.
Is it possible to read the terminal's content from within my extension?

It cannot do in stable version of VSCode. Try window.onDidWriteTerminalData API only in Insider version.
For your information, there are several options, not official supported by VSCode.
Use node-pty to create and manage the process and then hook it up using ExtensionTerminalOptions.
Create a process/script that wraps the terminal shell.
reference:
https://github.com/microsoft/vscode/issues/83224
https://github.com/microsoft/vscode/commit/dc6b475be75999e78233f9f6951ef66f18f768ea#r53974957

Related

Visual Studio Code Terminal Exits Immediately

When I open the terminal in VS Code, the terminal opens for about half a second, crashes, and outputs this message:
The terminal process "/bin/zsh '-l, '" terminated with exit code: 1.
What could possibly be the cause of this problem. and how do I fix it? I'm using a Mac.
You would want to check your user settings first. Review terminal.integrated settings that could affect the launch.
You're using a Mac, so on macOS, go to Code > Preferences > Settings. In the settings, you may want to search for this:
Just in case you modified settings.json without knowing, you could by typing in #modified or accessing it by Filter Settings (top right) > Modified.
If you did not modified anything, then it may be due to these:
Test your shell directly. Try running your designated integrated terminal shell outside VS Code from an external terminal or command prompt. Some terminal launch failures may be due to your shell installation and are not specific to VS Code. The exit codes displayed come from the shell and you may be able to diagnose shell issues by searching on the internet for the specific shell and exit code.
Use the most recent version of VS Code. Each VS Code monthly release has many updates and fixes and may include integrated terminal improvements. You can check your VS Code version via Help > About (on macOS Code > About Visual Studio Code). To find the latest version of VS Code, go to the VS Code release notes. You may also want to check that you have installed the latest version of your shell.
Use the most recent version of your shell. If your shell is installed separate from your platform, try installing the latest available version of the shell. The same advice applies if you are on an older build of your operating system. For example, some older versions of Windows 10 did not work well with the VS Code terminal.
Enable trace logging. You can enable trace logging and capture a log when launching the terminal. Logging often reveals what is wrong as all arguments used to create the terminal process/pty are recorded. Bad shell names, arguments, or environment variables can cause the terminal to not launch. Keep this log for later if your problem isn't solved.
Exit codes and shells
Search for the specific shells or exit codes in Google (if provided), maybe it would help.
If these still did not help, you may consider searching it in Google (mainly Stackoverflow or github).
Reference link: https://code.visualstudio.com/docs/supporting/troubleshoot-terminal-launch

Debugging new VS Code CLI flag in devcontainer

I've forked VSCode on Github to try to add a tiny little feature I think would be useful, which adds a new CLI flag to code, to be used inside the VSCode terminal (like code - for stdin). I added the code, wrote tests, and now I want to try out the feature.
I'm developing inside the built-in devcontainer, so I just launched an instance of VSCode from within VSCode, connected to the devcontainer via VNC and tried to use my flag inside the VSCode-OSS terminal. However, I get an error saying "Command is only available in WSL or inside a Visual Studio Code terminal"
According to server.cli.ts, this means that the env variables VSCODE_IPC_HOOK_CLI and VSCODE_CLIENT_COMMAND aren't set, but I don't know who should be setting them, or if I need to launch VSCode in a different way for debugging.
Has anyone using the VSCode DevContainer to write additional CLI flags and knows how to debug them?

How do I use ZModem in Visual Studio Code?

Is it possible to configure vs code to support the ZMODEM protocol? I could use xshell to download files with sz command, but when I try to use sz in vs code, here it returns some random number.
(base) [alpha#hpc03 newfile]$ sz INCAR
�*B00000000000000
I use Remote-SSH extension in vs code to connect to the Linux system.
My question is:
Is there any extension or configuration method that would allow me to use sz in vs code?
As far as I know (I looked, didn't find anything) there's no existing extension or method to use the ZModem protocol with VSCode. However, there's a pull request from 2017 that adds support for it to Xterm, which is the terminal display VSCode uses. As indicated in this mentioning issue the VSCode developers would need more information.
As far as an extension goes, if you or anyone reading this wanted to make an extension for this purpose, you could use this ZModem.js implementation of the protocol in Javascript, and write the extension yourself, or do something similar.
From the Remote-SSH docs
VS Code will look for the ssh command in the PATH. Failing that, on Windows it will attempt to find ssh.exe in the default Git for Windows install path. You can also specifically tell VS Code where to find the SSH client by adding the remote.SSH.path property to settings.json.
Maybe you can include Xshell somehow this way. Or find a windows version of zssh (not this from the Ziti project) and it could work. Another candidate is SecureCRT. (via). Probably these rich GUI apps are not embeddable as simple CLI programs, though. Which would be a useful feature in this case.

How to read active terminal output in vscode extension?

I'd like to watch vscode builtin terminal output or at least be able to read whole output. This output will be searched against some pattern.
I looked at this question, but mentioned method
window.onDidWriteTerminalData
appears to be not available at current api.
How to read terminal output from vscode extension?
It cannot do in stable version of VSCode. Try window.onDidWriteTerminalData API only in Insider version.
For your information, there are several options, not official supported by VSCode.
Use node-pty to create and manage the process and then hook it up using ExtensionTerminalOptions.
Create a process/script that wraps the terminal shell.
reference:
https://github.com/microsoft/vscode/issues/83224
https://github.com/microsoft/vscode/commit/dc6b475be75999e78233f9f6951ef66f18f768ea#r53974957

Custom node version to run VSCode extensions

I'm making a vscode extension for my personal use. I'd really like to use a more recent node version. However, I'm not sure how does VSCode chooses which node version to use.
The only node.js that I have installed is 8.1.3. But when I debug the extension, I see that VSCode uses 7.*.* (via process.version).
I've been searching documentation for an hour, so far, without luck. Any help is appreciated.
This is not possible. Quoting the reply of one of the team members (Andre Weinand) in #18253:
VS Code runs extensions on the node version that is built into electron (on which VS Code is based). This cannot be changed.