Skip to content

Commit 09166c4

Browse files
committed
[css] use proposalprovider for region snippets
1 parent 46842f0 commit 09166c4

7 files changed

Lines changed: 27 additions & 62 deletions

File tree

extensions/css/client/src/cssMain.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
import * as path from 'path';
88

9-
import { languages, window, commands, ExtensionContext, TextDocument, ColorInformation, ColorPresentation, Color } from 'vscode';
10-
import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, TextEdit } from 'vscode-languageclient';
9+
import { languages, window, commands, ExtensionContext, TextDocument, ColorInformation, ColorPresentation, Color, Range, Position, CompletionItem, CompletionItemKind, TextEdit, SnippetString } from 'vscode';
10+
import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind } from 'vscode-languageclient';
1111

1212
import { ConfigurationFeature } from 'vscode-languageclient/lib/configuration.proposed';
1313
import { DocumentColorRequest, DocumentColorParams, ColorPresentationRequest, ColorPresentationParams } from 'vscode-languageserver-protocol/lib/protocol.colorProvider.proposed';
@@ -104,6 +104,31 @@ export function activate(context: ExtensionContext) {
104104
indentationRules: indentationRules
105105
});
106106

107+
const regionCompletionRegExpr = /^(\s*)(\/(\*\s*(#\w*)?)?)?/;
108+
languages.registerCompletionItemProvider(documentSelector, {
109+
provideCompletionItems(doc, pos) {
110+
let lineUntilPos = doc.getText(new Range(new Position(pos.line, 0), pos));
111+
let match = lineUntilPos.match(regionCompletionRegExpr);
112+
if (match) {
113+
let range = new Range(new Position(pos.line, match[1].length), pos);
114+
let beginProposal = new CompletionItem('#region', CompletionItemKind.Snippet);
115+
beginProposal.range = range; TextEdit.replace(range, '/* #region */');
116+
beginProposal.insertText = new SnippetString('/* #region $1*/');
117+
beginProposal.documentation = localize('folding.start', 'Folding Region Start');
118+
beginProposal.filterText = match[2];
119+
beginProposal.sortText = 'za';
120+
let endProposal = new CompletionItem('#endregion', CompletionItemKind.Snippet);
121+
endProposal.range = range;
122+
endProposal.insertText = '/* #endregion */';
123+
endProposal.documentation = localize('folding.end', 'Folding Region End');
124+
endProposal.sortText = 'zb';
125+
endProposal.filterText = match[2];
126+
return [beginProposal, endProposal];
127+
}
128+
return null;
129+
}
130+
});
131+
107132
commands.registerCommand('_css.applyCodeAction', applyCodeAction);
108133

109134
function applyCodeAction(uri: string, documentVersion: number, edits: TextEdit[]) {

extensions/css/package.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@
4343
"path": "./syntaxes/css.tmLanguage.json"
4444
}
4545
],
46-
"snippets": [{
47-
"language": "css",
48-
"path": "./snippets/css.snippets.json"
49-
}],
5046
"configuration": [
5147
{
5248
"order": 22,

extensions/css/snippets/css.snippets.json

Lines changed: 0 additions & 16 deletions
This file was deleted.

extensions/less/package.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@
1919
"scopeName": "source.css.less",
2020
"path": "./syntaxes/less.tmLanguage.json"
2121
}],
22-
"snippets": [{
23-
"language": "less",
24-
"path": "./snippets/less.snippets.json"
25-
}],
2622
"problemMatchers": [
2723
{
2824
"name": "lessc",

extensions/less/snippets/less.snippets.json

Lines changed: 0 additions & 16 deletions
This file was deleted.

extensions/scss/package.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@
1919
"scopeName": "source.css.scss",
2020
"path": "./syntaxes/scss.json"
2121
}],
22-
"snippets": [{
23-
"language": "scss",
24-
"path": "./snippets/scss.snippets.json"
25-
}],
2622
"problemMatchers": [{
2723
"name": "node-sass",
2824
"label": "Node Sass Compiler",

extensions/scss/snippets/scss.snippets.json

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)