From e13cc678d6092f77f5af918ebfbebce6e654dec4 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Sun, 3 Dec 2017 22:13:57 -0800 Subject: [PATCH] Copy OnEnter rules from html to php #39142 --- extensions/php/src/phpMain.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/extensions/php/src/phpMain.ts b/extensions/php/src/phpMain.ts index 320f9da2c52..406d7f36475 100644 --- a/extensions/php/src/phpMain.ts +++ b/extensions/php/src/phpMain.ts @@ -13,6 +13,8 @@ import PHPHoverProvider from './features/hoverProvider'; import PHPSignatureHelpProvider from './features/signatureHelpProvider'; import PHPValidationProvider from './features/validationProvider'; +const EMPTY_ELEMENTS: string[] = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr']; + export function activate(context: vscode.ExtensionContext): any { let validator = new PHPValidationProvider(context.workspaceState); @@ -23,7 +25,6 @@ export function activate(context: vscode.ExtensionContext): any { context.subscriptions.push(vscode.languages.registerHoverProvider('php', new PHPHoverProvider())); 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, @@ -53,6 +54,15 @@ export function activate(context: vscode.ExtensionContext): any { // e.g. *-----*/| beforeText: /^(\t|(\ \ ))*\ \*[^/]*\*\/\s*$/, action: { indentAction: vscode.IndentAction.None, removeText: 1 } + }, + { + beforeText: new RegExp(`<(?!(?:${EMPTY_ELEMENTS.join('|')}))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i'), + afterText: /^<\/([_:\w][_:\w-.\d]*)\s*>/i, + action: { indentAction: vscode.IndentAction.IndentOutdent } + }, + { + beforeText: new RegExp(`<(?!(?:${EMPTY_ELEMENTS.join('|')}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i'), + action: { indentAction: vscode.IndentAction.Indent } } ] });