forked from external/vscode-xml
Add Configuration Service
This commit is contained in:
parent
907fa71394
commit
a4366a5061
13 changed files with 103 additions and 64 deletions
|
|
@ -8,7 +8,7 @@ import { XmlFormattingEditProvider } from "../xml-formatting-edit-provider";
|
|||
import { XmlFormattingOptionsFactory } from "../xml-formatting-options";
|
||||
|
||||
export function formatAsXml(editor: TextEditor, edit: TextEditorEdit): void {
|
||||
const xmlFormattingEditProvider = new XmlFormattingEditProvider(workspace.getConfiguration(constants.extensionPrefix), XmlFormatterFactory.getXmlFormatter());
|
||||
const xmlFormattingEditProvider = new XmlFormattingEditProvider(XmlFormatterFactory.getXmlFormatter());
|
||||
const formattingOptions = {
|
||||
insertSpaces: <boolean>editor.options.insertSpaces,
|
||||
tabSize: <number>editor.options.tabSize
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ export function minifyXml(editor: TextEditor, edit: TextEditorEdit): void {
|
|||
const xmlFormattingOptions = XmlFormattingOptionsFactory.getXmlFormattingOptions({
|
||||
insertSpaces: <boolean>editor.options.insertSpaces,
|
||||
tabSize: <number>editor.options.tabSize
|
||||
}, editor.document.eol);
|
||||
}, editor.document);
|
||||
|
||||
const endPosition = editor.document.lineAt(editor.document.lineCount - 1).rangeIncludingLineBreak.end;
|
||||
const range = new Range(editor.document.positionAt(0), endPosition);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import { workspace } from "vscode";
|
||||
|
||||
import { Configuration } from "../common";
|
||||
import * as constants from "../constants";
|
||||
import { ClassicXmlFormatter } from "./formatters/classic-xml-formatter";
|
||||
import { V2XmlFormatter } from "./formatters/v2-xml-formatter";
|
||||
|
|
@ -19,7 +20,7 @@ export class XmlFormatterFactory {
|
|||
return XmlFormatterFactory._xmlFormatter;
|
||||
}
|
||||
|
||||
const xmlFormatterImplementationSetting = workspace.getConfiguration(constants.extensionPrefix).get<string>("xmlFormatterImplementation");
|
||||
const xmlFormatterImplementationSetting = Configuration.xmlFormatterImplementation;
|
||||
let xmlFormatterImplementation: XmlFormatter;
|
||||
|
||||
switch (xmlFormatterImplementationSetting) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { workspace } from "vscode";
|
||||
import {
|
||||
CancellationToken, DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, EndOfLine,
|
||||
FormattingOptions, ProviderResult, Range, TextDocument, TextEdit, WorkspaceConfiguration
|
||||
FormattingOptions, ProviderResult, Range, TextDocument, TextEdit
|
||||
} from "vscode";
|
||||
|
||||
import * as constants from "../constants";
|
||||
|
|
@ -11,7 +11,6 @@ import { XmlFormattingOptionsFactory } from "./xml-formatting-options";
|
|||
export class XmlFormattingEditProvider implements DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider {
|
||||
|
||||
constructor(
|
||||
public workspaceConfiguration: WorkspaceConfiguration,
|
||||
public xmlFormatter: XmlFormatter
|
||||
) { }
|
||||
|
||||
|
|
@ -23,12 +22,9 @@ export class XmlFormattingEditProvider implements DocumentFormattingEditProvider
|
|||
}
|
||||
|
||||
provideDocumentRangeFormattingEdits(document: TextDocument, range: Range, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]> {
|
||||
// override global configuration (issue #128)
|
||||
this.workspaceConfiguration = workspace.getConfiguration(constants.extensionPrefix, document.uri);
|
||||
|
||||
let xml = document.getText(range);
|
||||
|
||||
xml = this.xmlFormatter.formatXml(xml, XmlFormattingOptionsFactory.getXmlFormattingOptions(options, document.eol));
|
||||
xml = this.xmlFormatter.formatXml(xml, XmlFormattingOptionsFactory.getXmlFormattingOptions(options, document));
|
||||
|
||||
return [ TextEdit.replace(range, xml) ];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { workspace } from "vscode";
|
||||
import { EndOfLine, FormattingOptions } from "vscode";
|
||||
import { EndOfLine, FormattingOptions, TextDocument } from "vscode";
|
||||
|
||||
import { Configuration } from "../common";
|
||||
import * as constants from "../constants";
|
||||
|
||||
export interface XmlFormattingOptions {
|
||||
|
|
@ -12,15 +12,13 @@ export interface XmlFormattingOptions {
|
|||
}
|
||||
|
||||
export class XmlFormattingOptionsFactory {
|
||||
static getXmlFormattingOptions(formattingOptions: FormattingOptions, eol: EndOfLine): XmlFormattingOptions {
|
||||
const config = workspace.getConfiguration(constants.extensionPrefix);
|
||||
|
||||
static getXmlFormattingOptions(formattingOptions: FormattingOptions, document: TextDocument): XmlFormattingOptions {
|
||||
return {
|
||||
editorOptions: formattingOptions,
|
||||
newLine: (eol === EndOfLine.CRLF) ? "\r\n" : "\n",
|
||||
removeCommentsOnMinify: config.get<boolean>(constants.configKeys.removeCommentsOnMinify),
|
||||
splitAttributesOnFormat: config.get<boolean>(constants.configKeys.splitAttributesOnFormat),
|
||||
splitXmlnsOnFormat: config.get<boolean>(constants.configKeys.splitXmlnsOnFormat)
|
||||
newLine: (document.eol === EndOfLine.CRLF) ? "\r\n" : "\n",
|
||||
removeCommentsOnMinify: Configuration.removeCommentsOnMinify(document.uri),
|
||||
splitAttributesOnFormat: Configuration.splitAttributesOnFormat(document.uri),
|
||||
splitXmlnsOnFormat: Configuration.splitXmlnsOnFormat(document.uri)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue