Skip to content

Commit 96ea960

Browse files
swap out pager when reevaluating
1 parent 7f7aee1 commit 96ea960

File tree

3 files changed

+31
-10
lines changed

3 files changed

+31
-10
lines changed

bpython/curtsies.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from __future__ import absolute_import
22

3-
import code
43
import collections
54
import io
65
import logging
@@ -104,15 +103,7 @@ def mainloop(self, interactive=True, paste=None):
104103
if interactive:
105104
# Add custom help command
106105
# TODO: add methods to run the code
107-
self.coderunner.interp.locals['_repl'] = self
108-
109-
self.coderunner.interp.runsource(
110-
'from bpython.curtsiesfrontend._internal '
111-
'import _Helper')
112-
self.coderunner.interp.runsource('help = _Helper(_repl)\n')
113-
114-
del self.coderunner.interp.locals['_repl']
115-
del self.coderunner.interp.locals['_Helper']
106+
self.initialize_interp()
116107

117108
# run startup file
118109
self.process_event(bpythonevents.RunStartupFileEvent())

bpython/curtsiesfrontend/_internal.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,18 @@
2525
import bpython._internal
2626

2727

28+
class NopPydocPager(object):
29+
def __enter__(self):
30+
self._orig_pager = pydoc.pager
31+
pydoc.pager = self
32+
33+
def __exit__(self, *args):
34+
pydoc.pager = self._orig_pager
35+
36+
def __call__(self, text):
37+
return None
38+
39+
2840
class _Helper(bpython._internal._Helper):
2941

3042
def __init__(self, repl=None):
@@ -36,4 +48,11 @@ def __init__(self, repl=None):
3648
def pager(self, output):
3749
self._repl.pager(output)
3850

51+
def __call__(self, *args, **kwargs):
52+
if self._repl.reevaluating:
53+
with NopPydocPager():
54+
return super(_Helper, self).__call__(*args, **kwargs)
55+
else:
56+
return super(_Helper, self).__call__(*args, **kwargs)
57+
3958
# vim: sw=4 ts=4 sts=4 ai et

bpython/curtsiesfrontend/repl.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1573,6 +1573,7 @@ def reevaluate(self, insert_into_history=False):
15731573
self.interp = self.interp.__class__()
15741574
self.interp.write = self.send_to_stderr
15751575
self.coderunner.interp = self.interp
1576+
self.initialize_interp()
15761577

15771578
self.buffer = []
15781579
self.display_buffer = []
@@ -1610,6 +1611,16 @@ def reevaluate(self, insert_into_history=False):
16101611
self._cursor_offset = 0
16111612
self.current_line = ''
16121613

1614+
def initialize_interp(self):
1615+
self.coderunner.interp.locals['_repl'] = self
1616+
self.coderunner.interp.runsource(
1617+
'from bpython.curtsiesfrontend._internal '
1618+
'import _Helper')
1619+
self.coderunner.interp.runsource('help = _Helper(_repl)\n')
1620+
1621+
del self.coderunner.interp.locals['_repl']
1622+
del self.coderunner.interp.locals['_Helper']
1623+
16131624
def getstdout(self):
16141625
lines = self.lines_for_display + [self.current_line_formatted]
16151626
s = '\n'.join(x.s if isinstance(x, FmtStr) else x for x in lines) \

0 commit comments

Comments
 (0)