diff --git a/kiss/src/kiss/Prelude.hx b/kiss/src/kiss/Prelude.hx index 699bb8f8..90dec7af 100644 --- a/kiss/src/kiss/Prelude.hx +++ b/kiss/src/kiss/Prelude.hx @@ -364,8 +364,12 @@ class Prelude { } #if (sys || hxnodejs) - public static function fsMemoize(func:Function, funcName:String, ?caller:Dynamic):Function { + public static function fsMemoize(func:Function, funcName:String, cacheDirectory = "", ?caller:Dynamic):Function { var fileName = '${funcName}.memoized'; + if (cacheDirectory.length > 0) { + FileSystem.createDirectory(cacheDirectory); + fileName = '$cacheDirectory/$fileName'; + } if (!FileSystem.exists(fileName)) File.saveContent(fileName, "{}"); @@ -539,7 +543,21 @@ class Prelude { } #if (sys || hxnodejs) - public static var cachedConvertToHScript:String->String = cast(fsMemoize(convertToHScript, "convertToHScript")); + public static function userHome() { + var msysHome = Sys.getEnv("MSYSHOME"); + var home = Sys.getEnv("HOME"); + var userProfile = Sys.getEnv("UserProfile"); + return if (msysHome != null) + msysHome; + else if (home != null) + home; + else if (userProfile != null) + userProfile; + else + throw "Cannot find user's home directory"; + } + + public static var cachedConvertToHScript:String->String = cast(fsMemoize(convertToHScript, "convertToHScript", '${userHome()}/.kiss-cache')); #end public static function getTarget():KissTarget { diff --git a/projects/kiss-vscode/kiss-vscode-0.0.18.vsix b/projects/kiss-vscode/kiss-vscode-0.0.18.vsix index bb5238a4..4ad07bd8 100644 Binary files a/projects/kiss-vscode/kiss-vscode-0.0.18.vsix and b/projects/kiss-vscode/kiss-vscode-0.0.18.vsix differ