mirror of
https://github.com/python/cpython.git
synced 2025-07-17 00:05:20 +00:00
gh-131507: Add support for syntax highlighting in PyREPL (GH-133247)
Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com> Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
This commit is contained in:
parent
bfcbb28223
commit
fac41f56d4
21 changed files with 654 additions and 99 deletions
|
@ -21,6 +21,7 @@
|
|||
|
||||
from __future__ import annotations
|
||||
import os
|
||||
import time
|
||||
|
||||
# Categories of actions:
|
||||
# killing
|
||||
|
@ -31,6 +32,7 @@ import os
|
|||
# finishing
|
||||
# [completion]
|
||||
|
||||
from .trace import trace
|
||||
|
||||
# types
|
||||
if False:
|
||||
|
@ -471,19 +473,24 @@ class show_history(Command):
|
|||
|
||||
|
||||
class paste_mode(Command):
|
||||
|
||||
def do(self) -> None:
|
||||
self.reader.paste_mode = not self.reader.paste_mode
|
||||
self.reader.dirty = True
|
||||
|
||||
|
||||
class enable_bracketed_paste(Command):
|
||||
class perform_bracketed_paste(Command):
|
||||
def do(self) -> None:
|
||||
self.reader.paste_mode = True
|
||||
self.reader.in_bracketed_paste = True
|
||||
|
||||
class disable_bracketed_paste(Command):
|
||||
def do(self) -> None:
|
||||
self.reader.paste_mode = False
|
||||
self.reader.in_bracketed_paste = False
|
||||
self.reader.dirty = True
|
||||
done = "\x1b[201~"
|
||||
data = ""
|
||||
start = time.time()
|
||||
while done not in data:
|
||||
self.reader.console.wait(100)
|
||||
ev = self.reader.console.getpending()
|
||||
data += ev.data
|
||||
trace(
|
||||
"bracketed pasting of {l} chars done in {s:.2f}s",
|
||||
l=len(data),
|
||||
s=time.time() - start,
|
||||
)
|
||||
self.reader.insert(data.replace(done, ""))
|
||||
self.reader.last_refresh_cache.invalidated = True
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue