X Tutup
Skip to content

Commit 1f34051

Browse files
context manager for paste mode
1 parent 1389af4 commit 1f34051

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

bpython/curtsiesfrontend/repl.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import sys
1+
import code
2+
import contextlib
3+
import errno
4+
import greenlet
5+
import logging
26
import os
37
import re
4-
import logging
5-
import code
8+
import sys
69
import threading
7-
import greenlet
8-
import errno
910

1011
from bpython.autocomplete import Autocomplete, SIMPLE
1112
from bpython.repl import Repl as BpythonRepl
@@ -210,7 +211,7 @@ def smarter_request_refresh():
210211
self.stderr = FakeOutput(self.coderunner, self.send_to_stderr)
211212
self.stdin = FakeStdin(self.coderunner, self)
212213

213-
self.request_paint_to_clear_screen = False
214+
self.request_paint_to_clear_screen = False # next paint should clear screen
214215
self.last_events = [None] * 50
215216
self.presentation_mode = False
216217
self.paste_mode = False
@@ -287,10 +288,9 @@ def process_event(self, e):
287288
self.update_completion()
288289
return
289290
elif isinstance(e, events.PasteEvent):
290-
self.paste_mode = True
291-
for ee in e.events:
292-
self.process_simple_event(ee)
293-
self.paste_mode = False
291+
with self.in_paste_mode():
292+
for ee in e.events:
293+
self.process_simple_event(ee)
294294
self.update_completion()
295295

296296
elif e in self.rl_char_sequences:
@@ -896,10 +896,9 @@ def send_current_block_to_external_editor(self, filename=None):
896896
lines.pop()
897897
events = '\n'.join(lines + ([''] if len(lines) == 1 else ['', '']))
898898
self.clear_current_block()
899-
self.paste_mode = True
900-
for e in events:
901-
self.process_simple_event(e)
902-
self.paste_mode = False
899+
with self.in_paste_mode():
900+
for e in events:
901+
self.process_simple_event(e)
903902
self._current_line = ''
904903
self.cursor_offset_in_line = len(self._current_line)
905904

@@ -914,6 +913,13 @@ def process_simple_event(self, e):
914913
else:
915914
self.add_normal_character(e if len(e) == 1 else e[-1]) #strip control seq
916915

916+
@contextlib.contextmanager
917+
def in_paste_mode(self):
918+
orig_value = self.paste_mode
919+
self.paste_mode = True
920+
yield
921+
self.paste_mode = orig_value
922+
917923
def simple_repl():
918924
refreshes = []
919925
def request_refresh():

0 commit comments

Comments
 (0)
X Tutup