Skip to content

Implement a SmugglerDisplay #33

Description

@fredrikekre
diff --git a/ext/JETExt.jl b/ext/JETExt.jl
index 52bd409..9a81774 100644
--- a/ext/JETExt.jl
+++ b/ext/JETExt.jl
diff --git a/ext/JETExt.jl b/ext/JETExt.jl
diff --git a/ext/JETExt.jl b/ext/JETExt.jl
index 52bd409..9a81774 100644
--- a/ext/JETExt.jl
+++ b/ext/JETExt.jl
@@ -37,4 +37,8 @@ function REPLSmuggler.smuggle(result::JET.JETCallResult)
     end
 end

+function Base.display(::REPLSmuggler.SmugglerDisplay, x::JET.JETCallResult)
+    return REPLSmuggler.smuggle(x)
+end
+
 end
diff --git a/src/REPLSmuggler.jl b/src/REPLSmuggler.jl
index eb4900e..864786c 100644
--- a/src/REPLSmuggler.jl
+++ b/src/REPLSmuggler.jl
@@ -35,6 +35,10 @@ using .Protocols
 include("Server.jl")
 using .Server

+struct SmugglerDisplay <: Base.AbstractDisplay end
+function Base.display(::SmugglerDisplay, x::Base.ExceptionStack)
+    return smuggle(x)
+end

 """
 Store the current server.
@@ -44,6 +48,7 @@ CURRENT_SMUGGLER = nothing
 function smuggle(specific_smuggler, serializer)
     global CURRENT_SMUGGLER
     CURRENT_SMUGGLER = Smuggler(specific_smuggler, serializer, Set{Session}())
+    Base.pushdisplay(SmugglerDisplay())
     serve_repl(CURRENT_SMUGGLER)
 end

Adding something like this enables automatic smuggling. It doesn't work for errors though because errors doesn't go through the display system.

Perhaps still useful?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions