diff --git a/src/backends.jl b/src/backends.jl index 94199b00..89bee0b9 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -13,6 +13,26 @@ backends() = _backends backend_name() = CURRENT_BACKEND.sym _backend_instance(sym::Symbol) = haskey(_backendType, sym) ? _backendType[sym]() : error("Unsupported backend $sym") +# kludge while waiting for Pkg alternatives +if VERSION >= v"0.7-" +function _findmod(f::Symbol) + for (u,v) in Base.loaded_modules + (Symbol(v) == f) && return u + end + nothing +end +function topimport(modname) + @eval Base.__toplevel__ import $modname + u = _findmod(modname) + @eval $modname = Base.loaded_modules[$u] +end +else + function myimport(modname) + @eval import $modname + end +end +# end kludge + macro init_backend(s) str = lowercase(string(s)) sym = Symbol(str) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 483e717f..d8605ea5 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -67,7 +67,7 @@ end function _initialize_backend(::GRBackend; kw...) @eval begin - import GR + topimport(:GR) export GR end end diff --git a/src/backends/hdf5.jl b/src/backends/hdf5.jl index fe8e26e7..4de26b71 100644 --- a/src/backends/hdf5.jl +++ b/src/backends/hdf5.jl @@ -142,7 +142,7 @@ end function _initialize_backend(::HDF5Backend) @eval begin - import HDF5 + topimport(:HDF5) export HDF5 if length(HDF5PLOT_MAP_TELEM2STR) < 1 #Possible element types of high-level data types: diff --git a/src/backends/inspectdr.jl b/src/backends/inspectdr.jl index 8cc2a22c..2a22055f 100644 --- a/src/backends/inspectdr.jl +++ b/src/backends/inspectdr.jl @@ -162,7 +162,7 @@ end function _initialize_backend(::InspectDRBackend; kw...) @eval begin - import InspectDR + topimport(:InspectDR) export InspectDR #Glyph used when plotting "Shape"s: diff --git a/src/backends/pgfplots.jl b/src/backends/pgfplots.jl index aae1a356..8692dafd 100644 --- a/src/backends/pgfplots.jl +++ b/src/backends/pgfplots.jl @@ -58,7 +58,7 @@ end function _initialize_backend(::PGFPlotsBackend; kw...) @eval begin - import PGFPlots + topimport(:PGFPlots) export PGFPlots end end diff --git a/src/backends/plotlyjs.jl b/src/backends/plotlyjs.jl index e2883220..8cbdfa5e 100644 --- a/src/backends/plotlyjs.jl +++ b/src/backends/plotlyjs.jl @@ -29,7 +29,7 @@ end function _initialize_backend(::PlotlyJSBackend; kw...) @eval begin - import PlotlyJS + topimport(:PlotlyJS) export PlotlyJS end diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index fa86acc3..c5b2947b 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -77,8 +77,12 @@ function _initialize_backend(::PyPlotBackend) # problem: https://github.com/tbreloff/Plots.jl/issues/308 # solution: hack from @stevengj: https://github.com/stevengj/PyPlot.jl/pull/223#issuecomment-229747768 otherdisplays = splice!(Base.Multimedia.displays, 2:length(Base.Multimedia.displays)) - import PyPlot, PyCall - import LaTeXStrings: latexstring + + topimport(:PyPlot) + topimport(:PyCall) + topimport(:LaTeXStrings) + latexstring = LaTeXStrings.latexstring + append!(Base.Multimedia.displays, otherdisplays) export PyPlot diff --git a/src/backends/template.jl b/src/backends/template.jl index 71fabbf9..5178f3f7 100644 --- a/src/backends/template.jl +++ b/src/backends/template.jl @@ -5,7 +5,7 @@ function _initialize_backend(::[PkgName]Backend; kw...) @eval begin - import [PkgName] + topimport(:[PkgName]) export [PkgName] # todo: other initialization that needs to be eval-ed end diff --git a/src/backends/unicodeplots.jl b/src/backends/unicodeplots.jl index f644966d..eb48d8ad 100644 --- a/src/backends/unicodeplots.jl +++ b/src/backends/unicodeplots.jl @@ -42,7 +42,7 @@ end function _initialize_backend(::UnicodePlotsBackend; kw...) @eval begin - import UnicodePlots + topimport(:UnicodePlots) export UnicodePlots end end