Running Code Everytime (Plots.jl) Package is Loaded?

I find that for certain packages there are things I do everytime I am using the package.

For example, in Plots.jl I usually set the default linewidth to 2 via

using Plots
default(linewidth=2)

Is there some way to set my Julia environment up so that everytime I load plots via using Plots, I will automatically run default(linewidth=2) as well?

Another important thing would be enabling compiled execution for functions from Base when using Debugger.jl. VSCode does this by default, and it would be nice to make my REPL do the same by default.

I am aware of the startup.jl file, but I don’t want to load Plots.jl and Debugger.jl in every REPL session.

As explained on stackoverflow and in the Plots documentation, you can simply add:

PLOTS_DEFAULTS = Dict(:linewidth => 2)

to your startup.jl file.

More generally, even if Plots.jl didn’t support such a convenient mechanism for overriding defaults, you could create a mini-package MyPlots of the form:

module MyPlots

using Reexport
@reexport using Plots

function __init__()
    default(linewidth=2)
end

end

and then do using MyPlots instead of using Plots in order to load Plots with whatever custom initialization you want.

4 Likes

Thanks!

I saw your first suggestion as a solution on another discourse post, but I misunderstood and thought that I was then supposed to supply PLOTS_DEFAULTS as an argument to each plotting call, which would be cumbersome.