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:
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