mirror of
https://github.com/asciinema/asciinema.git
synced 2025-12-16 11:48:13 +01:00
Add breakpoints
This commit is contained in:
@@ -419,6 +419,9 @@ quiet = true
|
|||||||
; default: C-\ (control + backslash)
|
; default: C-\ (control + backslash)
|
||||||
pause_key = C-p
|
pause_key = C-p
|
||||||
|
|
||||||
|
; Define hotkey for adding a breakpoint, default: None
|
||||||
|
add_breakpoint_key = C-b
|
||||||
|
|
||||||
; Define hotkey prefix key - when defined other recording hotkeys must
|
; Define hotkey prefix key - when defined other recording hotkeys must
|
||||||
; be preceeded by it, default: no prefix
|
; be preceeded by it, default: no prefix
|
||||||
prefix_key = C-a
|
prefix_key = C-a
|
||||||
|
|||||||
@@ -33,6 +33,9 @@ class writer(file_writer):
|
|||||||
def write_stdin(self, ts: float, data: Any) -> None:
|
def write_stdin(self, ts: float, data: Any) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def write_breakpoint(self, ts: float) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
# pylint: disable=consider-using-with
|
# pylint: disable=consider-using-with
|
||||||
def _open_file(self) -> None:
|
def _open_file(self) -> None:
|
||||||
if self.path == "-":
|
if self.path == "-":
|
||||||
|
|||||||
@@ -145,6 +145,9 @@ class writer(file_writer):
|
|||||||
data = self.stdin_decoder.decode(data)
|
data = self.stdin_decoder.decode(data)
|
||||||
self.__write_event(ts, "i", data)
|
self.__write_event(ts, "i", data)
|
||||||
|
|
||||||
|
def write_breakpoint(self, ts: float) -> None:
|
||||||
|
self.__write_event(ts, "b", "")
|
||||||
|
|
||||||
# pylint: disable=consider-using-with
|
# pylint: disable=consider-using-with
|
||||||
def _open_file(self) -> None:
|
def _open_file(self) -> None:
|
||||||
if self.path == "-":
|
if self.path == "-":
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class RecordCommand(Command): # pylint: disable=too-many-instance-attributes
|
|||||||
self.key_bindings = {
|
self.key_bindings = {
|
||||||
"prefix": config.record_prefix_key,
|
"prefix": config.record_prefix_key,
|
||||||
"pause": config.record_pause_key,
|
"pause": config.record_pause_key,
|
||||||
|
"add_breakpoint": config.record_add_breakpoint_key,
|
||||||
}
|
}
|
||||||
|
|
||||||
# pylint: disable=too-many-branches
|
# pylint: disable=too-many-branches
|
||||||
|
|||||||
@@ -136,6 +136,10 @@ class Config:
|
|||||||
def record_pause_key(self) -> Any:
|
def record_pause_key(self) -> Any:
|
||||||
return self.__get_key("record", "pause", "C-\\")
|
return self.__get_key("record", "pause", "C-\\")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def record_add_breakpoint_key(self) -> Any:
|
||||||
|
return self.__get_key("record", "add_breakpoint")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def play_idle_time_limit(self) -> Optional[float]:
|
def play_idle_time_limit(self) -> Optional[float]:
|
||||||
fallback = self.config.getfloat(
|
fallback = self.config.getfloat(
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ def record(
|
|||||||
prefix_mode: bool = False
|
prefix_mode: bool = False
|
||||||
prefix_key = key_bindings.get("prefix")
|
prefix_key = key_bindings.get("prefix")
|
||||||
pause_key = key_bindings.get("pause")
|
pause_key = key_bindings.get("pause")
|
||||||
|
add_breakpoint_key = key_bindings.get("add_breakpoint")
|
||||||
|
|
||||||
def set_pty_size() -> None:
|
def set_pty_size() -> None:
|
||||||
cols, rows = get_tty_size()
|
cols, rows = get_tty_size()
|
||||||
@@ -58,7 +59,9 @@ def record(
|
|||||||
prefix_mode = True
|
prefix_mode = True
|
||||||
return
|
return
|
||||||
|
|
||||||
if prefix_mode or (not prefix_key and data in [pause_key]):
|
if prefix_mode or (
|
||||||
|
not prefix_key and data in [pause_key, add_breakpoint_key]
|
||||||
|
):
|
||||||
prefix_mode = False
|
prefix_mode = False
|
||||||
|
|
||||||
if data == pause_key:
|
if data == pause_key:
|
||||||
@@ -71,6 +74,11 @@ def record(
|
|||||||
pause_time = time.time()
|
pause_time = time.time()
|
||||||
notify("Paused recording")
|
notify("Paused recording")
|
||||||
|
|
||||||
|
elif data == add_breakpoint_key:
|
||||||
|
assert start_time is not None
|
||||||
|
writer.write_breakpoint(time.time() - start_time)
|
||||||
|
notify("Added breakpoint")
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
remaining_data = data
|
remaining_data = data
|
||||||
|
|||||||
@@ -131,6 +131,9 @@ class async_writer(async_worker):
|
|||||||
def write_stdout(self, ts: float, data: Any) -> None:
|
def write_stdout(self, ts: float, data: Any) -> None:
|
||||||
self.enqueue([ts, "o", data])
|
self.enqueue([ts, "o", data])
|
||||||
|
|
||||||
|
def write_breakpoint(self, ts: float) -> None:
|
||||||
|
self.enqueue([ts, "b", None])
|
||||||
|
|
||||||
def run(self) -> None:
|
def run(self) -> None:
|
||||||
try:
|
try:
|
||||||
with self.writer as w:
|
with self.writer as w:
|
||||||
@@ -143,6 +146,8 @@ class async_writer(async_worker):
|
|||||||
w.write_stdout(self.time_offset + ts, data)
|
w.write_stdout(self.time_offset + ts, data)
|
||||||
elif etype == "i":
|
elif etype == "i":
|
||||||
w.write_stdin(self.time_offset + ts, data)
|
w.write_stdin(self.time_offset + ts, data)
|
||||||
|
elif etype == "b":
|
||||||
|
w.write_breakpoint(self.time_offset + ts)
|
||||||
except IOError:
|
except IOError:
|
||||||
for event in iter(self.queue.get, None):
|
for event in iter(self.queue.get, None):
|
||||||
pass
|
pass
|
||||||
|
|||||||
Reference in New Issue
Block a user