Skip to content

Commit 3fd731b

Browse files
committed
Merge branch 'use_hook_in_iruby'
2 parents 6068d3c + 8973e3b commit 3fd731b

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

lib/matplotlib/iruby.rb

+22-11
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)