summaryrefslogtreecommitdiff
path: root/cmd2.py
diff options
context:
space:
mode:
Diffstat (limited to 'cmd2.py')
-rwxr-xr-xcmd2.py49
1 files changed, 14 insertions, 35 deletions
diff --git a/cmd2.py b/cmd2.py
index 4befe019..93f0152c 100755
--- a/cmd2.py
+++ b/cmd2.py
@@ -1592,7 +1592,8 @@ class Cmd(cmd.Cmd):
| no arg: list all
| arg is integer: list one history item, by index
- | arg is string: string search
+ | a..b, a:b, a:, ..b -> list history items by a span of indices (inclusive)
+ | arg is string: list all commands matching string search
| arg is /enclosed in forward-slashes/: regular expression search
"""
# If arguments are being passed as a list instead of as a string
@@ -1602,10 +1603,20 @@ class Cmd(cmd.Cmd):
else:
arg = ''
+ # If an argument was supplied, then retrieve partial contents of the history
if arg:
- history = self.history.get(arg)
+ # If a character indicating a slice is present, retrieve a slice of the history
+ if '..' in arg or ':' in arg:
+ # Get a slice of history
+ history = self.history.span(arg)
+ else:
+ # Get item(s) from history by index or string search
+ history = self.history.get(arg)
else:
+ # If no arg given, then retrieve the entire history
history = self.history
+
+ # Display the history items retrieved
for hi in history:
if opts.script:
self.poutput(hi)
@@ -1628,38 +1639,6 @@ class Cmd(cmd.Cmd):
except IndexError:
return None
- def do_list(self, arg):
- """list [arg]: lists command(s) from history in a flexible/searchable way.
-
- :param arg: str - behavior varies as follows:
-
- * no arg -> list most recent command
- * arg is integer -> list one history item, by index
- * a..b, a:b, a:, ..b -> list spans from a (or start) to b (or end)
- * arg is string -> list all commands matching string search
- * arg is /enclosed in forward-slashes/ -> regular expression search
- """
- try:
- history = self.history.span(arg or '-1')
- except IndexError:
- history = self.history.search(arg)
- for hi in history:
- self.poutput(hi.pr())
-
- def help_list(self):
- """Print help for do_list()."""
- help_str = """Lists command(s) from history in a flexible/searchable way.
-
- Usage: list [arg]
-
- Where arg is:
- no arg -> list most recent command
- arg is integer -> list one history item, by index
- a..b, a:b, a:, ..b -> list spans from a (or start) to b (or end)
- arg is string -> list all commands matching string search
- arg is /enclosed in forward-slashes/ -> regular expression search"""
- self.stdout.write("{}\n".format(help_str))
-
def do_edit(self, arg):
"""Edit a file or command in a text editor.
@@ -2170,7 +2149,7 @@ class History(list):
raise IndexError
if not results.group('separator'):
return [self[self._to_index(results.group('start'))]]
- start = self._to_index(results.group('start'))
+ start = self._to_index(results.group('start')) or 0 # Ensure start is not None
end = self._to_index(results.group('end'))
reverse = False
if end is not None: