Author: Danny Milosavljevic Date: 2024-09-03 License: GPL3+ Previously, we propagated julia-cstparser and julia-tokenize. This would only work if the user had installed julia in their profile (because only then JULIA_LOAD_PATH of julia-cstparser would be propagated). That doesn't seem likely or desireable. It turns out that it's not difficult to make julia read vendored packages. Let's do that (since there's a comment inside JuliaSnail.jl that warns about CSTParser APIs being easily incompatible, vendoring is better anyway). diff -ru orig/4l8xr3ldffb30a44x157lj3asaj3ykls-emacs-julia-snail-1.3.1-checkout/JuliaSnail.jl 4l8xr3ldffb30a44x157lj3asaj3ykls-emacs-julia-snail-1.3.1-checkout/JuliaSnail.jl --- orig/4l8xr3ldffb30a44x157lj3asaj3ykls-emacs-julia-snail-1.3.1-checkout/JuliaSnail.jl 2024-09-03 00:02:03.798373662 +0200 +++ 4l8xr3ldffb30a44x157lj3asaj3ykls-emacs-julia-snail-1.3.1-checkout/JuliaSnail.jl 2024-09-03 01:05:26.310766009 +0200 @@ -30,12 +30,12 @@ catch err if isa(err, ArgumentError) if isfile(joinpath($dir, "Project.toml")) - # force dependency installation - Main.Pkg.activate($dir) - Main.Pkg.instantiate() - Main.Pkg.precompile() - # activate what was the first entry before Snail was pushed to the head of LOAD_PATH - Main.Pkg.activate(LOAD_PATH[2]) + # force dependency installation + if isa(err, ArgumentError) + error("Vendored dependencies not found. Please make sure the vendored packages are located in the 'vendor' directory.") + else + rethrow(err) + end end end finally @@ -51,11 +51,16 @@ end @with_pkg_env (@__DIR__) begin - # list all external dependency imports here (from the appropriate Project.toml, either Snail's or an extension's): - import CSTParser - # check for dependency API compatibility - !isdefined(CSTParser, :iscall) && - throw(ArgumentError("CSTParser API not compatible, must install Snail-specific version")) + @with_pkg_env (joinpath(@__DIR__, "vendor", "CSTParser")) begin + @with_pkg_env (joinpath(@__DIR__, "vendor", "Tokenize")) begin + println(LOAD_PATH) + # list all external dependency imports here (from the appropriate Project.toml, either Snail's or an extension's): + import CSTParser + # check for dependency API compatibility + !isdefined(CSTParser, :iscall) && + throw(ArgumentError("CSTParser API not compatible, must install Snail-specific version")) + end + end end