Make XMLNS Split Optional
New setting: xmlTools.slpitXmlnsOnFormat
This commit is contained in:
parent
721f50cc37
commit
08c81f7d16
4 changed files with 58 additions and 24 deletions
|
|
@ -2,21 +2,32 @@
|
|||
|
||||
import * as vsc from 'vscode';
|
||||
import { RangeUtil } from '../utils/RangeUtil';
|
||||
import { XmlFormatter } from '../services/XmlFormatter';
|
||||
import { XmlFormatter, IXmlFormatterOptions } from '../services/XmlFormatter';
|
||||
|
||||
export class XmlDocumentFormattingEditProvider implements vsc.DocumentFormattingEditProvider {
|
||||
const CFG_SECTION: string = 'xmlTools';
|
||||
const CFG_SPLIT_NAMESPACES: string = 'splitXmlnsOnFormat';
|
||||
|
||||
export class XmlFormattingEditProvider implements vsc.DocumentFormattingEditProvider, vsc.DocumentRangeFormattingEditProvider {
|
||||
provideDocumentFormattingEdits(document: vsc.TextDocument, options: vsc.FormattingOptions): vsc.TextEdit[] {
|
||||
let range = RangeUtil.getRangeForDocument(document);
|
||||
let formatter = new XmlFormatter(options.insertSpaces, options.tabSize);
|
||||
let xml = formatter.format(document.getText());
|
||||
|
||||
return [ vsc.TextEdit.replace(range, xml) ];
|
||||
return this._provideFormattingEdits(document, range, options);
|
||||
}
|
||||
}
|
||||
|
||||
export class XmlRangeFormattingEditProvider implements vsc.DocumentRangeFormattingEditProvider {
|
||||
|
||||
provideDocumentRangeFormattingEdits(document: vsc.TextDocument, range: vsc.Range, options: vsc.FormattingOptions): vsc.TextEdit[] {
|
||||
let formatter = new XmlFormatter(options.insertSpaces, options.tabSize);
|
||||
return this._provideFormattingEdits(document, range, options);
|
||||
}
|
||||
|
||||
private _provideFormattingEdits(document: vsc.TextDocument, range: vsc.Range, options: vsc.FormattingOptions): vsc.TextEdit[] {
|
||||
let splitNamespaces: boolean = vsc.workspace.getConfiguration(CFG_SECTION).get<boolean>(CFG_SPLIT_NAMESPACES, true);
|
||||
|
||||
let formatterOptions: IXmlFormatterOptions = {
|
||||
preferSpaces: options.insertSpaces,
|
||||
tabSize: options.tabSize,
|
||||
splitNamespaces: splitNamespaces
|
||||
};
|
||||
|
||||
let formatter = new XmlFormatter(formatterOptions);
|
||||
let xml = formatter.format(document.getText());
|
||||
|
||||
return [ vsc.TextEdit.replace(range, xml) ];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue