X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=lib%2Fsup%2Fbuffer.rb;h=b2106718f21a57ec3ad0b27d39c716dedf90e2d7;hb=b52fe1696188e51c3a203c1ea61b0fecf8a4fe12;hp=277bc3efa229454757687588a3b15b730fdea357;hpb=462eba9c8b1178fd37130739863486e273c2ef54;p=sup diff --git a/lib/sup/buffer.rb b/lib/sup/buffer.rb index 277bc3e..b210671 100644 --- a/lib/sup/buffer.rb +++ b/lib/sup/buffer.rb @@ -155,7 +155,8 @@ class BufferManager def buffers; @name_map.to_a; end def focus_on buf - raise ArgumentError, "buffer not on stack: #{buf.inspect}" unless @buffers.member? buf + return unless @buffers.member? buf + return if buf == @focus_buf @focus_buf.blur if @focus_buf @focus_buf = buf @@ -163,7 +164,7 @@ class BufferManager end def raise_to_front buf - raise ArgumentError, "buffer not on stack: #{buf.inspect}" unless @buffers.member? buf + return unless @buffers.member? buf @buffers.delete buf if @buffers.length > 0 && @buffers.last.force_to_top? @@ -258,11 +259,12 @@ class BufferManager def spawn_unless_exists title, opts={} if @name_map.member? title raise_to_front @name_map[title] unless opts[:hidden] + nil else mode = yield spawn title, mode, opts + @name_map[title] end - @name_map[title] end def spawn title, mode, opts={} @@ -345,7 +347,9 @@ class BufferManager ## TODO: something intelligent here ## for now I will simply prohibit killing the inbox buffer. else - raise_to_front @buffers.last + last = @buffers.last + @focus_buf ||= last + raise_to_front last end end @@ -471,7 +475,8 @@ class BufferManager Ncurses.sync do tf.activate question, default, &block @dirty = true - draw_screen :skip_minibuf => true, :sync => false + #draw_screen :skip_minibuf => true, :sync => false + draw_screen :sync => false end ret = nil