@@ -45,7 +45,10 @@ function eval_message(display_properties, messageid, messagebody)
45
45
expr = preprocess_expression! (messagebody, io)
46
46
result = Main. eval (expr)
47
47
if messageid === :eval && ! isnothing (result)
48
- show (io, MIME " text/plain" (), result)
48
+ # We require invokelatest here in case the user
49
+ # modifies any method tables after starting the session,
50
+ # which change methods of `show`
51
+ Base. invokelatest (show, io, MIME " text/plain" (), result)
49
52
end
50
53
end
51
54
end
@@ -55,7 +58,7 @@ function eval_message(display_properties, messageid, messagebody)
55
58
elseif messageid === :help
56
59
resultstr = sprint_ctx (display_properties[]) do io
57
60
md = Main. eval (REPL. helpmode (io, messagebody))
58
- show ( io, MIME " text/plain" (), md)
61
+ Base . invokelatest (show, io, MIME " text/plain" (), md)
59
62
end
60
63
return (:help_result , resultstr)
61
64
elseif messageid === :display_properties
@@ -73,7 +76,7 @@ function eval_message(display_properties, messageid, messagebody)
73
76
end
74
77
catch _
75
78
resultstr = sprint_ctx (display_properties[]) do io
76
- Base. display_error ( io, Base. catch_stack ())
79
+ Base. invokelatest (Base . display_error, io, Base. catch_stack ())
77
80
end
78
81
return (:error , resultstr)
79
82
end
0 commit comments