summaryrefslogtreecommitdiff
path: root/alot/commands/search.py
diff options
context:
space:
mode:
Diffstat (limited to 'alot/commands/search.py')
-rw-r--r--alot/commands/search.py28
1 files changed, 24 insertions, 4 deletions
diff --git a/alot/commands/search.py b/alot/commands/search.py
index 27625ce1..e0a4db56 100644
--- a/alot/commands/search.py
+++ b/alot/commands/search.py
@@ -35,19 +35,32 @@ class OpenThreadCommand(Command):
ui.buffer_open(tb)
tb.focus_next_matching(query)
+_opt_reverse = (['--reverse'],
+ { 'help' : 'display messages in reverse order',
+ 'default' : False,
+ 'action' : 'store_true' }
+)
@registerCommand(MODE, 'refine', help='refine query', arguments=[
(['--sort'], {'help': 'sort order',
- 'choices': list(SORT_NAME.keys())}),
+ 'choices': list(SORT_NAME.keys())}), _opt_reverse,
(['query'], {'nargs': argparse.REMAINDER, 'help': 'search string'})])
@registerCommand(MODE, 'sort', help='set sort order', arguments=[
+ _opt_reverse,
(['sort'], {'help': 'sort order', 'choices': [
'oldest_first', 'newest_first', 'message_id', 'unsorted']}),
])
+@registerCommand(MODE, 'reverse',
+ help = 'toggle whether the sorting order is reversed',
+ forced = { 'toggle_reverse' : True })
class RefineCommand(Command):
+ _reverse = None
+ _toggle_reverse = None
+
"""refine the querystring of this buffer"""
- def __init__(self, query=None, sort=None, **kwargs):
+ def __init__(self, query=None, sort=None, reverse = None,
+ toggle_reverse = False, **kwargs):
"""
:param query: new querystring given as list of strings as returned by
argparse
@@ -57,11 +70,13 @@ class RefineCommand(Command):
self.querystring = None
else:
self.querystring = ' '.join(query)
- self.sort_order = SORT_NAME[sort] if sort else None
+ self.sort_order = SORT_NAME[sort] if sort else None
+ self._reverse = reverse
+ self._toggle_reverse = toggle_reverse
super().__init__(**kwargs)
def apply(self, ui):
- if self.querystring or self.sort_order:
+ if self.querystring or self.sort_order or self._toggle_reverse:
sbuffer = ui.current_buffer
oldquery = sbuffer.querystring
if self.querystring not in [None, oldquery]:
@@ -69,6 +84,11 @@ class RefineCommand(Command):
sbuffer = ui.current_buffer
if self.sort_order:
sbuffer.sort_order = self.sort_order
+ if self._reverse is not None:
+ sbuffer.reverse = self._reverse
+ if self._toggle_reverse:
+ sbuffer.reverse = not sbuffer.reverse
+
sbuffer.rebuild()
ui.update()
else: