mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-02-02 00:05:27 +00:00
Added some navigation keys to the command bar same way as in a Linux
terminal
This commit is contained in:
parent
bbb7eb692f
commit
046779615f
@ -67,6 +67,11 @@ class CommandBuffer:
|
||||
else:
|
||||
self._cursor = x
|
||||
|
||||
def set_text(self, text: str) -> None:
|
||||
self.text = text
|
||||
self._cursor = len(self.text)
|
||||
self.render()
|
||||
|
||||
def render(self):
|
||||
parts, remaining = self.master.commands.parse_partial(self.text)
|
||||
ret = []
|
||||
@ -133,6 +138,12 @@ class CommandBuffer:
|
||||
self.cursor = self.cursor - 1
|
||||
self.completion = None
|
||||
|
||||
def delete(self) -> None:
|
||||
if self.cursor == len(self.text):
|
||||
return
|
||||
self.text = self.text[:self.cursor] + self.text[self.cursor + 1:]
|
||||
self.completion = None
|
||||
|
||||
def insert(self, k: str) -> None:
|
||||
"""
|
||||
Inserts text at the cursor.
|
||||
@ -197,16 +208,37 @@ class CommandEdit(urwid.WidgetWrap):
|
||||
self.update()
|
||||
|
||||
def keypress(self, size, key) -> None:
|
||||
if key == "backspace":
|
||||
if key == "delete":
|
||||
self.cbuf.delete()
|
||||
elif key == "ctrl a" or key == 'home':
|
||||
self.cbuf.cursor = 0
|
||||
elif key == "ctrl e" or key == 'end':
|
||||
self.cbuf.cursor = len(self.cbuf.text)
|
||||
elif key == "meta b":
|
||||
self.cbuf.cursor = self.cbuf.text.rfind(' ', 0, self.cbuf.cursor)
|
||||
elif key == "meta f":
|
||||
pos = self.cbuf.text.find(' ', self.cbuf.cursor + 1)
|
||||
if pos == -1:
|
||||
pos = len(self.cbuf.text)
|
||||
self.cbuf.cursor = pos
|
||||
elif key == "ctrl w":
|
||||
txt = self.cbuf.text.strip()
|
||||
if(txt != ''):
|
||||
chunks = txt.split(' ')[0:-1]
|
||||
if len(chunks) == 0:
|
||||
self.cbuf.set_text(' '.join(chunks))
|
||||
else:
|
||||
self.cbuf.set_text(' '.join(chunks) + ' ')
|
||||
elif key == "backspace":
|
||||
self.cbuf.backspace()
|
||||
elif key == "left":
|
||||
elif key == "left" or key == "ctrl b":
|
||||
self.cbuf.left()
|
||||
elif key == "right":
|
||||
elif key == "right" or key == "ctrl f":
|
||||
self.cbuf.right()
|
||||
elif key == "up":
|
||||
elif key == "up" or key == "ctrl p":
|
||||
self.history.add_command(self.cbuf)
|
||||
self.cbuf = self.history.get_prev() or self.cbuf
|
||||
elif key == "down":
|
||||
elif key == "down" or key == "ctrl n":
|
||||
self.cbuf = self.history.get_next() or self.cbuf
|
||||
elif key == "shift tab":
|
||||
self.cbuf.cycle_completion(False)
|
||||
|
Loading…
Reference in New Issue
Block a user