Skip to content

Commit

Permalink
fix: don't start language features server on browser for now
Browse files Browse the repository at this point in the history
close #1479
  • Loading branch information
johnsoncodehk committed Aug 27, 2022
1 parent af9b2ca commit 3770337
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 25 deletions.
Expand Up @@ -29,7 +29,7 @@ export function activate(context: vscode.ExtensionContext) {
await client.start();

return client;
});
}, 'browser');
}

export function deactivate(): Thenable<any> | undefined {
Expand Down
48 changes: 27 additions & 21 deletions extensions/vscode-vue-language-features/src/common.ts
Expand Up @@ -19,7 +19,7 @@ import * as doctor from './features/doctor';
import * as fileReferences from './features/fileReferences';
import * as reloadProject from './features/reloadProject';

let apiClient: lsp.BaseLanguageClient;
let apiClient: lsp.BaseLanguageClient | undefined;
let docClient: lsp.BaseLanguageClient | undefined;
let htmlClient: lsp.BaseLanguageClient;

Expand All @@ -31,7 +31,7 @@ type CreateLanguageClient = (
port: number,
) => Promise<lsp.BaseLanguageClient>;

export async function activate(context: vscode.ExtensionContext, createLc: CreateLanguageClient) {
export async function activate(context: vscode.ExtensionContext, createLc: CreateLanguageClient, env: 'node' | 'browser') {

const stopCheck = vscode.window.onDidChangeActiveTextEditor(tryActivate);
tryActivate();
Expand All @@ -40,26 +40,26 @@ export async function activate(context: vscode.ExtensionContext, createLc: Creat

if (!vscode.window.activeTextEditor) {
// onWebviewPanel:preview
doActivate(context, createLc);
doActivate(context, createLc, env);
stopCheck.dispose();
return;
}

const currentlangId = vscode.window.activeTextEditor.document.languageId;
if (currentlangId === 'vue' || currentlangId === 'markdown' || currentlangId === 'html') {
doActivate(context, createLc);
doActivate(context, createLc, env);
stopCheck.dispose();
}

const takeOverMode = takeOverModeEnabled();
if (takeOverMode && ['javascript', 'typescript', 'javascriptreact', 'typescriptreact'].includes(currentlangId)) {
doActivate(context, createLc);
doActivate(context, createLc, env);
stopCheck.dispose();
}
}
}

async function doActivate(context: vscode.ExtensionContext, createLc: CreateLanguageClient) {
async function doActivate(context: vscode.ExtensionContext, createLc: CreateLanguageClient, env: 'node' | 'browser') {

vscode.commands.executeCommand('setContext', 'volar.activated', true);

Expand Down Expand Up @@ -97,14 +97,14 @@ async function doActivate(context: vscode.ExtensionContext, createLc: CreateLang
const _serverMaxOldSpaceSize = serverMaxOldSpaceSize();

[apiClient, docClient, htmlClient] = await Promise.all([
createLc(
env === 'node' ? createLc(
'volar-language-features',
'Volar - Language Features Server',
languageFeaturesDocumentSelector,
getInitializationOptions(context, 'main-language-features', _useSecondServer),
6009,
),
_useSecondServer ? createLc(
) : undefined,
env === 'node' && _useSecondServer ? createLc(
'volar-language-features-2',
'Volar - Second Language Features Server',
languageFeaturesDocumentSelector,
Expand All @@ -130,16 +130,19 @@ async function doActivate(context: vscode.ExtensionContext, createLc: CreateLang
splitEditors.register(context);
preview.register(context);
createWorkspaceSnippets.register(context);
callGraph.register(context, apiClient);
verifyAll.register(context, docClient ?? apiClient);
autoInsertion.register(context, htmlClient, apiClient);
doctor.register(context);
virtualFiles.register('volar.action.writeVirtualFiles', context, docClient ?? apiClient);
tsVersion.register('volar.selectTypeScriptVersion', context, [apiClient, docClient].filter(shared.notEmpty));
tsconfig.register('volar.openTsconfig', context, docClient ?? apiClient);
fileReferences.register('volar.vue.findAllFileReferences', apiClient);
reloadProject.register('volar.action.reloadProject', context, [apiClient, docClient].filter(shared.notEmpty));

if (apiClient) {
tsconfig.register('volar.openTsconfig', context, docClient ?? apiClient);
fileReferences.register('volar.vue.findAllFileReferences', apiClient);
callGraph.register(context, apiClient);
verifyAll.register(context, docClient ?? apiClient);
autoInsertion.register(context, htmlClient, apiClient);
virtualFiles.register('volar.action.writeVirtualFiles', context, docClient ?? apiClient);
}

async function requestReloadVscode() {
const reload = await vscode.window.showInformationMessage(
'Please reload VSCode to restart language servers.',
Expand Down Expand Up @@ -183,13 +186,16 @@ async function doActivate(context: vscode.ExtensionContext, createLc: CreateLang
}

(async () => {
const getTagNameCase = await tagNameCase.activate(context, apiClient);
const getAttrNameCase = await attrNameCase.activate(context, apiClient);
if (apiClient) {

const getTagNameCase = await tagNameCase.activate(context, apiClient);
const getAttrNameCase = await attrNameCase.activate(context, apiClient);

apiClient.onRequest(shared.GetDocumentNameCasesRequest.type, async handler => ({
tagNameCase: getTagNameCase(handler.uri),
attrNameCase: getAttrNameCase(handler.uri),
}));
apiClient.onRequest(shared.GetDocumentNameCasesRequest.type, async handler => ({
tagNameCase: getTagNameCase(handler.uri),
attrNameCase: getAttrNameCase(handler.uri),
}));
}
})();
}
}
Expand Down
Expand Up @@ -68,7 +68,7 @@ export function activate(context: vscode.ExtensionContext) {
await client.start();

return client;
});
}, 'node');
}

export function deactivate(): Thenable<any> | undefined {
Expand Down
4 changes: 2 additions & 2 deletions packages/vue-language-service/src/utils/sharedLs.ts
Expand Up @@ -15,8 +15,8 @@ export function getDummyTsLs(
): ts2.LanguageService {
if (!dummyTsLs) {
const host: ts.LanguageServiceHost = {
readFile: ts.sys.readFile,
fileExists: ts.sys.fileExists,
readFile: () => undefined,
fileExists: fileName => shared.fsPathToUri(fileName) === shared.normalizeUri(doc.uri),
getProjectVersion: () => dummyProjectVersion.toString(),
getScriptVersion: () => dummyProjectVersion.toString(),
getCompilationSettings: () => ({ allowJs: true, jsx: ts.JsxEmit.Preserve }),
Expand Down

0 comments on commit 3770337

Please sign in to comment.