]> git.cworth.org Git - sup/blob - lib/sup/modes/buffer-list-mode.rb
76d8c0309ac818af0dfe77500cc5bee26059da47
[sup] / lib / sup / modes / buffer-list-mode.rb
1 module Redwood
2
3 class BufferListMode < LineCursorMode
4   register_keymap do |k|
5     k.add :jump_to_buffer, "Jump to that buffer", :enter
6     k.add :reload, "Reload", "R"
7   end
8
9   def initialize
10     regen_text
11     super
12   end
13
14   def lines; @text.length; end
15   def [] i; @text[i]; end
16
17 protected
18
19   def reload
20     regen_text
21     buffer.mark_dirty
22   end
23
24   def regen_text
25     @bufs = BufferManager.buffers.sort_by { |name, buf| name }
26     width = @bufs.map { |name, buf| name.length }.max
27     @text = @bufs.map do |name, buf|
28       sprintf "%#{width}s  %s", name, buf.mode.name
29     end
30   end
31
32   def jump_to_buffer
33     BufferManager.raise_to_front @bufs[curpos][1]
34   end
35 end
36
37 end