[css] adopt folding apis

This commit is contained in:
Martin Aeschlimann
2018-04-17 18:18:03 +02:00
parent a509b1797b
commit e09c8a7086
6 changed files with 50 additions and 31 deletions

View File

@@ -8,9 +8,9 @@
"node": "*"
},
"dependencies": {
"vscode-css-languageservice": "^3.0.9-next.5",
"vscode-css-languageservice": "^3.0.9-next.7",
"vscode-languageserver": "^4.0.0",
"vscode-languageserver-protocol-foldingprovider": "^1.0.1"
"vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2"
},
"devDependencies": {
"@types/mocha": "2.2.33",

View File

@@ -15,7 +15,7 @@ import { getLanguageModelCache } from './languageModelCache';
import { formatError, runSafe } from './utils/runner';
import URI from 'vscode-uri';
import { getPathCompletionParticipant } from './pathCompletion';
import { FoldingProviderServerCapabilities, FoldingRangesRequest } from 'vscode-languageserver-protocol-foldingprovider';
import { FoldingRangeServerCapabilities, FoldingRangeRequest } from 'vscode-languageserver-protocol-foldingprovider';
export interface Settings {
css: LanguageSettings;
@@ -49,6 +49,7 @@ connection.onShutdown(() => {
});
let scopedSettingsSupport = false;
let foldingRangeLimit = Number.MAX_VALUE;
let workspaceFolders: WorkspaceFolder[];
// After the server has started the client sends an initialize request. The server receives
@@ -62,18 +63,22 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
}
}
function hasClientCapability(name: string) {
function getClientCapability<T>(name: string, def: T) {
let keys = name.split('.');
let c: any = params.capabilities;
for (let i = 0; c && i < keys.length; i++) {
if (!c.hasOwnProperty(keys[i])) {
return def;
}
c = c[keys[i]];
}
return !!c;
return c;
}
let snippetSupport = hasClientCapability('textDocument.completion.completionItem.snippetSupport');
scopedSettingsSupport = hasClientCapability('workspace.configuration');
let snippetSupport = !!getClientCapability('textDocument.completion.completionItem.snippetSupport', false);
scopedSettingsSupport = !!getClientCapability('workspace.configuration', false);
foldingRangeLimit = getClientCapability('textDocument.foldingRange.rangeLimit', Number.MAX_VALUE);
let capabilities: ServerCapabilities & FoldingProviderServerCapabilities = {
let capabilities: ServerCapabilities & FoldingRangeServerCapabilities = {
// Tell the client that the server works in FULL text document sync mode
textDocumentSync: documents.syncKind,
completionProvider: snippetSupport ? { resolveProvider: false, triggerCharacters: ['/'] } : undefined,
@@ -85,7 +90,7 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
codeActionProvider: true,
renameProvider: true,
colorProvider: true,
foldingProvider: true
foldingRangeProvider: true
};
return { capabilities };
});
@@ -276,10 +281,10 @@ connection.onRenameRequest((renameParameters, token) => {
}, null, `Error while computing renames for ${renameParameters.textDocument.uri}`, token);
});
connection.onRequest(FoldingRangesRequest.type, (params, token) => {
connection.onRequest(FoldingRangeRequest.type, (params, token) => {
return runSafe(() => {
let document = documents.get(params.textDocument.uri);
return getLanguageService(document).getFoldingRanges(document, { maxRanges: params.maxRanges });
return getLanguageService(document).getFoldingRanges(document, { rangeLimit: foldingRangeLimit });
}, null, `Error while computing folding ranges for ${params.textDocument.uri}`, token);
});

View File

@@ -10,9 +10,9 @@
version "7.0.43"
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c"
vscode-css-languageservice@^3.0.9-next.5:
version "3.0.9-next.5"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.5.tgz#854048eafc91406af4b276d9f812e24c677e262e"
vscode-css-languageservice@^3.0.9-next.7:
version "3.0.9-next.7"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.7.tgz#1eb8deadaa6bfaf55187656ea6fb6b7e8d71cd7f"
dependencies:
vscode-languageserver-types "^3.6.1"
vscode-nls "^3.2.1"
@@ -21,9 +21,9 @@ vscode-jsonrpc@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0.tgz#848d56995d5168950d84feb5d9c237ae5c6a02d4"
vscode-languageserver-protocol-foldingprovider@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44"
vscode-languageserver-protocol-foldingprovider@^2.0.0-next.2:
version "2.0.0-next.2"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-2.0.0-next.2.tgz#fbb9cfdf5b8c4ac451826ba6312f1f88379f35b0"
dependencies:
vscode-languageserver-protocol "^3.6.0"
vscode-languageserver-types "^3.6.0"