]> git.cworth.org Git - sup/commitdiff
- Make buffer-list-mode reload upon focus (thanks to Grant Hollingworth)
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Sat, 24 Nov 2007 17:42:04 +0000 (17:42 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Sat, 24 Nov 2007 17:42:04 +0000 (17:42 +0000)
- Rekey buffer-list-mode 'R' to '@' for reload
- Stop BufferManager from throwing exceptions when a non-existent buffer
  is raised or focused. (Those were mostly debugging checks anyways.)

git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@713 5c8cc53c-5e98-4d25-b20a-d8db53a31250

lib/sup/buffer.rb
lib/sup/modes/buffer-list-mode.rb

index d04f481b8bed88391594ae682a85956c50e0cde8..a418762db1bd24471fceb996a164463ccb3e5e48 100644 (file)
@@ -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?
index 69d367f10829a127a428712cb8c691e7002c597b..91b2fac7fa4d50e974368486ca17a1ddc44f462e 100644 (file)
@@ -3,7 +3,7 @@ module Redwood
 class BufferListMode < LineCursorMode
   register_keymap do |k|
     k.add :jump_to_buffer, "Jump to selected buffer", :enter
-    k.add :reload, "Reload buffer list", "R"
+    k.add :reload, "Reload buffer list", "@"
   end
 
   def initialize
@@ -11,8 +11,12 @@ class BufferListMode < LineCursorMode
     super
   end
 
-  def lines; @text.length; end
-  def [] i; @text[i]; end
+  def lines; @text.length end
+  def [] i; @text[i] end
+
+  def focus
+    reload # buffers may have been killed or created since last view
+  end
 
 protected