diff --git a/base/sysimg.jl b/base/sysimg.jl index b0eeffa5757bae..3bb79b0fde8423 100644 --- a/base/sysimg.jl +++ b/base/sysimg.jl @@ -70,9 +70,6 @@ let # 5-depth packages :Downloads, - - # 6-depth packages - :Pkg, ] # PackageCompiler can filter out stdlibs so it can be empty maxlen = maximum(textwidth.(string.(stdlibs)); init=0) diff --git a/contrib/generate_precompile.jl b/contrib/generate_precompile.jl index c99e6c646ec1ce..658a2ec66b824a 100644 --- a/contrib/generate_precompile.jl +++ b/contrib/generate_precompile.jl @@ -147,16 +147,6 @@ if Artifacts !== nothing """ end - -Pkg = get(Base.loaded_modules, - Base.PkgId(Base.UUID("44cfe95a-1eb2-52ea-b672-e2afdf69b78f"), "Pkg"), - nothing) - -if Pkg !== nothing - # TODO: Split Pkg precompile script into REPL and script part - repl_script = Pkg.precompile_script * repl_script # do larger workloads first for better parallelization -end - FileWatching = get(Base.loaded_modules, Base.PkgId(Base.UUID("7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"), "FileWatching"), nothing) @@ -179,7 +169,6 @@ end const JULIA_PROMPT = "julia> " -const PKG_PROMPT = "pkg> " const SHELL_PROMPT = "shell> " const HELP_PROMPT = "help?> " diff --git a/pkgimage.mk b/pkgimage.mk index caf30a91c1d18e..13a27d83dfed8f 100644 --- a/pkgimage.mk +++ b/pkgimage.mk @@ -114,7 +114,7 @@ $(eval $(call sysimg_builder,LibCURL,LibCURL_jll MozillaCACerts_jll)) $(eval $(call sysimg_builder,Downloads,ArgTools FileWatching LibCURL NetworkOptions)) # 6-depth packages -$(eval $(call sysimg_builder,Pkg,Dates LibGit2 Libdl Logging Printf Random SHA UUIDs)) # Markdown REPL +$(eval $(call pkgimg_builder,Pkg,Dates LibGit2 Libdl Logging Printf Random SHA UUIDs)) # Markdown REPL # 7-depth packages $(eval $(call pkgimg_builder,LazyArtifacts,Artifacts Pkg)) diff --git a/stdlib/REPL/src/REPL.jl b/stdlib/REPL/src/REPL.jl index c951f302359f23..12225946984efa 100644 --- a/stdlib/REPL/src/REPL.jl +++ b/stdlib/REPL/src/REPL.jl @@ -1096,6 +1096,31 @@ function setup_interface( edit_insert(s, '?') end end, + ']' => function (s::MIState,o...) + if isempty(s) || position(LineEdit.buffer(s)) == 0 + pkgid = Base.PkgId(Base.UUID("44cfe95a-1eb2-52ea-b672-e2afdf69b78f"), "Pkg") + if Base.locate_package(pkgid) !== nothing # Only try load Pkg if we can find it + Pkg = Base.require(Base.PkgId(Base.UUID("44cfe95a-1eb2-52ea-b672-e2afdf69b78f"), "Pkg")) + # Pkg should have loaded its REPL mode by now, let's find it so we can transition to it. + pkg_mode = nothing + for mode in repl.interface.modes + if mode isa LineEdit.Prompt && mode.complete isa Pkg.REPLMode.PkgCompletionProvider + pkg_mode = mode + break + end + end + # TODO: Cache the `pkg_mode`? + if pkg_mode !== nothing + buf = copy(LineEdit.buffer(s)) + transition(s, pkg_mode) do + LineEdit.state(s, pkg_mode).input_buffer = buf + end + return + end + end + end + edit_insert(s, ']') + end, # Bracketed Paste Mode "\e[200~" => (s::MIState,o...)->begin diff --git a/test/precompile.jl b/test/precompile.jl index 37498068fd39c3..0001182bac0b76 100644 --- a/test/precompile.jl +++ b/test/precompile.jl @@ -397,7 +397,7 @@ precompile_test_harness(false) do dir [:ArgTools, :Artifacts, :Base64, :CompilerSupportLibraries_jll, :CRC32c, :Dates, :Downloads, :FileWatching, :Future, :InteractiveUtils, :libblastrampoline_jll, :LibCURL, :LibCURL_jll, :LibGit2, :Libdl, :LinearAlgebra, - :Logging, :Markdown, :Mmap, :MozillaCACerts_jll, :NetworkOptions, :OpenBLAS_jll, :Pkg, :Printf, + :Logging, :Markdown, :Mmap, :MozillaCACerts_jll, :NetworkOptions, :OpenBLAS_jll, :Printf, :p7zip_jll, :REPL, :Random, :SHA, :Serialization, :Sockets, :TOML, :Tar, :Test, :UUIDs, :Unicode, :nghttp2_jll]