Merge branch 'master' into woorst-imgur_api

This commit is contained in:
Michael Lazar
2017-07-23 01:01:48 -04:00
145 changed files with 132727 additions and 119887 deletions

View File

@@ -59,6 +59,7 @@ class Terminal(object):
self.loader = LoadScreen(self)
self._display = None
self._mailcap_dict = mailcap.getcaps()
self._term = os.environ['TERM']
# Hack to allow setting the Imgur OAuth cred in the config file
mime_parsers.ImgurApiMIMEParser.client_id = config['imgur_client_id']
@@ -772,3 +773,30 @@ class Terminal(object):
out = '\n'.join(stack)
return out
def clear_screen(self):
"""
In the beginning this always called touchwin(). However, a bug
was discovered in tmux when TERM was set to `xterm-256color`, where
only part of the screen got redrawn when scrolling. tmux automatically
sets TERM to `screen-256color`, but many people choose to override
this in their tmux.conf or .bashrc file which can cause issues.
Using clearok() instead seems to fix the problem, with the trade off
of slightly more expensive screen refreshes.
Update: It was discovered that using clearok() introduced a
separate bug for urxvt users in which their screen flashed when
scrolling. Heuristics were added to make it work with as many
configurations as possible. It's still not perfect
(e.g. urxvt + xterm-256color) will screen flash, but it should
work in all cases if the user sets their TERM correctly.
Reference:
https://github.com/michael-lazar/rtv/issues/343
https://github.com/michael-lazar/rtv/issues/323
"""
if self._term != 'xterm-256color':
self.stdscr.touchwin()
else:
self.stdscr.clearok(True)