Closed devmotion closed 2 years ago
Thanks
Thanks! I was about to push the following regression test when I noticed that you had already merged and released the PR :slightly_smiling_face: Maybe it could still be useful?
diff --git a/test/runtests.jl b/test/runtests.jl
index 9d34427..1b10962 100644
--- a/test/runtests.jl
+++ b/test/runtests.jl
@@ -790,6 +790,13 @@ end end
Base.show(io::IO, mime::MIME"image/svg+xml", ::SVG) = print(io, "SVG")
SVG()
#-
+ struct SVGOnly end
+ Base.showable(::MIME, ::SVGOnly) = false
+ Base.showable(::MIME"image/svg+xml", ::SVGOnly) = true
+ Base.show(::IO, ::MIME, ::SVGOnly) = error("only SVG output supported")
+ Base.show(io::IO, ::MIME"image/svg+xml", ::SVGOnly) = print(io, "SVGOnly")
+ SVGOnly()
+ #-
struct MD end
Base.show(io::IO, mime::MIME"text/markdown", ::MD) = print(io, "# " * "MD")
Base.show(io::IO, mime::MIME"text/html", ::MD) =
Yea, that would be great.
It took me multiple days to figure out why executing some Markdown blocks that return CairoMakie figures errored even though everything worked when copy-pasted to the REPL. A much much simpler example that demonstrates the problem (requires installation of Literate and CairoMakie):
As I realized after a long time, the problem is that the
showable
checks in src/Literate.jl run in a different world age than the actualshow
invocations. Callingshowable
also withinvokelatest
fixes the issue.