|
13 | 13 | import { prepareExecutable } from './javaServerStarter'; |
14 | 14 | import { LanguageClientOptions, RevealOutputChannelOn, LanguageClient, DidChangeConfigurationNotification, RequestType, TextDocumentPositionParams } from 'vscode-languageclient'; |
15 | 15 | 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"; |
17 | 17 | import * as path from 'path'; |
18 | 18 | import * as os from 'os'; |
19 | 19 | import { activateTagClosing } from './tagClosing'; |
@@ -66,16 +66,31 @@ export function activate(context: ExtensionContext) { |
66 | 66 | return languageClient.sendRequest(TagCloseRequest.type, param); |
67 | 67 | }; |
68 | 68 |
|
69 | | - disposable = activateTagClosing(tagRequestor, { xml: true}, 'xml.completion.autoCloseTags'); |
| 69 | + disposable = activateTagClosing(tagRequestor, { xml: true }, 'xml.completion.autoCloseTags'); |
70 | 70 | toDispose.push(disposable); |
71 | 71 | }); |
| 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 | + |
72 | 87 | }); |
73 | 88 |
|
74 | 89 | function getSettings(): JSON { |
75 | 90 | let configXML = workspace.getConfiguration(); |
76 | 91 | configXML = configXML.get('xml'); |
77 | 92 | let x = JSON.stringify(configXML); |
78 | | - let settings : JSON = JSON.parse(x); |
| 93 | + let settings: JSON = JSON.parse(x); |
79 | 94 | settings['logs']['file'] = logfile; |
80 | 95 |
|
81 | 96 | return settings; |
|
0 commit comments