1212import curtsies .input
1313import curtsies .events
1414
15- from bpython .curtsiesfrontend .repl import Repl
15+ from bpython .curtsiesfrontend .repl import BaseRepl
1616from bpython .curtsiesfrontend .coderunner import SystemExitFromCodeGreenlet
1717from bpython import args as bpargs
1818from bpython import translations
2525logger = logging .getLogger (__name__ )
2626
2727
28- # repl = None # global for `from bpython.curtsies import repl`
28+ repl = None # global for `from bpython.curtsies import repl`
2929# WARNING Will be a problem if more than one repl is ever instantiated this way
3030
3131
32- class FullCurtsiesRepl (Repl ):
32+ class FullCurtsiesRepl (BaseRepl ):
3333 def __init__ (self , config , locals_ , banner , interp = None ,
34- paste = None , interactive = True ):
34+ paste = None ):
3535 self .input_generator = curtsies .input .Input (
36- keynames = 'curtsies' ,
37- sigint_event = True ,
38- paste_threshold = None )
36+ keynames = 'curtsies' ,
37+ sigint_event = True ,
38+ paste_threshold = None )
3939 self .window = curtsies .window .CursorAwareWindow (
40- sys .stdout ,
41- sys .stdin ,
42- keep_last_line = True ,
43- hide_cursor = False ,
44- extra_bytes_callback = self .input_generator .unget_bytes )
40+ sys .stdout ,
41+ sys .stdin ,
42+ keep_last_line = True ,
43+ hide_cursor = False ,
44+ extra_bytes_callback = self .input_generator .unget_bytes )
4545
46- self .request_refresh = self .input_generator .event_trigger (
46+ self ._request_refresh = self .input_generator .event_trigger (
4747 bpythonevents .RefreshRequestEvent )
48- self .schedule_refresh = self .input_generator .scheduled_event_trigger (
48+ self ._schedule_refresh = self .input_generator .scheduled_event_trigger (
4949 bpythonevents .ScheduledRefreshRequestEvent )
50- self .request_reload = self .input_generator .threadsafe_event_trigger (
50+ self ._request_reload = self .input_generator .threadsafe_event_trigger (
5151 bpythonevents .ReloadEvent )
5252 self .interrupting_refresh = (self .input_generator
5353 .threadsafe_event_trigger (lambda : None ))
@@ -57,22 +57,21 @@ def __init__(self, config, locals_, banner, interp=None,
5757 with self .input_generator :
5858 pass # temp hack to get .original_stty
5959
60- Repl .__init__ (self ,
61- config = config ,
60+ BaseRepl .__init__ (self ,
6261 locals_ = locals_ ,
63- request_refresh = self .request_refresh ,
64- schedule_refresh = self .schedule_refresh ,
65- request_reload = self .request_reload ,
66- request_undo = self .request_undo ,
67- get_term_hw = self .window .get_term_hw ,
68- get_cursor_vertical_diff = self .window .get_cursor_vertical_diff ,
62+ config = config ,
6963 banner = banner ,
7064 interp = interp ,
71- interactive = interactive ,
72- orig_tcattrs = self .input_generator .original_stty ,
73- on_suspend = self .on_suspend ,
74- after_suspend = self .after_suspend )
65+ orig_tcattrs = self .input_generator .original_stty )
66+
67+ def get_term_hw (self ):
68+ return self .window .get_term_hw ()
69+
70+ def get_cursor_vertical_diff (self ):
71+ return self .window .get_cursor_vertical_diff ()
7572
73+ def get_top_usable_line (self ):
74+ return self .window .top_usable_row
7675
7776 def on_suspend (self ):
7877 self .window .__exit__ (None , None , None )
@@ -87,7 +86,7 @@ def process_event(self, e):
8786 """If None is passed in, just paint the screen"""
8887 try :
8988 if e is not None :
90- Repl .process_event (self , e )
89+ BaseRepl .process_event (self , e )
9190 except (SystemExitFromCodeGreenlet , SystemExit ) as err :
9291 array , cursor_pos = self .paint (
9392 about_to_exit = True ,
@@ -188,14 +187,14 @@ def main(args=None, locals_=None, banner=None, welcome_message=None):
188187 print (bpargs .version_banner ())
189188 if banner is not None :
190189 print (banner )
190+ global repl
191+ repl = FullCurtsiesRepl (config , locals_ , welcome_message , interp , paste )
191192 try :
192- r = FullCurtsiesRepl (config , locals_ , welcome_message , interp , paste ,
193- interactive = (not exec_args ))
194- with r .input_generator :
195- with r .window as win :
196- with r :
197- r .height , r .width = win .t .height , win .t .width
198- exit_value = r .mainloop ()
193+ with repl .input_generator :
194+ with repl .window as win :
195+ with repl :
196+ repl .height , repl .width = win .t .height , win .t .width
197+ exit_value = repl .mainloop ()
199198 except (SystemExitFromCodeGreenlet , SystemExit ) as e :
200199 exit_value = e .args
201200 return extract_exit_value (exit_value )
0 commit comments