提交 1429e818 编写于 作者: M Matt Bierner

Enable "restart ts server" command in js/tsconfig files

Fixes #79530
上级 0b4c4dc8
......@@ -4,11 +4,12 @@
*--------------------------------------------------------------------------------------------*/
import * as fs from 'fs';
import * as jsonc from 'jsonc-parser';
import * as path from 'path';
import * as vscode from 'vscode';
import * as nls from 'vscode-nls';
import * as jsonc from 'jsonc-parser';
import { ITypeScriptServiceClient } from '../typescriptService';
import { isTsConfigFileName } from '../utils/languageDescription';
import { Lazy } from '../utils/lazy';
import { isImplicitProjectConfigFile } from '../utils/tsconfig';
import TsConfigProvider, { TSConfig } from '../utils/tsconfigProvider';
......@@ -113,7 +114,7 @@ export default class TscTaskProvider implements vscode.TaskProvider {
private async getTsConfigForActiveFile(token: vscode.CancellationToken): Promise<TSConfig[]> {
const editor = vscode.window.activeTextEditor;
if (editor) {
if (path.basename(editor.document.fileName).match(/^tsconfig\.(.\.)?json$/)) {
if (isTsConfigFileName(editor.document.fileName)) {
const uri = editor.document.uri;
return [{
path: uri.fsPath,
......
......@@ -2,6 +2,8 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { basename } from 'path';
import * as languageModeIds from './languageModeIds';
export const enum DiagnosticLanguage {
......@@ -38,3 +40,11 @@ export const standardLanguageDescriptions: LanguageDescription[] = [
configFilePattern: /^jsconfig(\..*)?\.json$/gi
}
];
export function isTsConfigFileName(fileName: string): boolean {
return /^tsconfig\.(.+\.)?json$/i.test(basename(fileName));
}
export function isJsConfigOrTsConfigFileName(fileName: string): boolean {
return /^[jt]sconfig\.(.+\.)?json$/i.test(basename(fileName));
}
......@@ -4,8 +4,9 @@
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
import { isSupportedLanguageMode } from './languageModeIds';
import { Disposable } from './dispose';
import { isJsConfigOrTsConfigFileName } from './languageDescription';
import { isSupportedLanguageMode } from './languageModeIds';
/**
* When clause context set when the current file is managed by vscode's built-in typescript extension.
......@@ -26,8 +27,7 @@ export default class ManagedFileContextManager extends Disposable {
private onDidChangeActiveTextEditor(editor?: vscode.TextEditor): any {
if (editor) {
const isManagedFile = isSupportedLanguageMode(editor.document) && this.normalizePath(editor.document.uri) !== null;
this.updateContext(isManagedFile);
this.updateContext(this.isManagedFile(editor));
}
}
......@@ -39,4 +39,16 @@ export default class ManagedFileContextManager extends Disposable {
vscode.commands.executeCommand('setContext', ManagedFileContextManager.contextName, newValue);
this.isInManagedFileContext = newValue;
}
private isManagedFile(editor: vscode.TextEditor): boolean {
return this.isManagedScriptFile(editor) || this.isManagedConfigFile(editor);
}
private isManagedScriptFile(editor: vscode.TextEditor): boolean {
return isSupportedLanguageMode(editor.document) && this.normalizePath(editor.document.uri) !== null;
}
private isManagedConfigFile(editor: vscode.TextEditor): boolean {
return isJsConfigOrTsConfigFileName(editor.document.fileName);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册