From 4ab78fb3f4f27d0b21778cc497283afd9fe37da6 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Mon, 25 Oct 2021 20:28:24 -0400 Subject: [PATCH] AsyncEmbeddedScript allow libpath --- kiss/src/kiss/AsyncEmbeddedScript.hx | 9 +++++++-- kiss/src/kiss/Kiss.hx | 7 ++++++- projects/hollywoo-flixel/src/hollywoo_flixel/DSL.kiss | 0 projects/kiss-vscode/src/ktxt2/KTxt2Editor.kiss | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 projects/hollywoo-flixel/src/hollywoo_flixel/DSL.kiss diff --git a/kiss/src/kiss/AsyncEmbeddedScript.hx b/kiss/src/kiss/AsyncEmbeddedScript.hx index ec397d53..584d6a6c 100644 --- a/kiss/src/kiss/AsyncEmbeddedScript.hx +++ b/kiss/src/kiss/AsyncEmbeddedScript.hx @@ -8,6 +8,7 @@ import sys.io.File; import haxe.io.Path; #end import kiss.Kiss; +import kiss.Prelude; import kiss.cloner.Cloner; typedef Continuation = () -> Void; @@ -40,7 +41,7 @@ class AsyncEmbeddedScript { public function new() {} #if macro - public static function build(dslFile:String, scriptFile:String):Array { + public static function build(dslHaxelib:String, dslFile:String, scriptFile:String):Array { var k = Kiss.defaultKissState(); var classPath = Context.getPosInfos(Context.currentPos()).file; @@ -50,11 +51,15 @@ class AsyncEmbeddedScript { var commandList:Array = []; + if (dslHaxelib.length > 0) { + dslFile = Path.join([Prelude.libPath(dslHaxelib), dslFile]); + } + // This brings in the DSL's functions and global variables. // As a side-effect, it also fills the KissState with the macros and reader macros that make the DSL syntax classFields = classFields.concat(Kiss.build(dslFile, k)); - scriptFile = Path.join([loadingDirectory, scriptFile]); + scriptFile = Path.join([loadingDirectory, scriptFile]); Reader.readAndProcess(Stream.fromFile(scriptFile), k, (nextExp) -> { var expr = Kiss.readerExpToHaxeExpr(nextExp, k); diff --git a/kiss/src/kiss/Kiss.hx b/kiss/src/kiss/Kiss.hx index d662bbb0..54dd4855 100644 --- a/kiss/src/kiss/Kiss.hx +++ b/kiss/src/kiss/Kiss.hx @@ -199,7 +199,12 @@ class Kiss { if (loadingDirectory == null) loadingDirectory = k.loadingDirectory; - var fullPath = Path.join([loadingDirectory, kissFile]); + var fullPath = if (Path.isAbsolute(kissFile)) { + kissFile; + } else { + Path.join([loadingDirectory, kissFile]); + }; + if (k.loadedFiles.exists(fullPath)) { return k.loadedFiles[fullPath]; } diff --git a/projects/hollywoo-flixel/src/hollywoo_flixel/DSL.kiss b/projects/hollywoo-flixel/src/hollywoo_flixel/DSL.kiss new file mode 100644 index 00000000..e69de29b diff --git a/projects/kiss-vscode/src/ktxt2/KTxt2Editor.kiss b/projects/kiss-vscode/src/ktxt2/KTxt2Editor.kiss index 1e486cd9..89e5a90f 100644 --- a/projects/kiss-vscode/src/ktxt2/KTxt2Editor.kiss +++ b/projects/kiss-vscode/src/ktxt2/KTxt2Editor.kiss @@ -24,7 +24,7 @@ (updateContent state.text))) (var &mut :Map editTimeoutHandles (new Map)) -(var EDIT_TIMEOUT_MILLI 1000) +(var EDIT_TIMEOUT_MILLI 2000) (function :Void addEditTimeout [idx :Void->Void handler] (whenLet [activeTimeoutForIndex (dictGet editTimeoutHandles idx)] (window.clearTimeout activeTimeoutForIndex))