Revamping to matrix style
This commit is contained in:
61
node_modules/@volar/language-server/lib/features/fileSystem.js
generated
vendored
Normal file
61
node_modules/@volar/language-server/lib/features/fileSystem.js
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.register = register;
|
||||
const language_service_1 = require("@volar/language-service");
|
||||
const vscode = require("vscode-languageserver");
|
||||
const vscode_uri_1 = require("vscode-uri");
|
||||
function register(documents, fileWatcher) {
|
||||
const providers = new Map();
|
||||
const readFileCache = (0, language_service_1.createUriMap)();
|
||||
const statCache = (0, language_service_1.createUriMap)();
|
||||
const readDirectoryCache = (0, language_service_1.createUriMap)();
|
||||
documents.onDidSave(({ document }) => {
|
||||
const uri = vscode_uri_1.URI.parse(document.uri);
|
||||
readFileCache.set(uri, document.getText());
|
||||
statCache.delete(uri);
|
||||
});
|
||||
fileWatcher.onDidChangeWatchedFiles(({ changes }) => {
|
||||
for (const change of changes) {
|
||||
const changeUri = vscode_uri_1.URI.parse(change.uri);
|
||||
const dir = vscode_uri_1.URI.parse(change.uri.substring(0, change.uri.lastIndexOf('/')));
|
||||
if (change.type === vscode.FileChangeType.Deleted) {
|
||||
readFileCache.set(changeUri, undefined);
|
||||
statCache.set(changeUri, undefined);
|
||||
readDirectoryCache.delete(dir);
|
||||
}
|
||||
else if (change.type === vscode.FileChangeType.Changed) {
|
||||
readFileCache.delete(changeUri);
|
||||
statCache.delete(changeUri);
|
||||
}
|
||||
else if (change.type === vscode.FileChangeType.Created) {
|
||||
readFileCache.delete(changeUri);
|
||||
statCache.delete(changeUri);
|
||||
readDirectoryCache.delete(dir);
|
||||
}
|
||||
}
|
||||
});
|
||||
return {
|
||||
readFile(uri) {
|
||||
if (!readFileCache.has(uri)) {
|
||||
readFileCache.set(uri, providers.get(uri.scheme)?.readFile(uri));
|
||||
}
|
||||
return readFileCache.get(uri);
|
||||
},
|
||||
stat(uri) {
|
||||
if (!statCache.has(uri)) {
|
||||
statCache.set(uri, providers.get(uri.scheme)?.stat(uri));
|
||||
}
|
||||
return statCache.get(uri);
|
||||
},
|
||||
readDirectory(uri) {
|
||||
if (!readDirectoryCache.has(uri)) {
|
||||
readDirectoryCache.set(uri, providers.get(uri.scheme)?.readDirectory(uri) ?? []);
|
||||
}
|
||||
return readDirectoryCache.get(uri);
|
||||
},
|
||||
install(scheme, provider) {
|
||||
providers.set(scheme, provider);
|
||||
},
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=fileSystem.js.map
|
||||
Reference in New Issue
Block a user