sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit d472510397b6ea0538849198bc32f6762b92629c
parent 25577c0a58c559cb76d4225c4821f72c48b04b7a
Author: Rich Lane <rlane@club.cc.cmu.edu>
Date:   Fri, 27 Nov 2009 14:33:20 -0500

Merge branch 'textfield-tweaks'

Diffstat:
M lib/sup/textfield.rb | 27 ++++++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
diff --git a/lib/sup/textfield.rb b/lib/sup/textfield.rb
@@ -102,12 +102,21 @@ class TextField
         Ncurses::Form::REQ_DEL_CHAR
       when Ncurses::KEY_BACKSPACE, 127 # 127 is also a backspace keysym
         Ncurses::Form::REQ_DEL_PREV
-      when 1 #ctrl-a
+      when ?\C-a
+        nop
         Ncurses::Form::REQ_BEG_FIELD
-      when 5 #ctrl-e
+      when ?\C-e
         Ncurses::Form::REQ_END_FIELD
-      when 11 # ctrl-k
+      when ?\C-k
         Ncurses::Form::REQ_CLR_EOF
+      when ?\C-u
+        set_cursed_value cursed_value_after_point
+        Ncurses::Form.form_driver @form, Ncurses::Form::REQ_END_FIELD
+        nop
+        Ncurses::Form::REQ_BEG_FIELD
+      when ?\C-w
+        Ncurses::Form.form_driver @form, Ncurses::Form::REQ_PREV_CHAR
+        Ncurses::Form.form_driver @form, Ncurses::Form::REQ_DEL_WORD
       when Ncurses::KEY_UP, Ncurses::KEY_DOWN
         unless @history.empty?
           value = get_cursed_value
@@ -156,5 +165,17 @@ private
   def set_cursed_value v
     @field.set_field_buffer 0, v
   end
+
+  def cursed_value_after_point
+    point = Ncurses.curx - @question.length
+    get_cursed_value[point..-1]
+  end
+
+  ## this is almost certainly unnecessary, but it's the only way
+  ## i could get ncurses to remember my form's value
+  def nop
+    Ncurses::Form.form_driver @form, " "[0]
+    Ncurses::Form.form_driver @form, Ncurses::Form::REQ_DEL_PREV
+  end
 end
 end