vscode-languageclient#RevealOutputChannelOn TypeScript Examples
The following examples show how to use
vscode-languageclient#RevealOutputChannelOn.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: extension.ts From plugin-vscode with Apache License 2.0 | 6 votes |
constructor() {
this.ballerinaHome = '';
this.ballerinaCmd = '';
this.ballerinaVersion = '';
this.webviewPanels = {};
this.sdkVersion = window.createStatusBarItem(StatusBarAlignment.Left, 100);
this.sdkVersion.text = `Ballerina SDK: Detecting`;
this.sdkVersion.command = `ballerina.showLogs`;
this.sdkVersion.show();
this.isSwanLake = false;
this.is12x = false;
// Load the extension
this.extension = extensions.getExtension(EXTENSION_ID)!;
this.clientOptions = {
documentSelector: [{ scheme: 'file', language: LANGUAGE.BALLERINA }, { scheme: 'file', language: LANGUAGE.TOML }],
synchronize: { configurationSection: LANGUAGE.BALLERINA },
outputChannel: getOutputChannel(),
revealOutputChannelOn: RevealOutputChannelOn.Never,
};
this.telemetryReporter = createTelemetryReporter(this);
}
Example #2
Source File: extension.ts From sorbet-lsp with MIT License | 4 votes |
export function activate(context: ExtensionContext) {
let disposableClient: Disposable;
const startLanguageServer = () => {
let cmd = [];
let vsconfig = vscode.workspace.getConfiguration('sorbet');
const commandPath = vsconfig.commandPath || 'srb';
const useBundler = vsconfig.useBundler;
const useWatchman = vsconfig.useWatchman;
const bundlerPath = vsconfig.bundlerPath || 'bundle';
if (useBundler) {
cmd = cmd.concat([bundlerPath, 'exec', 'srb']);
} else {
cmd.push(commandPath);
}
cmd = cmd.concat(['tc', '--lsp', '--enable-all-experimental-lsp-features']);
if (!useWatchman) {
cmd.push('--disable-watchman');
}
const firstWorkspace = (workspace.workspaceFolders && workspace.workspaceFolders[0]) ? workspace.workspaceFolders[0].uri.fsPath : null;
if (!existsSync(`${firstWorkspace}/sorbet/config`)) {
vscode.window.showInformationMessage('Sorbet config not found. Sorbet server will not be started');
return;
}
const env = commonOptions(firstWorkspace);
// The debug options for the server
// --inspect=6009: runs the server in Node's Inspector mode so VS Code can attach to the server for debugging
let debugOptions = { execArgv: ['--nolazy', '--inspect=6009'] };
const serverOptions: ServerOptions = () => {
return new Promise((resolve) => {
let child = spawnWithBash(cmd, env);
child.stderr.on('data', (data: Buffer) => {
console.log(data.toString());
});
child.on('exit', (code, signal) => {
console.log('Sorbet exited with code', code, signal);
});
resolve(child);
});
}
// Options to control the language client
let clientOptions: LanguageClientOptions = {
// Register the server for plain text documents
documentSelector: [{ scheme: 'file', language: 'ruby' }],
synchronize: {
// Notify the server about changes to relevant files in the workspace
fileEvents: workspace.createFileSystemWatcher('{**/*.rb,**/*.gemspec,**/Gemfile}')
},
outputChannelName: 'Sorbet Language Server',
revealOutputChannelOn: RevealOutputChannelOn.Never
};
// Create the language client and start the client.
client = new LanguageClient(
'sorbetLanguageServer',
'Sorbet Language Server',
serverOptions,
clientOptions
);
// Start the client. This will also launch the server
disposableClient = client.start();
}
const restartLanguageServer = function (): Promise<void> {
return new Promise((resolve) => {
if (disposableClient) {
client.stop().then(() => {
disposableClient.dispose();
startLanguageServer();
resolve();
});
} else {
startLanguageServer();
resolve();
}
});
}
// Restart command
var disposableRestart = vscode.commands.registerCommand('sorbet.restart', () => {
restartLanguageServer().then(() => {
vscode.window.showInformationMessage('Sorbet server restarted.');
});
});
context.subscriptions.push(disposableRestart);
startLanguageServer();
}
Example #3
Source File: extension.ts From language-tools with MIT License | 4 votes |
export function activateSvelteLanguageServer(context: ExtensionContext) { warnIfOldExtensionInstalled(); const runtimeConfig = workspace.getConfiguration('svelte.language-server'); const { workspaceFolders } = workspace; const rootPath = Array.isArray(workspaceFolders) ? workspaceFolders[0].uri.fsPath : undefined; const tempLsPath = runtimeConfig.get<string>('ls-path'); // Returns undefined if path is empty string // Return absolute path if not already const lsPath = tempLsPath && tempLsPath.trim() !== '' ? path.isAbsolute(tempLsPath) ? tempLsPath : path.join(rootPath as string, tempLsPath) : undefined; const serverModule = require.resolve(lsPath || 'svelte-language-server/bin/server.js'); console.log('Loading server from ', serverModule); // Add --experimental-modules flag for people using node 12 < version < 12.17 // Remove this in mid 2022 and bump vs code minimum required version to 1.55 const runExecArgv: string[] = ['--experimental-modules']; let port = runtimeConfig.get<number>('port') ?? -1; if (port < 0) { port = 6009; } else { console.log('setting port to', port); runExecArgv.push(`--inspect=${port}`); } const debugOptions = { execArgv: ['--nolazy', '--experimental-modules', `--inspect=${port}`] }; const serverOptions: ServerOptions = { run: { module: serverModule, transport: TransportKind.ipc, options: { execArgv: runExecArgv } }, debug: { module: serverModule, transport: TransportKind.ipc, options: debugOptions } }; const serverRuntime = runtimeConfig.get<string>('runtime'); if (serverRuntime) { serverOptions.run.runtime = serverRuntime; serverOptions.debug.runtime = serverRuntime; console.log('setting server runtime to', serverRuntime); } const clientOptions: LanguageClientOptions = { documentSelector: [{ scheme: 'file', language: 'svelte' }], revealOutputChannelOn: RevealOutputChannelOn.Never, synchronize: { // TODO deprecated, rework upon next VS Code minimum version bump configurationSection: [ 'svelte', 'prettier', 'emmet', 'javascript', 'typescript', 'css', 'less', 'scss' ], fileEvents: workspace.createFileSystemWatcher('{**/*.js,**/*.ts}', false, false, false) }, initializationOptions: { configuration: { svelte: workspace.getConfiguration('svelte'), prettier: workspace.getConfiguration('prettier'), emmet: workspace.getConfiguration('emmet'), typescript: workspace.getConfiguration('typescript'), javascript: workspace.getConfiguration('javascript'), css: workspace.getConfiguration('css'), less: workspace.getConfiguration('less'), scss: workspace.getConfiguration('scss') }, dontFilterIncompleteCompletions: true, // VSCode filters client side and is smarter at it than us isTrusted: (workspace as any).isTrusted } }; let ls = createLanguageServer(serverOptions, clientOptions); context.subscriptions.push(ls.start()); ls.onReady().then(() => { const tagRequestor = (document: TextDocument, position: Position) => { const param = ls.code2ProtocolConverter.asTextDocumentPositionParams( document, position ); return ls.sendRequest(TagCloseRequest.type, param); }; const disposable = activateTagClosing( tagRequestor, { svelte: true }, 'html.autoClosingTags' ); context.subscriptions.push(disposable); }); workspace.onDidSaveTextDocument(async (doc) => { const parts = doc.uri.toString(true).split(/\/|\\/); if ( [ /^tsconfig\.json$/, /^jsconfig\.json$/, /^svelte\.config\.(js|cjs|mjs)$/, // https://prettier.io/docs/en/configuration.html /^\.prettierrc$/, /^\.prettierrc\.(json|yml|yaml|json5|toml)$/, /^\.prettierrc\.(js|cjs)$/, /^\.prettierrc\.config\.(js|cjs)$/ ].some((regex) => regex.test(parts[parts.length - 1])) ) { await restartLS(false); } }); context.subscriptions.push( commands.registerCommand('svelte.restartLanguageServer', async () => { await restartLS(true); }) ); let restartingLs = false; async function restartLS(showNotification: boolean) { if (restartingLs) { return; } restartingLs = true; await ls.stop(); ls = createLanguageServer(serverOptions, clientOptions); context.subscriptions.push(ls.start()); await ls.onReady(); if (showNotification) { window.showInformationMessage('Svelte language server restarted.'); } restartingLs = false; } function getLS() { return ls; } addDidChangeTextDocumentListener(getLS); addFindFileReferencesListener(getLS, context); addRenameFileListener(getLS); addCompilePreviewCommand(getLS, context); addExtracComponentCommand(getLS, context); languages.setLanguageConfiguration('svelte', { indentationRules: { // Matches a valid opening tag that is: // - Not a doctype // - Not a void element // - Not a closing tag // - Not followed by a closing tag of the same element // Or matches `<!--` // Or matches open curly brace // increaseIndentPattern: // eslint-disable-next-line max-len, no-useless-escape /<(?!\?|(?:area|base|br|col|frame|hr|html|img|input|link|meta|param)\b|[^>]*\/>)([-_\.A-Za-z0-9]+)(?=\s|>)\b[^>]*>(?!.*<\/\1>)|<!--(?!.*-->)|\{[^}"']*$/, // Matches a closing tag that: // - Follows optional whitespace // - Is not `</html>` // Or matches `-->` // Or closing curly brace // // eslint-disable-next-line no-useless-escape decreaseIndentPattern: /^\s*(<\/(?!html)[-_\.A-Za-z0-9]+\b[^>]*>|-->|\})/ }, // Matches a number or word that either: // - Is a number with an optional negative sign and optional full number // with numbers following the decimal point. e.g `-1.1px`, `.5`, `-.42rem`, etc // - Is a sequence of characters without spaces and not containing // any of the following: `~!@$^&*()=+[{]}\|;:'",.<>/ // wordPattern: // eslint-disable-next-line max-len, no-useless-escape /(-?\d*\.\d\w*)|([^\`\~\!\@\$\#\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g, onEnterRules: [ { // Matches an opening tag that: // - Isn't an empty element // - Is possibly namespaced // - Isn't a void element // - Isn't followed by another tag on the same line // // eslint-disable-next-line no-useless-escape beforeText: new RegExp( `<(?!(?:${EMPTY_ELEMENTS.join( '|' )}))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i' ), // Matches a closing tag that: // - Is possibly namespaced // - Possibly has excess whitespace following tagname afterText: /^<\/([_:\w][_:\w-.\d]*)\s*>/i, action: { indentAction: IndentAction.IndentOutdent } }, { // Matches an opening tag that: // - Isn't an empty element // - Isn't namespaced // - Isn't a void element // - Isn't followed by another tag on the same line // // eslint-disable-next-line no-useless-escape beforeText: new RegExp( `<(?!(?:${EMPTY_ELEMENTS.join('|')}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i' ), action: { indentAction: IndentAction.Indent } } ] }); return { getLS }; }