summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua27
1 files changed, 27 insertions, 0 deletions
diff --git a/xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua b/xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua
index 5e24ec832..6ffb6b4f1 100644
--- a/xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua
+++ b/xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua
@@ -28,6 +28,7 @@ local sandbox_core_sandbox = sandbox_core_sandbox or {}
-- load modules
local sandbox = require("sandbox/sandbox")
local raise = require("sandbox/modules/raise")
+local history = require("project/history")
-- enter interactive mode
function sandbox_core_sandbox.interactive()
@@ -47,8 +48,34 @@ function sandbox_core_sandbox.interactive()
-- bind sandbox environment
-- setfenv(0, instance._PUBLIC)
+ local enable_readline = os.versioninfo().features.readline
+ local replhistory
+ if enable_readline then
+ -- clear history
+ readline.clear_history()
+
+ -- load history
+ replhistory = history.load("replhistory") or {}
+ for _, ln in ipairs(replhistory) do
+ readline.add_history(ln)
+ end
+ end
+
-- enter interactive mode with this new sandbox
sandbox.interactive(instance._PUBLIC)
+
+ if enable_readline then
+ -- save to history
+ local entries = readline.history_list()
+ if #entries > #replhistory then
+ for i = #replhistory+1, #entries do
+ history.save("replhistory", entries[i].line)
+ end
+ end
+
+ -- clear history
+ readline.clear_history()
+ end
end
-- return module