mirror of
https://github.com/Microsoft/vscode
synced 2024-10-05 19:02:54 +00:00
Merge pull request #124015 from microsoft/hediet/refactor-language-configuration
Refactors calls to languages.setLanguageConfiguration to declarative descriptions in language-configuration.json
This commit is contained in:
commit
ce5023b635
|
@ -92,26 +92,6 @@ export function startClient(context: ExtensionContext, newLanguageClient: Langua
|
||||||
// client can be deactivated on extension deactivation
|
// client can be deactivated on extension deactivation
|
||||||
context.subscriptions.push(disposable);
|
context.subscriptions.push(disposable);
|
||||||
|
|
||||||
let indentationRules = {
|
|
||||||
increaseIndentPattern: /(^.*\{[^}]*$)/,
|
|
||||||
decreaseIndentPattern: /^\s*\}/
|
|
||||||
};
|
|
||||||
|
|
||||||
languages.setLanguageConfiguration('css', {
|
|
||||||
wordPattern: /(#?-?\d*\.\d\w*%?)|(::?[\w-]*(?=[^,{;]*[,{]))|(([@#.!])?[\w-?]+%?|[@#!.])/g,
|
|
||||||
indentationRules: indentationRules
|
|
||||||
});
|
|
||||||
|
|
||||||
languages.setLanguageConfiguration('less', {
|
|
||||||
wordPattern: /(#?-?\d*\.\d\w*%?)|(::?[\w-]+(?=[^,{;]*[,{]))|(([@#.!])?[\w-?]+%?|[@#!.])/g,
|
|
||||||
indentationRules: indentationRules
|
|
||||||
});
|
|
||||||
|
|
||||||
languages.setLanguageConfiguration('scss', {
|
|
||||||
wordPattern: /(#?-?\d*\.\d\w*%?)|(::?[\w-]*(?=[^,{;]*[,{]))|(([@$#.!])?[\w-?]+%?|[@#!$.])/g,
|
|
||||||
indentationRules: indentationRules
|
|
||||||
});
|
|
||||||
|
|
||||||
client.onReady().then(() => {
|
client.onReady().then(() => {
|
||||||
context.subscriptions.push(initCompletionProvider());
|
context.subscriptions.push(initCompletionProvider());
|
||||||
});
|
});
|
||||||
|
|
|
@ -26,5 +26,10 @@
|
||||||
"start": "^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/",
|
"start": "^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/",
|
||||||
"end": "^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/"
|
"end": "^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"indentationRules": {
|
||||||
|
"increaseIndentPattern": "(^.*\\{[^}]*$)",
|
||||||
|
"decreaseIndentPattern": "^\\s*\\}"
|
||||||
|
},
|
||||||
|
"wordPattern": "(#?-?\\d*\\.\\d\\w*%?)|(::?[\\w-]*(?=[^,{;]*[,{]))|(([@#.!])?[\\w-?]+%?|[@#!.])"
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,5 +22,21 @@
|
||||||
{ "open": "\"", "close": "\"" },
|
{ "open": "\"", "close": "\"" },
|
||||||
{ "open": "<", "close": ">" },
|
{ "open": "<", "close": ">" },
|
||||||
{ "open": "{", "close": "}" }
|
{ "open": "{", "close": "}" }
|
||||||
]
|
],
|
||||||
|
"wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\s]+)",
|
||||||
|
"onEnterRules": [
|
||||||
|
{
|
||||||
|
"beforeText": { "pattern": "<(?!(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!\\/)>)[^<]*$", "flags": "i" },
|
||||||
|
"afterText": { "pattern": "^<\\/([_:\\w][_:\\w-.\\d]*)\\s*>", "flags": "i" },
|
||||||
|
"action": {
|
||||||
|
"indent": "indentOutdent"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"beforeText": { "pattern": "<(?!(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr))(\\w[\\w\\d]*)([^/>]*(?!\\/)>)[^<]*$", "flags": "i" },
|
||||||
|
"action": {
|
||||||
|
"indent": "indent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import * as nls from 'vscode-nls';
|
||||||
const localize = nls.loadMessageBundle();
|
const localize = nls.loadMessageBundle();
|
||||||
|
|
||||||
import {
|
import {
|
||||||
languages, ExtensionContext, IndentAction, Position, TextDocument, Range, CompletionItem, CompletionItemKind, SnippetString, workspace, extensions,
|
languages, ExtensionContext, Position, TextDocument, Range, CompletionItem, CompletionItemKind, SnippetString, workspace, extensions,
|
||||||
Disposable, FormattingOptions, CancellationToken, ProviderResult, TextEdit, CompletionContext, CompletionList, SemanticTokensLegend,
|
Disposable, FormattingOptions, CancellationToken, ProviderResult, TextEdit, CompletionContext, CompletionList, SemanticTokensLegend,
|
||||||
DocumentSemanticTokensProvider, DocumentRangeSemanticTokensProvider, SemanticTokens, window, commands
|
DocumentSemanticTokensProvider, DocumentRangeSemanticTokensProvider, SemanticTokens, window, commands
|
||||||
} from 'vscode';
|
} from 'vscode';
|
||||||
|
@ -15,7 +15,6 @@ import {
|
||||||
LanguageClientOptions, RequestType, TextDocumentPositionParams, DocumentRangeFormattingParams,
|
LanguageClientOptions, RequestType, TextDocumentPositionParams, DocumentRangeFormattingParams,
|
||||||
DocumentRangeFormattingRequest, ProvideCompletionItemsSignature, TextDocumentIdentifier, RequestType0, Range as LspRange, NotificationType, CommonLanguageClient
|
DocumentRangeFormattingRequest, ProvideCompletionItemsSignature, TextDocumentIdentifier, RequestType0, Range as LspRange, NotificationType, CommonLanguageClient
|
||||||
} from 'vscode-languageclient';
|
} from 'vscode-languageclient';
|
||||||
import { EMPTY_ELEMENTS } from './htmlEmptyTagsShared';
|
|
||||||
import { activateTagClosing } from './tagClosing';
|
import { activateTagClosing } from './tagClosing';
|
||||||
import { RequestService } from './requests';
|
import { RequestService } from './requests';
|
||||||
import { getCustomDataSource } from './customData';
|
import { getCustomDataSource } from './customData';
|
||||||
|
@ -197,40 +196,6 @@ export function startClient(context: ExtensionContext, newLanguageClient: Langua
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
languages.setLanguageConfiguration('html', {
|
|
||||||
indentationRules: {
|
|
||||||
increaseIndentPattern: /<(?!\?|(?:area|base|br|col|frame|hr|html|img|input|keygen|link|menuitem|meta|param|source|track|wbr)\b|[^>]*\/>)([-_\.A-Za-z0-9]+)(?=\s|>)\b[^>]*>(?!.*<\/\1>)|<!--(?!.*-->)|\{[^}"']*$/,
|
|
||||||
decreaseIndentPattern: /^\s*(<\/(?!html)[-_\.A-Za-z0-9]+\b[^>]*>|-->|\})/
|
|
||||||
},
|
|
||||||
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,
|
|
||||||
onEnterRules: [
|
|
||||||
{
|
|
||||||
beforeText: new RegExp(`<(?!(?:${EMPTY_ELEMENTS.join('|')}))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i'),
|
|
||||||
afterText: /^<\/([_:\w][_:\w-.\d]*)\s*>/i,
|
|
||||||
action: { indentAction: IndentAction.IndentOutdent }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
beforeText: new RegExp(`<(?!(?:${EMPTY_ELEMENTS.join('|')}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i'),
|
|
||||||
action: { indentAction: IndentAction.Indent }
|
|
||||||
}
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
languages.setLanguageConfiguration('handlebars', {
|
|
||||||
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,
|
|
||||||
onEnterRules: [
|
|
||||||
{
|
|
||||||
beforeText: new RegExp(`<(?!(?:${EMPTY_ELEMENTS.join('|')}))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i'),
|
|
||||||
afterText: /^<\/([_:\w][_:\w-.\d]*)\s*>/i,
|
|
||||||
action: { indentAction: IndentAction.IndentOutdent }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
beforeText: new RegExp(`<(?!(?:${EMPTY_ELEMENTS.join('|')}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i'),
|
|
||||||
action: { indentAction: IndentAction.Indent }
|
|
||||||
}
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
const regionCompletionRegExpr = /^(\s*)(<(!(-(-\s*(#\w*)?)?)?)?)?$/;
|
const regionCompletionRegExpr = /^(\s*)(<(!(-(-\s*(#\w*)?)?)?)?)?$/;
|
||||||
const htmlSnippetCompletionRegExpr = /^(\s*)(<(h(t(m(l)?)?)?)?)?$/;
|
const htmlSnippetCompletionRegExpr = /^(\s*)(<(h(t(m(l)?)?)?)?)?$/;
|
||||||
languages.registerCompletionItemProvider(documentSelector, {
|
languages.registerCompletionItemProvider(documentSelector, {
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
export const EMPTY_ELEMENTS: string[] = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr'];
|
|
|
@ -29,5 +29,25 @@
|
||||||
"start": "^\\s*<!--\\s*#region\\b.*-->",
|
"start": "^\\s*<!--\\s*#region\\b.*-->",
|
||||||
"end": "^\\s*<!--\\s*#endregion\\b.*-->"
|
"end": "^\\s*<!--\\s*#endregion\\b.*-->"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\s]+)",
|
||||||
|
"onEnterRules": [
|
||||||
|
{
|
||||||
|
"beforeText": { "pattern": "<(?!(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!\\/)>)[^<]*$", "flags": "i" },
|
||||||
|
"afterText": { "pattern": "^<\\/([_:\\w][_:\\w-.\\d]*)\\s*>", "flags": "i" },
|
||||||
|
"action": {
|
||||||
|
"indent": "indentOutdent"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"beforeText": { "pattern": "<(?!(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr))(\\w[\\w\\d]*)([^/>]*(?!\\/)>)[^<]*$", "flags": "i" },
|
||||||
|
"action": {
|
||||||
|
"indent": "indent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"indentationRules": {
|
||||||
|
"increaseIndentPattern": "<(?!\\?|(?:area|base|br|col|frame|hr|html|img|input|keygen|link|menuitem|meta|param|source|track|wbr)\\b|[^>]*\\/>)([-_\\.A-Za-z0-9]+)(?=\\s|>)\\b[^>]*>(?!.*<\\/\\1>)|<!--(?!.*-->)|\\{[^}\"']*$",
|
||||||
|
"decreaseIndentPattern": "^\\s*(<\\/(?!html)[-_\\.A-Za-z0-9]+\\b[^>]*>|-->|\\})"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import * as nls from 'vscode-nls';
|
||||||
const localize = nls.loadMessageBundle();
|
const localize = nls.loadMessageBundle();
|
||||||
|
|
||||||
import {
|
import {
|
||||||
workspace, window, languages, commands, ExtensionContext, extensions, Uri, LanguageConfiguration,
|
workspace, window, languages, commands, ExtensionContext, extensions, Uri,
|
||||||
Diagnostic, StatusBarAlignment, TextEditor, TextDocument, FormattingOptions, CancellationToken,
|
Diagnostic, StatusBarAlignment, TextEditor, TextDocument, FormattingOptions, CancellationToken,
|
||||||
ProviderResult, TextEdit, Range, Position, Disposable, CompletionItem, CompletionList, CompletionContext, Hover, MarkdownString,
|
ProviderResult, TextEdit, Range, Position, Disposable, CompletionItem, CompletionList, CompletionContext, Hover, MarkdownString,
|
||||||
} from 'vscode';
|
} from 'vscode';
|
||||||
|
@ -358,17 +358,6 @@ export function startClient(context: ExtensionContext, newLanguageClient: Langua
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const languageConfiguration: LanguageConfiguration = {
|
|
||||||
wordPattern: /("(?:[^\\\"]*(?:\\.)?)*"?)|[^\s{}\[\],:]+/,
|
|
||||||
indentationRules: {
|
|
||||||
increaseIndentPattern: /({+(?=([^"]*"[^"]*")*[^"}]*$))|(\[+(?=([^"]*"[^"]*")*[^"\]]*$))/,
|
|
||||||
decreaseIndentPattern: /^\s*[}\]],?\s*$/
|
|
||||||
}
|
|
||||||
};
|
|
||||||
languages.setLanguageConfiguration('json', languageConfiguration);
|
|
||||||
languages.setLanguageConfiguration('jsonc', languageConfiguration);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSchemaAssociations(_context: ExtensionContext): ISchemaAssociation[] {
|
function getSchemaAssociations(_context: ExtensionContext): ISchemaAssociation[] {
|
||||||
|
|
|
@ -14,5 +14,10 @@
|
||||||
{ "open": "'", "close": "'", "notIn": ["string"] },
|
{ "open": "'", "close": "'", "notIn": ["string"] },
|
||||||
{ "open": "\"", "close": "\"", "notIn": ["string", "comment"] },
|
{ "open": "\"", "close": "\"", "notIn": ["string", "comment"] },
|
||||||
{ "open": "`", "close": "`", "notIn": ["string", "comment"] }
|
{ "open": "`", "close": "`", "notIn": ["string", "comment"] }
|
||||||
]
|
],
|
||||||
|
"wordPattern": "(\"(?:[^\\\\\\\"]*(?:\\\\.)?)*\"?)|[^\\s{}\\[\\],:]+",
|
||||||
|
"indentationRules": {
|
||||||
|
"increaseIndentPattern": "({+(?=([^\"]*\"[^\"]*\")*[^\"}]*$))|(\\[+(?=([^\"]*\"[^\"]*\")*[^\"\\]]*$))",
|
||||||
|
"decreaseIndentPattern": "^\\s*[}\\]],?\\s*$"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,14 +22,15 @@
|
||||||
["\"", "\""],
|
["\"", "\""],
|
||||||
["'", "'"]
|
["'", "'"]
|
||||||
],
|
],
|
||||||
"indentationRules": {
|
|
||||||
"increaseIndentPattern": "(^.*\\{[^}]*$)",
|
|
||||||
"decreaseIndentPattern": "^\\s*\\}"
|
|
||||||
},
|
|
||||||
"folding": {
|
"folding": {
|
||||||
"markers": {
|
"markers": {
|
||||||
"start": "^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/",
|
"start": "^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/",
|
||||||
"end": "^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/"
|
"end": "^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
"indentationRules": {
|
||||||
|
"increaseIndentPattern": "(^.*\\{[^}]*$)",
|
||||||
|
"decreaseIndentPattern": "^\\s*\\}"
|
||||||
|
},
|
||||||
|
"wordPattern": "(#?-?\\d*\\.\\d\\w*%?)|(::?[\\w-]+(?=[^,{;]*[,{]))|(([@#.!])?[\\w-?]+%?|[@#!.])"
|
||||||
|
}
|
||||||
|
|
|
@ -49,5 +49,6 @@
|
||||||
"start": "^\\s*<!--\\s*#?region\\b.*-->",
|
"start": "^\\s*<!--\\s*#?region\\b.*-->",
|
||||||
"end": "^\\s*<!--\\s*#?endregion\\b.*-->"
|
"end": "^\\s*<!--\\s*#?endregion\\b.*-->"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"wordPattern": { "pattern": "(\\p{Alphabetic}|\\p{Number}|\\p{Nonspacing_Mark})(((\\p{Alphabetic}|\\p{Number}|\\p{Nonspacing_Mark})|[_])?(\\p{Alphabetic}|\\p{Number}|\\p{Nonspacing_Mark}))*", "flags": "ug" },
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,12 +52,7 @@ function registerMarkdownLanguageFeatures(
|
||||||
): vscode.Disposable {
|
): vscode.Disposable {
|
||||||
const selector: vscode.DocumentSelector = { language: 'markdown', scheme: '*' };
|
const selector: vscode.DocumentSelector = { language: 'markdown', scheme: '*' };
|
||||||
|
|
||||||
const charPattern = '(\\p{Alphabetic}|\\p{Number}|\\p{Nonspacing_Mark})';
|
|
||||||
|
|
||||||
return vscode.Disposable.from(
|
return vscode.Disposable.from(
|
||||||
vscode.languages.setLanguageConfiguration('markdown', {
|
|
||||||
wordPattern: new RegExp(`${charPattern}((${charPattern}|[_])?${charPattern})*`, 'ug'),
|
|
||||||
}),
|
|
||||||
vscode.languages.registerDocumentSymbolProvider(selector, symbolProvider),
|
vscode.languages.registerDocumentSymbolProvider(selector, symbolProvider),
|
||||||
vscode.languages.registerDocumentLinkProvider(selector, new LinkProvider()),
|
vscode.languages.registerDocumentLinkProvider(selector, new LinkProvider()),
|
||||||
vscode.languages.registerFoldingRangeProvider(selector, new MarkdownFoldingProvider(engine)),
|
vscode.languages.registerFoldingRangeProvider(selector, new MarkdownFoldingProvider(engine)),
|
||||||
|
|
|
@ -19,37 +19,4 @@ export function activate(context: vscode.ExtensionContext): any {
|
||||||
context.subscriptions.push(vscode.languages.registerCompletionItemProvider('php', new PHPCompletionItemProvider(), '>', '$'));
|
context.subscriptions.push(vscode.languages.registerCompletionItemProvider('php', new PHPCompletionItemProvider(), '>', '$'));
|
||||||
context.subscriptions.push(vscode.languages.registerHoverProvider('php', new PHPHoverProvider()));
|
context.subscriptions.push(vscode.languages.registerHoverProvider('php', new PHPHoverProvider()));
|
||||||
context.subscriptions.push(vscode.languages.registerSignatureHelpProvider('php', new PHPSignatureHelpProvider(), '(', ','));
|
context.subscriptions.push(vscode.languages.registerSignatureHelpProvider('php', new PHPSignatureHelpProvider(), '(', ','));
|
||||||
|
}
|
||||||
// need to set in the extension host as well as the completion provider uses it.
|
|
||||||
vscode.languages.setLanguageConfiguration('php', {
|
|
||||||
wordPattern: /(-?\d*\.\d\w*)|([^\-\`\~\!\@\#\%\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
|
|
||||||
onEnterRules: [
|
|
||||||
{
|
|
||||||
// e.g. /** | */
|
|
||||||
beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,
|
|
||||||
afterText: /^\s*\*\/$/,
|
|
||||||
action: { indentAction: vscode.IndentAction.IndentOutdent, appendText: ' * ' }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// e.g. /** ...|
|
|
||||||
beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,
|
|
||||||
action: { indentAction: vscode.IndentAction.None, appendText: ' * ' }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// e.g. * ...|
|
|
||||||
beforeText: /^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,
|
|
||||||
action: { indentAction: vscode.IndentAction.None, appendText: '* ' }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// e.g. */|
|
|
||||||
beforeText: /^(\t|(\ \ ))*\ \*\/\s*$/,
|
|
||||||
action: { indentAction: vscode.IndentAction.None, removeText: 1 }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// e.g. *-----*/|
|
|
||||||
beforeText: /^(\t|(\ \ ))*\ \*[^/]*\*\/\s*$/,
|
|
||||||
action: { indentAction: vscode.IndentAction.None, removeText: 1 }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
|
@ -33,5 +33,49 @@
|
||||||
"start": "^\\s*(#|\/\/)region\\b",
|
"start": "^\\s*(#|\/\/)region\\b",
|
||||||
"end": "^\\s*(#|\/\/)endregion\\b"
|
"end": "^\\s*(#|\/\/)endregion\\b"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\-\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)",
|
||||||
|
"onEnterRules": [
|
||||||
|
{
|
||||||
|
// e.g. /** | */
|
||||||
|
"beforeText": "^\\s*\\/\\*\\*(?!\\/)([^\\*]|\\*(?!\\/))*$",
|
||||||
|
"afterText": "^\\s*\\*\\/$",
|
||||||
|
"action": {
|
||||||
|
"indent": "indentOutdent",
|
||||||
|
"appendText": " * "
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// e.g. /** ...|
|
||||||
|
"beforeText": "^\\s*\\/\\*\\*(?!\\/)([^\\*]|\\*(?!\\/))*$",
|
||||||
|
"action": {
|
||||||
|
"indent": "none",
|
||||||
|
"appendText": " * "
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// e.g. * ...|
|
||||||
|
"beforeText": "^(\\t|(\\ \\ ))*\\ \\*(\\ ([^\\*]|\\*(?!\\/))*)?$",
|
||||||
|
"action": {
|
||||||
|
"indent": "none",
|
||||||
|
"appendText": "* ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// e.g. */|
|
||||||
|
"beforeText": "^(\\t|(\\ \\ ))*\\ \\*\\/\\s*$",
|
||||||
|
"action": {
|
||||||
|
"indent": "none",
|
||||||
|
"removeText": 1
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// e.g. *-----*/|
|
||||||
|
"beforeText": "^(\\t|(\\ \\ ))*\\ \\*[^/]*\\*\\/\\s*$",
|
||||||
|
"action": {
|
||||||
|
"indent": "none",
|
||||||
|
"removeText": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,5 +27,10 @@
|
||||||
"start": "^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/",
|
"start": "^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/",
|
||||||
"end": "^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/"
|
"end": "^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
"indentationRules": {
|
||||||
|
"increaseIndentPattern": "(^.*\\{[^}]*$)",
|
||||||
|
"decreaseIndentPattern": "^\\s*\\}"
|
||||||
|
},
|
||||||
|
"wordPattern": "(#?-?\\d*\\.\\d\\w*%?)|(::?[\\w-]*(?=[^,{;]*[,{]))|(([@$#.!])?[\\w-?]+%?|[@#!$.])"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue