summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Rosenthal <jrosenthal@jhu.edu>2010-03-28 00:02:44 +0100
committerJesse Rosenthal <jrosenthal@jhu.edu>2010-03-28 00:02:44 +0100
commit61a547bd3e2760f1f835762f92c83cff2c1c71e5 (patch)
tree9fd235e233ac35e57a24de11dc7b6b04769b64fb
parent8b84f00cce6e64336e0ac62573ab181348112464 (diff)
implement sort order for notmuch show
-rw-r--r--cnotmuch/message.py10
-rwxr-xr-xnotmuch36
2 files changed, 32 insertions, 14 deletions
diff --git a/cnotmuch/message.py b/cnotmuch/message.py
index 7274c6d..6a68c92 100644
--- a/cnotmuch/message.py
+++ b/cnotmuch/message.py
@@ -721,7 +721,7 @@ class Message(object):
easy to change to a new format when the format changes."""
format = self.format_message_internal()
- output = "\n\fmessage{ id:%s depth:%d match:%d filename:%s" \
+ output = "\fmessage{ id:%s depth:%d match:%d filename:%s" \
% (format['id'], indent, format['match'], format['filename'])
output += "\n\fheader{"
@@ -729,7 +729,7 @@ class Message(object):
output += "\n%s (%s) (" % (format["headers"]["from"],
format["headers"]["date"])
output += ", ".join(format["tags"])
- output += ")\n"
+ output += ")"
output += "\nSubject: %s" % format["headers"]["subject"]
output += "\nFrom: %s" % format["headers"]["from"]
@@ -739,7 +739,7 @@ class Message(object):
if format["headers"]["bcc"]:
output += "\nBcc: %s" % format["headers"]["bcc"]
output += "\nDate: %s" % format["headers"]["date"]
- output += "\nheader}\f"
+ output += "\n\fheader}"
output += "\n\fbody{"
@@ -748,7 +748,7 @@ class Message(object):
for p in parts:
if not p.has_key("filename"):
output += "\n\fpart{ "
- output += "ID: %d, Content-type:%s\n" % (p["id"],
+ output += "ID: %d, Content-type: %s\n" % (p["id"],
p["content_type"])
if p.has_key("content"):
output += "\n%s\n" % p["content"]
@@ -763,7 +763,7 @@ class Message(object):
output += "\n\fattachment}\n"
output += "\n\fbody}\n"
- output += "\n\fmessage}\n"
+ output += "\n\fmessage}"
return output
diff --git a/notmuch b/notmuch
index c01dab3..2bb496f 100755
--- a/notmuch
+++ b/notmuch
@@ -290,16 +290,34 @@ if __name__ == '__main__':
#-------------------------------------
elif sys.argv[1] == 'search':
db = Database()
- if len(sys.argv) == 2:
- #no further search term
- querystr=''
- else:
- #mangle arguments wrapping terms with spaces in quotes
- querystr = quote_query_line(sys.argv[2:])
+ query_string = ''
+ sort_order="newest-first"
+ first_search_term = None
+ for (i, arg) in enumerate(sys.argv[1:]):
+ if arg.startswith('--sort='):
+ sort_order=arg.split("=")[1]
+ if not sort_order in ("oldest-first", "newest-first"):
+ raise Exception("unknown sort order")
+ elif not arg.startswith('--'):
+ #save the position of the first sys.argv that is a search term
+ first_search_term = i+1
+
+ if first_search_term:
+ #mangle arguments wrapping terms with spaces in quotes
+ querystr = quote_query_line(sys.argv[first_search_term:])
+
+
logging.debug("search "+querystr)
- t = Query(db,querystr).search_threads()
+ qry = Query(db,querystr)
+ if sort_order == "oldest-first":
+ qry.set_sort(Query.SORT.OLDEST_FIRST)
+ else:
+ qry.set_sort(Query.SORT.NEWEST_FIRST)
+ t = qry.search_threads()
+
for thread in t:
- print(str(thread))
+ print(str(thread))
+
#-------------------------------------
elif sys.argv[1] == 'show':
entire_thread = False
@@ -344,7 +362,7 @@ if __name__ == '__main__':
first_toplevel = False
- msgs.print_messages(out_format, 0, True)
+ msgs.print_messages(out_format, 0, entire_thread)
if out_format.lower() == "json":
sys.stdout.write("]")