@@ -65,13 +65,16 @@ def execute_request(msg)
65
65
@session . send ( :publish , :error , content )
66
66
end
67
67
68
+ unless result . nil? || msg [ :content ] [ 'silent' ]
69
+ @session . send ( :publish , :execute_result ,
70
+ data : ::IRuby ::Display . display ( result ) ,
71
+ metadata : { } ,
72
+ execution_count : @execution_count )
73
+ end
74
+
68
75
trigger_event ( :post_execute )
69
76
70
77
@session . send ( :reply , :execute_reply , content )
71
- @session . send ( :publish , :execute_result ,
72
- data : ::IRuby ::Display . display ( result ) ,
73
- metadata : { } ,
74
- execution_count : @execution_count ) unless result . nil? || msg [ :content ] [ 'silent' ]
75
78
end
76
79
end
77
80
@@ -211,13 +214,24 @@ def configure_inline_support(backend)
211
214
# Temporally monky-patching IRuby kernel to enable flushing and closing figures.
212
215
# TODO: Make this feature a pull-request for sciruby/iruby.
213
216
kernel = ::IRuby ::Kernel . instance
214
- kernel . extend HookExtension
217
+ kernel . extend HookExtension unless kernel . respond_to? ( :events )
215
218
if backend == GUI_BACKEND_MAP [ :inline ]
216
- kernel . register_event ( :post_execute , method ( :flush_figures ) )
219
+ if kernel . respond_to? ( :register_event )
220
+ kernel . register_event ( :post_execute , method ( :flush_figures ) )
221
+ else
222
+ @post_execute_func = kernel . events . register ( :post_execute , &method ( :flush_figures ) )
223
+ end
224
+
217
225
# TODO: save original rcParams and overwrite rcParams with IRuby-specific configuration
218
226
new_backend_name = :inline
219
227
else
220
- kernel . unregister_event ( :post_execute , method ( :flush_figures ) )
228
+ if kernel . respond_to? ( :unregister_event )
229
+ kernel . unregister_event ( :post_execute , method ( :flush_figures ) )
230
+ elsif @post_execute_func
231
+ kernel . events . unregister ( :post_execute , @post_execute_func )
232
+ @post_execute_func = nil
233
+ end
234
+
221
235
# TODO: restore saved original rcParams
222
236
new_backend_name = :not_inline
223
237
end
@@ -242,10 +256,7 @@ def show_figures(close=false)
242
256
kernel = ::IRuby ::Kernel . instance
243
257
gcf . get_all_fig_managers . each do |fig_manager |
244
258
data = ::IRuby ::Display . display ( fig_manager . canvas . figure )
245
- kernel . session . send ( :publish , :execute_result ,
246
- data : data ,
247
- metadata : { } ,
248
- execution_count : kernel . instance_variable_get ( :@execution_count ) )
259
+ kernel . session . send ( :publish , :display_data , data : data , metadata : { } )
249
260
end
250
261
ensure
251
262
unless gcf . get_all_fig_managers . nil?
0 commit comments