I'm trying to learn how to create a vscode extension
theres a function that im printing some text to console, however each time the function is called, it creates a new output channel:
const channel = vscode.window.createOutputChannel("debug");
channel.show();
console.log("test");
how i could avoid it? I mean, create the channel only once.
Like with any other part you want to share in a JS/TS project, you have to export it. In my extension.ts I created the output channel in the activate
function and provide an exported print function to access it:
import * as vscode from 'vscode';
let outputChannel: vscode.OutputChannel;
export const activate = (context: vscode.ExtensionContext): void => {
outputChannel = vscode.window.createOutputChannel("My Extension");
...
}
/**
* Prints the given content on the output channel.
*
* @param content The content to be printed.
* @param reveal Whether the output channel should be revealed.
*/
export const printChannelOutput = (content: string, reveal = false): void => {
outputChannel.appendLine(content);
if (reveal) {
outputChannel.show(true);
}
};
Now you can import printChannelOutput
in any of your extension files and call it with the text you want to print.