12
12
import curtsies .input
13
13
import curtsies .events
14
14
15
- from bpython .curtsiesfrontend .repl import Repl
15
+ from bpython .curtsiesfrontend .repl import BaseRepl
16
16
from bpython .curtsiesfrontend .coderunner import SystemExitFromCodeGreenlet
17
17
from bpython import args as bpargs
18
18
from bpython import translations
25
25
logger = logging .getLogger (__name__ )
26
26
27
27
28
- # repl = None # global for `from bpython.curtsies import repl`
28
+ repl = None # global for `from bpython.curtsies import repl`
29
29
# WARNING Will be a problem if more than one repl is ever instantiated this way
30
30
31
31
32
- class FullCurtsiesRepl (Repl ):
32
+ class FullCurtsiesRepl (BaseRepl ):
33
33
def __init__ (self , config , locals_ , banner , interp = None ,
34
- paste = None , interactive = True ):
34
+ paste = None ):
35
35
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 )
39
39
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 )
45
45
46
- self .request_refresh = self .input_generator .event_trigger (
46
+ self ._request_refresh = self .input_generator .event_trigger (
47
47
bpythonevents .RefreshRequestEvent )
48
- self .schedule_refresh = self .input_generator .scheduled_event_trigger (
48
+ self ._schedule_refresh = self .input_generator .scheduled_event_trigger (
49
49
bpythonevents .ScheduledRefreshRequestEvent )
50
- self .request_reload = self .input_generator .threadsafe_event_trigger (
50
+ self ._request_reload = self .input_generator .threadsafe_event_trigger (
51
51
bpythonevents .ReloadEvent )
52
52
self .interrupting_refresh = (self .input_generator
53
53
.threadsafe_event_trigger (lambda : None ))
@@ -57,22 +57,21 @@ def __init__(self, config, locals_, banner, interp=None,
57
57
with self .input_generator :
58
58
pass # temp hack to get .original_stty
59
59
60
- Repl .__init__ (self ,
61
- config = config ,
60
+ BaseRepl .__init__ (self ,
62
61
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 ,
69
63
banner = banner ,
70
64
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 ()
75
72
73
+ def get_top_usable_line (self ):
74
+ return self .window .top_usable_row
76
75
77
76
def on_suspend (self ):
78
77
self .window .__exit__ (None , None , None )
@@ -87,7 +86,7 @@ def process_event(self, e):
87
86
"""If None is passed in, just paint the screen"""
88
87
try :
89
88
if e is not None :
90
- Repl .process_event (self , e )
89
+ BaseRepl .process_event (self , e )
91
90
except (SystemExitFromCodeGreenlet , SystemExit ) as err :
92
91
array , cursor_pos = self .paint (
93
92
about_to_exit = True ,
@@ -188,14 +187,14 @@ def main(args=None, locals_=None, banner=None, welcome_message=None):
188
187
print (bpargs .version_banner ())
189
188
if banner is not None :
190
189
print (banner )
190
+ global repl
191
+ repl = FullCurtsiesRepl (config , locals_ , welcome_message , interp , paste )
191
192
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 ()
199
198
except (SystemExitFromCodeGreenlet , SystemExit ) as e :
200
199
exit_value = e .args
201
200
return extract_exit_value (exit_value )
0 commit comments