@@ -717,7 +717,7 @@ function history_move(s::Union{LineEdit.MIState,LineEdit.PrefixSearchState}, his
717717 hist. last_mode = nothing
718718 hist. last_buffer = IOBuffer ()
719719 else
720- if haskey (hist. mode_mapping, hist. modes[idx])
720+ if haskey (hist. mode_mapping, hist. modes[idx]) || hist . modes[idx] == :pkg && ! isnothing ( load_pkg ())
721721 LineEdit. transition (s, hist. mode_mapping[hist. modes[idx]]) do
722722 LineEdit. replace_line (s, hist. history[idx])
723723 end
@@ -1130,25 +1130,23 @@ function setup_interface(
11301130 end ,
11311131 ' ]' => function (s:: MIState ,o... )
11321132 if isempty (s) || position (LineEdit. buffer (s)) == 0
1133- pkgid = Base. PkgId (Base. UUID (" 44cfe95a-1eb2-52ea-b672-e2afdf69b78f" ), " Pkg" )
1134- if Base. locate_package (pkgid) != = nothing # Only try load Pkg if we can find it
1135- Pkg = Base. require (pkgid)
1136- # Pkg should have loaded its REPL mode by now, let's find it so we can transition to it.
1137- pkg_mode = nothing
1138- for mode in repl. interface. modes
1139- if mode isa LineEdit. Prompt && mode. complete isa Pkg. REPLMode. PkgCompletionProvider
1140- pkg_mode = mode
1141- break
1142- end
1133+ Pkg = load_pkg ()
1134+ Pkg === nothing && return
1135+ # Pkg should have loaded its REPL mode by now, let's find it so we can transition to it.
1136+ pkg_mode = nothing
1137+ for mode in repl. interface. modes
1138+ if mode isa LineEdit. Prompt && mode. complete isa Pkg. REPLMode. PkgCompletionProvider
1139+ pkg_mode = mode
1140+ break
11431141 end
1144- # TODO : Cache the `pkg_mode`?
1145- if pkg_mode != = nothing
1146- buf = copy (LineEdit. buffer (s))
1147- transition (s, pkg_mode) do
1148- LineEdit. state (s, pkg_mode). input_buffer = buf
1149- end
1150- return
1142+ end
1143+ # TODO : Cache the `pkg_mode`?
1144+ if pkg_mode != = nothing
1145+ buf = copy (LineEdit. buffer (s))
1146+ transition (s, pkg_mode) do
1147+ LineEdit. state (s, pkg_mode). input_buffer = buf
11511148 end
1149+ return
11521150 end
11531151 end
11541152 edit_insert (s, ' ]' )
@@ -1337,6 +1335,15 @@ function setup_interface(
13371335 return ModalInterface (allprompts)
13381336end
13391337
1338+ function load_pkg ()
1339+ pkgid = Base. PkgId (Base. UUID (" 44cfe95a-1eb2-52ea-b672-e2afdf69b78f" ), " Pkg" )
1340+ if Base. locate_package (pkgid) != = nothing # Only try load Pkg if we can find it
1341+ Pkg = Base. require (pkgid)
1342+ return Pkg
1343+ end
1344+ return nothing
1345+ end
1346+
13401347function run_frontend (repl:: LineEditREPL , backend:: REPLBackendRef )
13411348 repl. frontend_task = current_task ()
13421349 d = REPLDisplay (repl)
0 commit comments