blob: 3b624113648d01f04554b29c25470876f77ed616 [file]
/*---------------------------------------------------------------------------------------------
* Copyright (c) 2020 DeltaXML Ltd. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode'
import { XPathDocumentChangeHandler } from './xPathDocumentChangeHandler'
import { GlobalInstructionData } from './xslLexer'
export interface TagRenameEdit {
range: vscode.Range
text: string
fullTagName: string
}
export class DocumentChangeHandler {
public static lastActiveXMLEditor: vscode.TextEditor | null = null
public static lastActiveXMLNonXSLEditor: vscode.TextEditor | null = null
public static lastXMLDocumentGlobalData: GlobalInstructionData[] = []
public static isWindowsOS: boolean | undefined
private onDidChangeRegistration: vscode.Disposable | null = null
private xmlDocumentRegistered = false
private xpathDocumentChangeHanlder: XPathDocumentChangeHandler | null = null
public registerXMLEditor = (editor: vscode.TextEditor | undefined) => {
if (editor) {
this.registerXMLDocument(editor)
} else {
}
}
private getXPathDocumentChangeHandler() {
if (this.xpathDocumentChangeHanlder === null) {
this.xpathDocumentChangeHanlder = new XPathDocumentChangeHandler()
}
return this.xpathDocumentChangeHanlder
}
private registerXMLDocument = (editor: vscode.TextEditor) => {
const document = editor.document
let isXPathDocument = document.languageId === 'dfdl'
if (
this.xmlDocumentRegistered &&
!isXPathDocument &&
this.onDidChangeRegistration
) {
this.onDidChangeRegistration.dispose()
this.xmlDocumentRegistered = false
}
if (isXPathDocument && !this.xmlDocumentRegistered) {
this.xmlDocumentRegistered = true
this.onDidChangeRegistration = vscode.workspace.onDidChangeTextDocument(
(e) => this.getXPathDocumentChangeHandler().onDocumentChange(e)
)
}
}
}