Skip to content

Commit a2fc4e9

Browse files
ability to use arrow keys to navigate through previous commands (#37)
1 parent fa0eaec commit a2fc4e9

File tree

1 file changed

+77
-6
lines changed

1 file changed

+77
-6
lines changed

idd.py

Lines changed: 77 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import sys
33

44
from textual import on
5+
from textual import events
56
from textual.app import App, ComposeResult
67
from textual.reactive import Reactive
78
from textual.widgets import Input
@@ -50,6 +51,12 @@ def __init__(self, disable_asm=False, disable_registers=False):
5051
super().__init__()
5152
self.disable_asm = disable_asm
5253
self.disable_registers = disable_registers
54+
self.common_history = [""]
55+
self.common_history_index = 0
56+
self.base_history = [""]
57+
self.base_history_index = 0
58+
self.regressed_history = [""]
59+
self.regressed_history_index = 0
5360

5461
async def set_command_result(self, version) -> None:
5562
state = Debugger.get_state(version)
@@ -282,29 +289,93 @@ async def execute_debugger_command(self, event: Input.Changed) -> None:
282289
self.diff_area1.append([self.parallel_command_bar.value])
283290
self.diff_area2.append([self.parallel_command_bar.value])
284291

285-
await self.set_common_command_result(result)
292+
# append to history
293+
self.common_history.append(self.parallel_command_bar.value)
294+
self.common_history_index = len(self.common_history)
295+
296+
else:
297+
# execute last command from history
298+
result = Debugger.run_parallel_command(self.common_history[-1])
299+
300+
self.diff_area1.append([self.parallel_command_bar.value])
301+
self.diff_area2.append([self.parallel_command_bar.value])
302+
303+
await self.set_common_command_result(result)
286304

287-
self.parallel_command_bar.value = ""
305+
self.parallel_command_bar.value = ""
288306

289307
elif event.control.id == 'base-command-bar':
290308
if self.base_command_bar.value != "":
291309
result = Debugger.run_single_command(self.base_command_bar.value, "base")
292310
self.diff_area1.append([self.base_command_bar.value])
293311
self.diff_area1.append(result)
294312

295-
await self.set_command_result("base")
313+
# append to history
314+
self.base_history.append(self.base_command_bar.value)
315+
self.base_history_index = len(self.base_history)
316+
317+
else:
318+
# execute last command from history
319+
result = Debugger.run_single_command(self.base_history[-1], "base")
320+
321+
self.diff_area1.append([self.base_command_bar.value])
322+
self.diff_area1.append(result)
323+
324+
await self.set_command_result("base")
296325

297-
self.base_command_bar.value = ""
326+
self.base_command_bar.value = ""
298327

299328
elif event.control.id == 'regressed-command-bar':
300329
if self.regressed_command_bar.value != "":
301330
result = Debugger.run_single_command(self.regressed_command_bar.value, "regressed")
302331
self.diff_area2.append([self.regressed_command_bar.value])
303332
self.diff_area2.append(result)
304333

305-
await self.set_command_result("regressed")
334+
# append to history
335+
self.regressed_history.append(self.regressed_command_bar.value)
336+
self.regressed_history_index = len(self.regressed_history)
337+
338+
else:
339+
# execute last command from history
340+
result = Debugger.run_single_command(self.regressed_history[-1], "regressed")
341+
self.diff_area2.append([self.regressed_command_bar.value])
342+
self.diff_area2.append(result)
343+
344+
await self.set_command_result("regressed")
345+
346+
self.regressed_command_bar.value = ""
347+
348+
async def on_key(self, event: events.Key) -> None:
349+
if self.focused.id == "parallel-command-bar":
350+
if event.key == "up":
351+
self.common_history_index = (self.common_history_index - 1) % len(self.common_history)
352+
elif event.key == "down":
353+
self.common_history_index = (self.common_history_index + 1) % len(self.common_history)
354+
else:
355+
return
356+
357+
self.parallel_command_bar.value = self.common_history[self.common_history_index]
358+
359+
elif self.focused.id == "base-command-bar":
360+
if event.key == "up":
361+
self.base_history_index = (self.base_history_index - 1) % len(self.base_history)
362+
elif event.key == "down":
363+
self.base_history_index = (self.base_history_index + 1) % len(self.base_history)
364+
else:
365+
return
366+
367+
self.base_command_bar.value = self.base_history[self.base_history_index]
368+
369+
elif self.focused.id == "regressed-command-bar":
370+
if event.key == "up":
371+
self.regressed_history_index = (self.regressed_history_index - 1) % len(self.regressed_history)
372+
elif event.key == "down":
373+
self.regressed_history_index = (self.regressed_history_index + 1) % len(self.regressed_history)
374+
else:
375+
return
376+
377+
self.regressed_command_bar.value = self.regressed_history[self.regressed_history_index]
306378

307-
self.regressed_command_bar.value = ""
308379

309380
if __name__ == "__main__":
310381
Debugger = None

0 commit comments

Comments
 (0)