diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2000-08-04 07:33:18 (GMT) |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2000-08-04 07:33:18 (GMT) |
commit | 5af256ded6190e899530de8df61fa77fe37686fc (patch) | |
tree | 6e49d77b3fba0dedc63aeabac28ed2d30561c126 | |
parent | 5750017563f3121bc3198c4e375d43d4b472ebc7 (diff) | |
download | cpython-5af256ded6190e899530de8df61fa77fe37686fc.zip cpython-5af256ded6190e899530de8df61fa77fe37686fc.tar.gz cpython-5af256ded6190e899530de8df61fa77fe37686fc.tar.bz2 |
Corrected a bug in handling of ^N and ^P with stripspaces on.
-rw-r--r-- | Lib/curses/textpad.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/Lib/curses/textpad.py b/Lib/curses/textpad.py index 0a53690..e0e3d8b 100644 --- a/Lib/curses/textpad.py +++ b/Lib/curses/textpad.py @@ -20,13 +20,13 @@ class Textbox: Ctrl-A Go to left edge of window. Ctrl-B Cursor left, wrapping to previous line if appropriate. Ctrl-D Delete character under cursor. - Ctrl-E Go to right edge (nospaces off) or end of line (nospaces on). + Ctrl-E Go to right edge (stripspaces off) or end of line (stripspaces on). Ctrl-F Cursor right, wrapping to next line when appropriate. Ctrl-G Terminate, returning the window contents. Ctrl-H Delete character backward. Ctrl-J Terminate if the window is 1 line, otherwise insert newline. Ctrl-K If line is blank, delete it, otherwise clear to end of line. - Ctrl-L Refresh screen + Ctrl-L Refresh screen. Ctrl-N Cursor down; move down one line. Ctrl-O Insert a blank line at cursor location. Ctrl-P Cursor up; move up one line. @@ -46,7 +46,7 @@ class Textbox: self.lastcmd = None win.keypad(1) - def firstblank(self, y): + def _end_of_line(self, y): "Go to the location of the first blank on the given line." last = self.maxx while 1: @@ -79,7 +79,7 @@ class Textbox: elif y == 0: pass elif self.stripspaces: - self.win.move(y-1, self.firstblank(y-1)) + self.win.move(y-1, self._end_of_line(y-1)) else: self.win.move(y-1, self.maxx) if ch in (ascii.BS, curses.KEY_BACKSPACE): @@ -88,7 +88,7 @@ class Textbox: self.win.delch() elif ch == ascii.ENQ: # ^e if self.stripspaces: - self.win.move(y, self.firstblank(y)) + self.win.move(y, self._end_of_line(y)) else: self.win.move(y, self.maxx) elif ch in (ascii.ACK, curses.KEY_RIGHT): # ^f @@ -106,7 +106,7 @@ class Textbox: elif y < self.maxy: self.win.move(y+1, 0) elif ch == ascii.VT: # ^k - if x == 0 and self.firstblank(y) == 0: + if x == 0 and self._end_of_line(y) == 0: self.win.deleteln() else: self.win.clrtoeol() @@ -115,11 +115,15 @@ class Textbox: elif ch in (ascii.SO, curses.KEY_DOWN): # ^n if y < self.maxy: self.win.move(y+1, x) + if x > self._end_of_line(y+1): + self.win.move(y+1, self._end_of_line(y+1)) elif ch == ascii.SI: # ^o self.win.insertln() elif ch in (ascii.DLE, curses.KEY_UP): # ^p if y > 0: self.win.move(y-1, x) + if x > self._end_of_line(y-1): + self.win.move(y-1, self._end_of_line(y-1)) return 1 def gather(self): @@ -127,8 +131,8 @@ class Textbox: result = "" for y in range(self.maxy+1): self.win.move(y, 0) - stop = self.firstblank(y) - #sys.stderr.write("y=%d, firstblank(y)=%d\n" % (y, stop)) + stop = self._end_of_line(y) + #sys.stderr.write("y=%d, _end_of_line(y)=%d\n" % (y, stop)) if stop == 0 and self.stripspaces: continue for x in range(self.maxx+1): |