Skip to content

Commit 73c50ef

Browse files
fbriconNikolasKomonen
authored andcommitted
Indent node content on enter (#53)
Signed-off-by: Fred Bricon <fbricon@gmail.com>
1 parent 32048b3 commit 73c50ef

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

src/extension.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import { prepareExecutable } from './javaServerStarter';
1414
import { LanguageClientOptions, RevealOutputChannelOn, LanguageClient, DidChangeConfigurationNotification, RequestType, TextDocumentPositionParams } from 'vscode-languageclient';
1515
import * as requirements from './requirements';
16-
import { workspace, window, commands, ExtensionContext, TextDocument, Position, WorkspaceConfiguration } from "vscode";
16+
import { languages, IndentAction, workspace, window, commands, ExtensionContext, TextDocument, Position, WorkspaceConfiguration } from "vscode";
1717
import * as path from 'path';
1818
import * as os from 'os';
1919
import { activateTagClosing } from './tagClosing';
@@ -66,16 +66,31 @@ export function activate(context: ExtensionContext) {
6666
return languageClient.sendRequest(TagCloseRequest.type, param);
6767
};
6868

69-
disposable = activateTagClosing(tagRequestor, { xml: true}, 'xml.completion.autoCloseTags');
69+
disposable = activateTagClosing(tagRequestor, { xml: true }, 'xml.completion.autoCloseTags');
7070
toDispose.push(disposable);
7171
});
72+
languages.setLanguageConfiguration('xml', {
73+
onEnterRules: [
74+
{
75+
beforeText: new RegExp(`<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i'),
76+
afterText: /^<\/([_:\w][_:\w-.\d]*)\s*>/i,
77+
action: { indentAction: IndentAction.IndentOutdent }
78+
},
79+
{
80+
beforeText: new RegExp(`<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i'),
81+
action: { indentAction: IndentAction.Indent }
82+
}
83+
],
84+
});
85+
86+
7287
});
7388

7489
function getSettings(): JSON {
7590
let configXML = workspace.getConfiguration();
7691
configXML = configXML.get('xml');
7792
let x = JSON.stringify(configXML);
78-
let settings : JSON = JSON.parse(x);
93+
let settings: JSON = JSON.parse(x);
7994
settings['logs']['file'] = logfile;
8095

8196
return settings;

0 commit comments

Comments
 (0)