export ktxt2

This commit is contained in:
2021-10-14 20:59:41 -04:00
parent e11ed847aa
commit 9bc535b489
2 changed files with 32 additions and 7 deletions

View File

@@ -274,7 +274,7 @@
(function :Void newKissClass [&opt _]
(awaitLet [className (inputBox)]
(let [currentFile
.fileName .document activeTextEditor
activeTextEditor.document.fileName
currentFileDirectory
(Path.directory currentFile)
haxeFile

View File

@@ -28,11 +28,36 @@
[sourceText outputText]))
(function exportKtxt2Files [&opt _]
(infoMessage _)
(let [[sourceText outputText] (splitFileContents)
ktxt2Filename (haxe.io.Path.withoutDirectory activeTextEditor.document.fileName)
ktxt2FullFilename activeTextEditor.document.fileName
ktxt2Directory (haxe.io.Path.directory ktxt2FullFilename)
ktxt2Filename (haxe.io.Path.withoutDirectory ktxt2FullFilename)
[baseFilename sourceExt outputExt ktxt2Ext] (ktxt2Filename.split ".")
sourceFilename "${baseFilename}.${sourceExt}"
outputFilename "${baseFilename}.${outputExt}"]
(infoMessage "${sourceFilename}: $sourceText")
(infoMessage "${outputFilename}: $outputText")))
sourceFilename (joinPath ktxt2Directory "${baseFilename}.${sourceExt}")
outputFilename (joinPath ktxt2Directory "${baseFilename}.${outputExt}")]
// Use editors instead of File.saveContent for this, so the user can undo the export if
// it overwrites something!
(defMacro overwriteDocument [document content]
`(let [document ,document content ,content]
(awaitLet [editor (Vscode.window.showTextDocument document)]
(editor.edit
->e (e.replace (new Range (document.positionAt 0) (document.positionAt .length (document.getText))) content)))))
(function uriFor [filename]
(let [uri (Uri.file filename)]
(if (sys.FileSystem.exists filename)
uri
(uri.with (object scheme "untitled")))))
(awaitLet [sourceDocument
(Vscode.workspace.openTextDocument (uriFor sourceFilename))
sourceEditSuccess
(overwriteDocument sourceDocument sourceText)
outputDocument
(Vscode.workspace.openTextDocument (uriFor outputFilename))
outputEditSuccess
(overwriteDocument outputDocument outputText)]
(assert (and sourceEditSuccess outputEditSuccess))
(awaitLet [saveSourceSuccess
(sourceDocument.save)
saveOutputSuccess
(outputDocument.save)]
(assert (and saveSourceSuccess saveOutputSuccess))))))