From 53fa188e70e38039cdefd347ae66bf44b9a17674 Mon Sep 17 00:00:00 2001 From: David Hedbor <david@hedbor.org> Date: Fri, 2 Apr 1999 01:57:59 -0800 Subject: [PATCH] Added forward/backward word and forward/backward delete word. Rev: lib/modules/Stdio.pmod/Readline.pike:1.9 --- lib/modules/Stdio.pmod/Readline.pike | 58 ++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/lib/modules/Stdio.pmod/Readline.pike b/lib/modules/Stdio.pmod/Readline.pike index 9147492df4..8beab6d0ab 100644 --- a/lib/modules/Stdio.pmod/Readline.pike +++ b/lib/modules/Stdio.pmod/Readline.pike @@ -1,4 +1,4 @@ -// $Id: Readline.pike,v 1.8 1999/03/23 20:48:36 marcus Exp $ +// $Id: Readline.pike,v 1.9 1999/04/02 09:57:59 neotron Exp $ class OutputController { @@ -545,7 +545,7 @@ class InputController class DefaultEditKeys { - + static private multiset word_break_chars = mkmultiset("\t \n\r/*?_-.[]~&;\!#$%^(){}<>"/""); static object _readline; void self_insert_command(string str) @@ -618,6 +618,50 @@ class DefaultEditKeys _readline->insert(reverse(c), p-1); } + int forward_find_word() + { + int p, n; + string line = _readline->gettext(); + for(p = _readline->getcursorpos(); p < sizeof(line); p++) { + if(word_break_chars[ line[p..p] ]) { + if(n) break; + } else n = 1; + } + return p; + } + + int backward_find_word() + { + int p = _readline->getcursorpos() , n; + string line = _readline->gettext(); + if(p >= strlen(line)) p = strlen(line) - 1; + for(; p >= 0; p--) { + if(word_break_chars[ line[p..p] ]) { + if(n) break; + } else n = 1; + } + return p; + } + + void forward_word() + { + _readline->setcursorpos(forward_find_word()); + } + + void backward_word() + { + _readline->setcursorpos(backward_find_word()); + } + + void forward_delete_word() + { + _readline->delete(_readline->getcursorpos(), forward_find_word()); + } + void backward_delete_word() + { + _readline->delete(backward_find_word()+1, _readline->getcursorpos()); + } + void kill_line() { _readline->delete(_readline->getcursorpos(), strlen(_readline->gettext())); @@ -663,7 +707,15 @@ class DefaultEditKeys ({ "\\!ku", up_history }), ({ "\\!kd", down_history }), ({ "\\!kr", forward_char }), - ({ "\\!kl", backward_char }) + ({ "\\!kl", backward_char }), + ({ "^[D", forward_delete_word }), + ({ "^[^H", backward_delete_word }), + ({ "^[^?", backward_delete_word }), + ({ "^[d", forward_delete_word }), + ({ "^[F", forward_word }), + ({ "^[B", backward_word }), + ({ "^[f", forward_word }), + ({ "^[b", backward_word }), }); static void set_default_bindings() -- GitLab