@@ -65,13 +65,16 @@ def execute_request(msg)
6565 @session . send ( :publish , :error , content )
6666 end
6767
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+
6875 trigger_event ( :post_execute )
6976
7077 @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' ]
7578 end
7679 end
7780
@@ -211,13 +214,24 @@ def configure_inline_support(backend)
211214 # Temporally monky-patching IRuby kernel to enable flushing and closing figures.
212215 # TODO: Make this feature a pull-request for sciruby/iruby.
213216 kernel = ::IRuby ::Kernel . instance
214- kernel . extend HookExtension
217+ kernel . extend HookExtension unless kernel . respond_to? ( :events )
215218 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+
217225 # TODO: save original rcParams and overwrite rcParams with IRuby-specific configuration
218226 new_backend_name = :inline
219227 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+
221235 # TODO: restore saved original rcParams
222236 new_backend_name = :not_inline
223237 end
@@ -242,10 +256,7 @@ def show_figures(close=false)
242256 kernel = ::IRuby ::Kernel . instance
243257 gcf . get_all_fig_managers . each do |fig_manager |
244258 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 : { } )
249260 end
250261 ensure
251262 unless gcf . get_all_fig_managers . nil?
0 commit comments