diff --git a/projects/kiss-vscode/config/KissConfig.hx b/projects/kiss-vscode/config/KissConfig.hx index 2693949f..b39dc422 100644 --- a/projects/kiss-vscode/config/KissConfig.hx +++ b/projects/kiss-vscode/config/KissConfig.hx @@ -15,6 +15,7 @@ import sys.FileSystem; import ktxt2.KTxt2; import re_flex.R; import kiss_tools.KeyShortcutHandler; +import JSDomExterns; using haxe.io.Path; using StringTools; diff --git a/projects/kiss-vscode/config/KissConfig.kiss b/projects/kiss-vscode/config/KissConfig.kiss index 067baca0..0f759f20 100644 --- a/projects/kiss-vscode/config/KissConfig.kiss +++ b/projects/kiss-vscode/config/KissConfig.kiss @@ -249,4 +249,10 @@ (#unless test (var :Array conversions []) - (function registerConversion [:KTxt2Conversion conversion] (conversions.push conversion))) \ No newline at end of file + (function registerConversion [:KTxt2Conversion conversion] (conversions.push conversion))) + + +(function quickWebview [] + (let [dom (new JSDOM "

Hello world

") + document dom.window.document] + document)) \ No newline at end of file diff --git a/projects/kiss-vscode/src/JSDomExterns.hx b/projects/kiss-vscode/src/JSDomExterns.hx new file mode 100644 index 00000000..6febc85e --- /dev/null +++ b/projects/kiss-vscode/src/JSDomExterns.hx @@ -0,0 +1,11 @@ +import js.html.Document; + +typedef JSDOMWindow = { + document:Document +}; + +@:jsRequire("jsdom") +extern class JSDOM { + function new(html:String); + var window:JSDOMWindow; +} diff --git a/projects/kiss-vscode/src/Main.kiss b/projects/kiss-vscode/src/Main.kiss index 47fe6a05..a68dafc6 100644 --- a/projects/kiss-vscode/src/Main.kiss +++ b/projects/kiss-vscode/src/Main.kiss @@ -100,6 +100,8 @@ // install all of the user's Node dependencies: (when (FileSystem.exists (joinPath activeConfigDir "package.json")) (npmSafeTrySpawnSync ["npm" "install"] handleConfigFailure)) + // install built-in node dependencies: + (npmSafeTrySpawnSync ["npm" "install" "jsdom"] handleConfigFailure) // Run the haxe compiler: (trySpawnSync "haxe" ["build.hxml"] (object cwd activeConfigDir) handleConfigFailure) diff --git a/projects/kiss-vscode/src/Util.kiss b/projects/kiss-vscode/src/Util.kiss index c25bc790..0bd5e0b6 100644 --- a/projects/kiss-vscode/src/Util.kiss +++ b/projects/kiss-vscode/src/Util.kiss @@ -114,6 +114,7 @@ (openFile dirOrFile))))))) // This has to be a macro so it can return from tryLoadConfig +// TODO this macro should use gensyms (defMacro trySpawnSync [command args options onError] `(let [command ,command args ,args