diff --git a/lib/modules/Stdio.pmod/Readline.pike b/lib/modules/Stdio.pmod/Readline.pike index 244b7314378facb24bb79eb024a3d9116ebdc32f..df3b6541cae6f48840ac1293e986a8ebecadeefe 100644 --- a/lib/modules/Stdio.pmod/Readline.pike +++ b/lib/modules/Stdio.pmod/Readline.pike @@ -1,4 +1,4 @@ -// $Id: Readline.pike,v 1.19 1999/06/09 16:23:31 marcus Exp $ +// $Id: Readline.pike,v 1.20 1999/06/09 17:34:32 marcus Exp $ class OutputController { @@ -55,6 +55,8 @@ class OutputController ({ "\000","\001","\002","\003","\004","\005","\006","\007", "\010","\011","\012","\013","\014","\015","\016","\017", + "\020","\021","\022","\023","\024","\025","\026","\027", + "\030","\031","\032","\033","\034","\035","\036","\037", "\177", "\200","\201","\202","\203","\204","\205","\206","\207", "\210","\211","\212","\213","\214","\215","\216","\217", @@ -64,6 +66,8 @@ class OutputController ({ "^@","^A","^B","^C","^D","^E","^F","^G", "^H","^I","^J","^K","^L","^M","^N","^O", + "^P","^Q","^R","^S","^T","^U","^V","^W", + "^X","^Y","^Z","^[","^\\","^]","^^","^_", "^?", "~@","~A","~B","~C","~D","~E","~F","~G", "~H","~I","~J","~K","~L","~M","~N","~O", @@ -95,7 +99,7 @@ class OutputController return width(escapify(s)); } - void low_write(string s, void|int opt, void|int word_break) + void low_write(string s, void|int word_break) { int n = width(s); if(!n) @@ -138,17 +142,16 @@ class OutputController } } string le; - if(!opt && xpos==0 && term->tgetflag("am") && (le=term->put("le"))) - outfd->write(" "+le); if(n>0) { outfd->write(s); xpos += n; - } + } else if(xpos==0 && term->tgetflag("am") && (le=term->put("le"))) + outfd->write(" "+le); } - void write(string s,void|int opt, void|int word_break,void|int hide) + void write(string s,void|int word_break,void|int hide) { - low_write(escapify(s,hide),opt,word_break); + low_write(escapify(s,hide),word_break); } void low_move_downward(int n) @@ -1048,12 +1051,12 @@ void insert(string s, int p) if (p>strlen(text)) p = strlen(text); setcursorpos(p); - output_controller->write(s,0,0,hide); + output_controller->write(s,0,hide); cursorpos += strlen(s); string rest = text[p..]; if (strlen(rest)) { - output_controller->write(rest,0,0,hide); + output_controller->write(rest,0,hide); output_controller->move_backward(rest); } text = text[..p-1]+s+rest; @@ -1070,7 +1073,7 @@ void delete(int p1, int p2) setcursorpos(p1); if (p1>=p2) return; - output_controller->write(text[p2..],0,0,hide); + output_controller->write(text[p2..],0,hide); output_controller->erase(text[p1..p2-1]); text = text[..p1-1]+text[p2..]; @@ -1151,7 +1154,7 @@ void redisplay(int clear, int|void nobackup) // This seems like a silly limitation // if(newline_func == read_newline) output_controller->write(prompt); - output_controller->write(text,0,0,hide); + output_controller->write(text,0,hide); cursorpos = sizeof(text); setcursorpos(p); } @@ -1208,10 +1211,10 @@ void write(string msg,void|int word_wrap) array(string) tmp=msg/"\n"; foreach(tmp[..sizeof(tmp)-2],string l) { - output_controller->write(l,1,word_wrap); + output_controller->write(l,word_wrap); output_controller->newline(); } - output_controller->write(tmp[-1],0,word_wrap); + output_controller->write(tmp[-1],word_wrap); cursorpos=strlen(text); redisplay(0, 1);