diff --git a/projects/kiss-vscode/config/KissConfig.kiss b/projects/kiss-vscode/config/KissConfig.kiss index acd2ea7b..7d40d313 100644 --- a/projects/kiss-vscode/config/KissConfig.kiss +++ b/projects/kiss-vscode/config/KissConfig.kiss @@ -208,19 +208,25 @@ (loadFrom "kiss-vscode" "src/commands/KissTools.kiss") (loadFrom "kiss-vscode" "src/commands/ExtensionTools.kiss") -(function :Void registerBuiltins [] - (set Prelude.printStr ->:Void s (infoMessage s)) - // In this file: - (registerCommand "[K]iss: Run a Kiss-VSCode [c]ommand" runCommand) - (registerCommand "[K]iss: Re-run [l]ast Kiss-VSCode command" runLastCommand) - (registerCommand "[K]iss: Run a keyboard [s]hortcut command" runKeyboardShortcut) - // KissTools.kiss: - (registerCommand "[K]iss: [e]valuate and print an expression" evalAndPrint) - (registerCommand "[K]iss: create [n]ew kiss class" newKissClass) - (registerCommand "[K]iss: open corresponding .kiss/.hx [f]ile" showCorrespondingFile) - // ExtensionTools.kiss: - (registerCommand "[K]iss: [u]pdate Kiss-VSCode" updateKissVscode) - (registerCommand "[K]iss: [t]est and [u]pdate Kiss-VSCode" testAndUpdateKissVscode)) +// Provided from Main.kiss via (set): +(var &mut :Command tryLoadConfig) + +(function :Void registerBuiltins [&opt leaderKeys] + (unless leaderKeys (set leaderKeys "")) + (let [prefix "Kiss-VSCode:$(if leaderKeys " [${leaderKeys}]" "")"] + // In Main.kiss: + (registerCommand "${prefix} [r]eload Config.kiss" tryLoadConfig) + // In this file: + (registerCommand "${prefix} [P]ick and run a command" runCommand) + (registerCommand "${prefix} Re-run [l]ast command" runLastCommand) + (registerCommand "${prefix} Run a keyboard [s]hortcut command" runKeyboardShortcut) + // KissTools.kiss: + (registerCommand "${prefix} [e]valuate and print an expression" evalAndPrint) + (registerCommand "${prefix} create [n]ew kiss class" newKissClass) + (registerCommand "${prefix} open corresponding .kiss/.hx [f]ile" showCorrespondingFile) + // ExtensionTools.kiss: + (registerCommand "${prefix} [u]pdate Kiss-VSCode" updateKissVscode) + (registerCommand "${prefix} [t]est and [u]pdate Kiss-VSCode" testAndUpdateKissVscode))) // TODO standardize this with KissInterp (function :Void prepareInterp [] diff --git a/projects/kiss-vscode/config/default/Config.kiss b/projects/kiss-vscode/config/default/Config.kiss index 61ae7d2d..ee16a1d3 100644 --- a/projects/kiss-vscode/config/default/Config.kiss +++ b/projects/kiss-vscode/config/default/Config.kiss @@ -1,2 +1,3 @@ (function init [] + (registerBuiltins) (return)) diff --git a/projects/kiss-vscode/config/example/Config.kiss b/projects/kiss-vscode/config/example/Config.kiss index fe4a65a9..148a826c 100644 --- a/projects/kiss-vscode/config/example/Config.kiss +++ b/projects/kiss-vscode/config/example/Config.kiss @@ -1,4 +1,5 @@ (function :Void init [] + (registerBuiltins) (registerCommand "print a nice message" (lambda :Void [&opt selectedText] (infoMessage "Hello world!") diff --git a/projects/kiss-vscode/src/Main.hx b/projects/kiss-vscode/src/Main.hx index 41d8860b..366565d4 100644 --- a/projects/kiss-vscode/src/Main.hx +++ b/projects/kiss-vscode/src/Main.hx @@ -24,6 +24,7 @@ typedef KissConfig = { runCommand:Command, runLastCommand:Command, runKeyboardShortcut:Command, + tryLoadConfig:Command, #if !test conversions:Array, #end diff --git a/projects/kiss-vscode/src/Main.kiss b/projects/kiss-vscode/src/Main.kiss index 201dd4c5..12aabd45 100644 --- a/projects/kiss-vscode/src/Main.kiss +++ b/projects/kiss-vscode/src/Main.kiss @@ -79,8 +79,8 @@ (File.copy activeConfigFile uniqueConfigFile) (set config (the KissConfig .KissConfig (Node.require uniqueConfigFile))) // (FileSystem.deleteFile uniqueConfigFile) - (config.registerBuiltins) - (config.registerCommand "[K]iss: [r]eload Kiss config" tryLoadConfig) + (set Prelude.printStr ->:Void s (Vscode.window.showInformationMessage s)) + (set config.tryLoadConfig tryLoadConfig) (config.prepareInterp) // User-defined init: (config.init)