sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit bd14fd4296d4edcdf778126dc4d5ab98ca951ad7
parent 7e2bb889e617302c82e28d04cb2e0db5d35fbb08
Author: Hamish Downer <dmishd@gmail.com>
Date:   Tue, 15 Feb 2011 21:29:12 +0000

Allow buffers to be hidden

This allows buffers to be hidden, at which point they will not
appear in the rollable buffers, or in the buffer list mode.

Diffstat:
M lib/sup/buffer.rb | 5 +++--
M lib/sup/modes/buffer-list-mode.rb | 2 +-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/lib/sup/buffer.rb b/lib/sup/buffer.rb
@@ -73,7 +73,7 @@ class InputSequenceAborted < StandardError; end
 class Buffer
   attr_reader :mode, :x, :y, :width, :height, :title, :atime
   bool_reader :dirty, :system
-  bool_accessor :force_to_top
+  bool_accessor :force_to_top, :hidden
 
   def initialize window, mode, width, height, opts={}
     @w = window
@@ -82,6 +82,7 @@ class Buffer
     @focus = false
     @title = opts[:title] || ""
     @force_to_top = opts[:force_to_top] || false
+    @hidden = opts[:hidden] || false
     @x, @y, @width, @height = 0, 0, width, height
     @atime = Time.at 0
     @system = opts[:system] || false
@@ -265,7 +266,7 @@ EOS
   end
 
   def rollable_buffers
-    @buffers.select { |b| !b.system? || @buffers.last == b }
+    @buffers.select { |b| !b.system? || !b.hidden? || @buffers.last == b }
   end
 
   def handle_input c
diff --git a/lib/sup/modes/buffer-list-mode.rb b/lib/sup/modes/buffer-list-mode.rb
@@ -28,7 +28,7 @@ protected
   end
 
   def regen_text
-    @bufs = BufferManager.buffers.reject { |name, buf| buf.mode == self }.sort_by { |name, buf| buf.atime }.reverse
+    @bufs = BufferManager.buffers.reject { |name, buf| buf.mode == self || buf.hidden? }.sort_by { |name, buf| buf.atime }.reverse
     width = @bufs.max_of { |name, buf| buf.mode.name.length }
     @text = @bufs.map do |name, buf|
       base_color = buf.system? ? :system_buf_color : :regular_buf_color