aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy
diff options
context:
space:
mode:
authorHenrique <typoon@gmail.com>2019-11-25 15:41:58 -0500
committerHenrique <typoon@gmail.com>2019-11-25 15:41:58 -0500
commit046779615f0a492d567300f08de79eaf5f780d84 (patch)
treea2db3d7e287624613d995c2773a9256d88ac9ec1 /mitmproxy
parentbbb7eb692f58ebfcf2fb3b0d6d20ec6dc60a99de (diff)
downloadmitmproxy-046779615f0a492d567300f08de79eaf5f780d84.tar.gz
mitmproxy-046779615f0a492d567300f08de79eaf5f780d84.tar.bz2
mitmproxy-046779615f0a492d567300f08de79eaf5f780d84.zip
Added some navigation keys to the command bar same way as in a Linux
terminal
Diffstat (limited to 'mitmproxy')
-rw-r--r--mitmproxy/tools/console/commander/commander.py42
1 files changed, 37 insertions, 5 deletions
diff --git a/mitmproxy/tools/console/commander/commander.py b/mitmproxy/tools/console/commander/commander.py
index d751422b..feaa4e36 100644
--- a/mitmproxy/tools/console/commander/commander.py
+++ b/mitmproxy/tools/console/commander/commander.py
@@ -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)