diff options
| author | aszlig <aszlig@redmoonstudios.org> | 2010-07-05 08:16:23 +0200 |
|---|---|---|
| committer | aszlig <aszlig@redmoonstudios.org> | 2010-07-05 08:16:23 +0200 |
| commit | ffc54837c538dde35f0595d194a40f0745f13bc1 (patch) | |
| tree | d1d39f75079353ac20012f9fb7fc6c89ddfd6ecf /urwid/vterm.py | |
| parent | fc773808eaeca5048813ede80102544ce73aa6db (diff) | |
| download | urwid-ffc54837c538dde35f0595d194a40f0745f13bc1.tar.gz | |
vterm: Truncate scrolling buffer as necessary.
Diffstat (limited to 'urwid/vterm.py')
| -rw-r--r-- | urwid/vterm.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/urwid/vterm.py b/urwid/vterm.py index 32d6090..63f130f 100644 --- a/urwid/vterm.py +++ b/urwid/vterm.py @@ -171,6 +171,29 @@ class TermCharset(object): else: self.current = None +class TermScroller(list): + """ + List subclass that handles the terminal scrollback buffer, + truncating it as necessary. + """ + SCROLLBACK_LINES = 10000 + + def trunc(self): + if len(self) >= self.SCROLLBACK_LINES: + self.pop(0) + + def append(self, obj): + self.trunc() + super(TermScroller, self).append(obj) + + def insert(self, idx, obj): + self.trunc() + super(TermScroller, self).insert(idx, obj) + + def extend(self, seq): + self.trunc() + super(TermScroller, self).extend(seq) + class TermCanvas(Canvas): cacheable = False @@ -181,7 +204,7 @@ class TermCanvas(Canvas): self.widget = widget self.modes = widget.term_modes - self.scrollback_buffer = [] + self.scrollback_buffer = TermScroller() self.scrolling_up = 0 self.utf8_eat_bytes = None |
