mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-20 02:08:47 +00:00
polish
This commit is contained in:
@@ -590,14 +590,11 @@ export function startServer(connection: Connection, runtime: RuntimeEnvironment)
|
||||
|
||||
connection.onRequest(TextDocumentContentRequest.type, (params, token) => {
|
||||
return runSafe(runtime, async () => {
|
||||
const url = new URL(params.uri);
|
||||
if (url.protocol.slice(0, -1) !== FILE_PROTOCOL) {
|
||||
return null;
|
||||
}
|
||||
const languageMode = languageModes.getMode(url.hostname);
|
||||
if (languageMode && languageMode.getTextDocumentContent) {
|
||||
const content = await languageMode.getTextDocumentContent(url.pathname.slice(1));
|
||||
return { text: content };
|
||||
for (const languageMode of languageModes.getAllModes()) {
|
||||
const content = await languageMode.getTextDocumentContent?.(params.uri);
|
||||
if (content) {
|
||||
return { text: content };
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}, null, `Error while computing text document content for ${params.uri}`, token);
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
SymbolInformation, SymbolKind, CompletionItem, Location, SignatureHelp, SignatureInformation, ParameterInformation,
|
||||
Definition, TextEdit, TextDocument, Diagnostic, DiagnosticSeverity, Range, CompletionItemKind, Hover,
|
||||
DocumentHighlight, DocumentHighlightKind, CompletionList, Position, FormattingOptions, FoldingRange, FoldingRangeKind, SelectionRange,
|
||||
LanguageMode, Settings, SemanticTokenData, Workspace, DocumentContext, CompletionItemData, isCompletionItemData, FILE_PROTOCOL
|
||||
LanguageMode, Settings, SemanticTokenData, Workspace, DocumentContext, CompletionItemData, isCompletionItemData, FILE_PROTOCOL, DocumentUri
|
||||
} from './languageModes';
|
||||
import { getWordAtText, isWhitespaceOnly, repeat } from '../utils/strings';
|
||||
import { HTMLDocumentRegions } from './embeddedSupport';
|
||||
@@ -110,6 +110,8 @@ export function getJavaScriptMode(documentRegions: LanguageModelCache<HTMLDocume
|
||||
const host = getLanguageServiceHost(languageId === 'javascript' ? ts.ScriptKind.JS : ts.ScriptKind.TS);
|
||||
const globalSettings: Settings = {};
|
||||
|
||||
const libParentUri = `${FILE_PROTOCOL}://${languageId}/libs/`;
|
||||
|
||||
function updateHostSettings(settings: Settings) {
|
||||
const hostSettings = host.getCompilationSettings();
|
||||
hostSettings.experimentalDecorators = settings?.['js/ts']?.implicitProjectConfig?.experimentalDecorators;
|
||||
@@ -315,7 +317,7 @@ export function getJavaScriptMode(documentRegions: LanguageModelCache<HTMLDocume
|
||||
range: convertRange(jsDocument, d.textSpan)
|
||||
};
|
||||
} else {
|
||||
const libUri = `${FILE_PROTOCOL}://${languageId}/${d.fileName}`;
|
||||
const libUri = libParentUri + d.fileName;
|
||||
const content = await host.loadLibrary(d.fileName);
|
||||
if (!content) {
|
||||
return undefined;
|
||||
@@ -421,8 +423,11 @@ export function getJavaScriptMode(documentRegions: LanguageModelCache<HTMLDocume
|
||||
getSemanticTokenLegend(): { types: string[]; modifiers: string[] } {
|
||||
return getSemanticTokenLegend();
|
||||
},
|
||||
getTextDocumentContent(name: string): Promise<string> {
|
||||
return host.loadLibrary(name);
|
||||
async getTextDocumentContent(documentUri: DocumentUri): Promise<string | undefined> {
|
||||
if (documentUri.startsWith(libParentUri)) {
|
||||
return host.loadLibrary(documentUri.substring(libParentUri.length));
|
||||
}
|
||||
return undefined;
|
||||
},
|
||||
dispose() {
|
||||
host.dispose();
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
Color, ColorInformation, ColorPresentation, WorkspaceEdit,
|
||||
WorkspaceFolder
|
||||
} from 'vscode-languageserver';
|
||||
import { TextDocument } from 'vscode-languageserver-textdocument';
|
||||
import { DocumentUri, TextDocument } from 'vscode-languageserver-textdocument';
|
||||
|
||||
import { getLanguageModelCache, LanguageModelCache } from '../languageModelCache';
|
||||
import { getCSSMode } from './cssMode';
|
||||
@@ -34,7 +34,7 @@ export {
|
||||
|
||||
export { ClientCapabilities, DocumentContext, LanguageService, HTMLDocument, HTMLFormatConfiguration, TokenType } from 'vscode-html-languageservice';
|
||||
|
||||
export { TextDocument } from 'vscode-languageserver-textdocument';
|
||||
export { TextDocument, DocumentUri } from 'vscode-languageserver-textdocument';
|
||||
|
||||
export interface Settings {
|
||||
readonly css?: any;
|
||||
@@ -89,7 +89,7 @@ export interface LanguageMode {
|
||||
onDocumentRemoved(document: TextDocument): void;
|
||||
getSemanticTokens?(document: TextDocument): Promise<SemanticTokenData[]>;
|
||||
getSemanticTokenLegend?(): { types: string[]; modifiers: string[] };
|
||||
getTextDocumentContent?(name: string): Promise<string>;
|
||||
getTextDocumentContent?(uri: DocumentUri): Promise<string | undefined>;
|
||||
dispose(): void;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user