Add reading library files to HTML server

This commit is contained in:
nknguyenhc
2025-03-28 22:48:10 +08:00
parent f3d643d887
commit 4baf61eeb2
3 changed files with 42 additions and 14 deletions

View File

@@ -7,11 +7,12 @@ import {
Connection, TextDocuments, InitializeParams, InitializeResult, RequestType,
DocumentRangeFormattingRequest, Disposable, ServerCapabilities,
ConfigurationRequest, ConfigurationParams, DidChangeWorkspaceFoldersNotification,
DocumentColorRequest, ColorPresentationRequest, TextDocumentSyncKind, NotificationType, RequestType0, DocumentFormattingRequest, FormattingOptions, TextEdit
DocumentColorRequest, ColorPresentationRequest, TextDocumentSyncKind, NotificationType, RequestType0, DocumentFormattingRequest, FormattingOptions, TextEdit,
TextDocumentContentRequest
} from 'vscode-languageserver';
import {
getLanguageModes, LanguageModes, Settings, TextDocument, Position, Diagnostic, WorkspaceFolder, ColorInformation,
Range, DocumentLink, SymbolInformation, TextDocumentIdentifier, isCompletionItemData
Range, DocumentLink, SymbolInformation, TextDocumentIdentifier, isCompletionItemData, FILE_PROTOCOL
} from './modes/languageModes';
import { format } from './modes/formatting';
@@ -215,6 +216,9 @@ export function startServer(connection: Connection, runtime: RuntimeEnvironment)
documentSelector: null,
interFileDependencies: false,
workspaceDiagnostics: false
},
workspace: {
textDocumentContent: { schemes: [FILE_PROTOCOL] }
}
};
return { capabilities };
@@ -586,6 +590,21 @@ 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 };
}
return null;
}, null, `Error while computing text document content for ${params.uri}`, token);
});
// Listen on the connection
connection.listen();
}