sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 0b9c8bf71414570b09e1d89414f5ed5299d345c4
parent f31ee51a71830dd5fc9dc8da68c799e5a02f162d
Author: Christopher Corley <cscorley@ua.edu>
Date:   Thu, 20 Mar 2014 11:42:19 -0500

Add config option for continuous scroll behavior

Add config option for continuous scroll behavior

Add continuous scroll option to default config

Diffstat:
M lib/sup.rb | 3 ++-
M lib/sup/modes/line_cursor_mode.rb | 13 ++++++++++---
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/lib/sup.rb b/lib/sup.rb
@@ -332,7 +332,8 @@ EOM
       :slip_rows => 0,
       :col_jump => 2,
       :stem_language => "english",
-      :sync_back_to_maildir => false
+      :sync_back_to_maildir => false,
+      :continuous_scroll => false
     }
     if File.exists? filename
       config = Redwood::load_yaml_obj filename
diff --git a/lib/sup/modes/line_cursor_mode.rb b/lib/sup/modes/line_cursor_mode.rb
@@ -94,7 +94,7 @@ protected
     call_load_more_callbacks buffer.content_height if @curpos >= lines - [buffer.content_height/2,1].max
     return false unless @curpos < lines - 1
 
-    if @curpos == botline - 3
+    if @curpos == botline - 3 and $config[:continuous_scroll]
       # load more lines, one at a time.
       jump_to_line topline + 1
       @curpos += 1
@@ -104,6 +104,9 @@ protected
         set_status
         buffer.commit
       end
+    elsif @curpos >= botline - 1
+      page_down
+      set_cursor_pos topline
     else
       @curpos += 1
       unless buffer.dirty?
@@ -118,7 +121,8 @@ protected
 
   def cursor_up
     return false unless @curpos > @cursor_top
-    if @curpos == topline + 3
+
+    if @curpos == topline + 3 and $config[:continuous_scroll]
       jump_to_line topline - 1
       @curpos -= 1
       unless buffer.dirty?
@@ -127,6 +131,10 @@ protected
         set_status
         buffer.commit
       end
+    elsif @curpos == topline
+      old_topline = topline
+      page_up
+      set_cursor_pos [old_topline - 1, topline].max
     else
       @curpos -= 1
       unless buffer.dirty?
@@ -192,5 +200,4 @@ private
     @load_more_q.push size if $config[:load_more_threads_when_scrolling]
   end
 end
-
 end