aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy
diff options
context:
space:
mode:
authorHenrique <typoon@gmail.com>2019-11-27 08:06:40 -0500
committerHenrique <typoon@gmail.com>2019-11-27 08:06:40 -0500
commit8fbd0bb9ce082ebc32c86e1ad90563823b0ff4c7 (patch)
tree1377f372fed20de23a54612296076970b319d0da /mitmproxy
parent68b016e180ec1475391f2e8389ae1c708692c499 (diff)
parentb3b069f4680cbb7675d0d3d7cd738f55b5f48275 (diff)
downloadmitmproxy-8fbd0bb9ce082ebc32c86e1ad90563823b0ff4c7.tar.gz
mitmproxy-8fbd0bb9ce082ebc32c86e1ad90563823b0ff4c7.tar.bz2
mitmproxy-8fbd0bb9ce082ebc32c86e1ad90563823b0ff4c7.zip
Merge branch 'mitmproxy-improve-commander' of github.com:typoon/mitmproxy into command-history-file
Diffstat (limited to 'mitmproxy')
-rw-r--r--mitmproxy/tools/console/commander/commander.py49
1 files changed, 42 insertions, 7 deletions
diff --git a/mitmproxy/tools/console/commander/commander.py b/mitmproxy/tools/console/commander/commander.py
index ac313290..0f45aa1f 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.
@@ -159,26 +170,51 @@ 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":
+ prev_cursor = self.cbuf.cursor
+ pos = self.cbuf.text.rfind(' ', 0, self.cbuf.cursor - 1)
+ if pos == -1:
+ new_text = self.cbuf.text[self.cbuf.cursor:]
+ cursor_pos = 0
+ else:
+ txt_after = self.cbuf.text[self.cbuf.cursor:]
+ txt_before = self.cbuf.text[0:pos]
+ new_text = f"{txt_before} {txt_after}"
+ cursor_pos = prev_cursor - (prev_cursor - pos) + 1
+ self.cbuf.set_text(new_text)
+ self.cbuf.cursor = cursor_pos
+ elif key == "backspace":
self.cbuf.backspace()
if self.cbuf.text == '':
self.active_filter = False
self.master.commands.execute("command_history.filter ''")
self.filter_str = ''
- 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":
if self.active_filter is False:
self.active_filter = True
self.filter_str = self.cbuf.text
_cmd = command_lexer.quote(self.cbuf.text)
self.master.commands.execute("command_history.filter %s" % _cmd)
-
cmd = self.master.commands.execute("command_history.prev")
self.cbuf = CommandBuffer(self.master, cmd)
- elif key == "down":
+ elif key == "down" or key == "ctrl n":
prev_cmd = self.cbuf.text
cmd = self.master.commands.execute("command_history.next")
@@ -192,7 +228,6 @@ class CommandEdit(urwid.WidgetWrap):
self.cbuf = CommandBuffer(self.master, '')
else:
self.cbuf = CommandBuffer(self.master, cmd)
-
elif key == "shift tab":
self.cbuf.cycle_completion(False)
elif key == "tab":