From 9dae03b458d366591578906c33643beeb938c8d8 Mon Sep 17 00:00:00 2001 From: Mark Kittisopikul Date: Mon, 27 Nov 2023 23:59:06 -0500 Subject: [PATCH] Precompile REPLMode.repl_init, add force_compile --- src/REPLMode/REPLMode.jl | 2 +- src/precompile.jl | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/REPLMode/REPLMode.jl b/src/REPLMode/REPLMode.jl index 032a1b90be..6b3c33e499 100644 --- a/src/REPLMode/REPLMode.jl +++ b/src/REPLMode/REPLMode.jl @@ -563,7 +563,7 @@ function create_mode(repl::REPL.AbstractREPL, main::LineEdit.Prompt) mk = REPL.mode_keymap(main) shell_mode = nothing - for mode in Base.active_repl.interface.modes + for mode in repl.interface.modes if mode isa LineEdit.Prompt mode.prompt == "shell> " && (shell_mode = mode) end diff --git a/src/precompile.jl b/src/precompile.jl index ce2626e595..a4163c160e 100644 --- a/src/precompile.jl +++ b/src/precompile.jl @@ -161,7 +161,28 @@ let return nothing end + struct FakeTerminal <: REPL.Terminals.UnixTerminal + in_stream::IOBuffer + out_stream::IOBuffer + err_stream::IOBuffer + hascolor::Bool + raw::Bool + FakeTerminal() = new(IOBuffer(), IOBuffer(), IOBuffer(), false, true) + end + REPL.raw!(::FakeTerminal, raw::Bool) = raw + + function pkg_replmode_precompile() + term = FakeTerminal() + repl = REPL.LineEditREPL(term, true) + REPL.run_repl(repl) + REPLMode.repl_init(repl) + end + if Base.generating_output() + Base.Experimental.@force_compile + Pkg.__init__() pkg_precompile() + Pkg.REPLMode.__init__() + pkg_replmode_precompile() end end