This commit is contained in:
63
node_modules/@volar/language-server/lib/features/fileWatcher.js
generated
vendored
Normal file
63
node_modules/@volar/language-server/lib/features/fileWatcher.js
generated
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.register = register;
|
||||
const vscode = require("vscode-languageserver");
|
||||
function register(server) {
|
||||
let watchFilesDisposableCounter = 0;
|
||||
let watchFilesDisposable;
|
||||
const didChangeWatchedFilesCallbacks = new Set();
|
||||
return {
|
||||
watchFiles,
|
||||
onDidChangeWatchedFiles,
|
||||
};
|
||||
async function watchFiles(patterns) {
|
||||
const disposables = [];
|
||||
const didChangeWatchedFiles = server.initializeParams.capabilities.workspace?.didChangeWatchedFiles;
|
||||
const fileOperations = server.initializeParams.capabilities.workspace?.fileOperations;
|
||||
if (didChangeWatchedFiles) {
|
||||
if (watchFilesDisposableCounter === 0) {
|
||||
watchFilesDisposable = server.connection.onDidChangeWatchedFiles(e => {
|
||||
for (const cb of didChangeWatchedFilesCallbacks) {
|
||||
cb(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
watchFilesDisposableCounter++;
|
||||
disposables.push({
|
||||
dispose() {
|
||||
watchFilesDisposableCounter--;
|
||||
if (watchFilesDisposableCounter === 0) {
|
||||
watchFilesDisposable?.dispose();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
if (didChangeWatchedFiles?.dynamicRegistration) {
|
||||
disposables.push(await server.connection.client.register(vscode.DidChangeWatchedFilesNotification.type, {
|
||||
watchers: patterns.map(pattern => ({ globPattern: pattern })),
|
||||
}));
|
||||
}
|
||||
if (fileOperations?.dynamicRegistration && fileOperations.willRename) {
|
||||
disposables.push(await server.connection.client.register(vscode.WillRenameFilesRequest.type, {
|
||||
filters: patterns.map(pattern => ({ pattern: { glob: pattern } })),
|
||||
}));
|
||||
}
|
||||
return {
|
||||
dispose() {
|
||||
for (const disposable of disposables) {
|
||||
disposable.dispose();
|
||||
}
|
||||
disposables.length = 0;
|
||||
},
|
||||
};
|
||||
}
|
||||
function onDidChangeWatchedFiles(cb) {
|
||||
didChangeWatchedFilesCallbacks.add(cb);
|
||||
return {
|
||||
dispose: () => {
|
||||
didChangeWatchedFilesCallbacks.delete(cb);
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=fileWatcher.js.map
|
||||
Reference in New Issue
Block a user