]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - patches/terminal_velocity_sort_found_notes.patch
Add note taking applications
[perso/Immae/Config/Nix.git] / patches / terminal_velocity_sort_found_notes.patch
diff --git a/patches/terminal_velocity_sort_found_notes.patch b/patches/terminal_velocity_sort_found_notes.patch
new file mode 100644 (file)
index 0000000..8296d54
--- /dev/null
@@ -0,0 +1,67 @@
+diff --git a/terminal_velocity/terminal_velocity.py b/terminal_velocity/terminal_velocity.py
+index db2eb05..bb77dc6 100755
+--- a/terminal_velocity/terminal_velocity.py
++++ b/terminal_velocity/terminal_velocity.py
+@@ -75,6 +75,10 @@ the default default will be used"""
+         default=defaults.get("log_file", "~/.tvlog"),
+         help="the file to log to (default: %(default)s)")
++    parser.add_argument("-s", "--sort", dest="sort", action="store",
++        default=defaults.get("sort", "date"),
++        help="the note sorting rules. Possible values: date, title (default: %(default)s)")
++
+     parser.add_argument("-p", "--print-config", dest="print_config",
+             action="store_true", default=False,
+             help="print your configuration settings then exit")
+@@ -120,7 +124,7 @@ the default default will be used"""
+     try:
+         urwid_ui.launch(notes_dir=args.notes_dir, editor=args.editor,
+                 extension=args.extension, extensions=args.extensions,
+-                exclude=args.exclude)
++                exclude=args.exclude, sort=args.sort)
+     except KeyboardInterrupt:
+         # Silence KeyboardInterrupt tracebacks on ctrl-c.
+         sys.exit()
+diff --git a/terminal_velocity/urwid_ui.py b/terminal_velocity/urwid_ui.py
+index 34cf4f6..caebcb9 100644
+--- a/terminal_velocity/urwid_ui.py
++++ b/terminal_velocity/urwid_ui.py
+@@ -237,11 +237,12 @@ class NoteFilterListBox(urwid.ListBox):
+ class MainFrame(urwid.Frame):
+     """The topmost urwid widget."""
+-    def __init__(self, notes_dir, editor, extension, extensions, exclude=None):
++    def __init__(self, notes_dir, editor, extension, extensions, exclude=None, sort="date"):
+         self.editor = editor
+         self.notebook = notebook.PlainTextNoteBook(notes_dir, extension,
+                 extensions, exclude=exclude)
++        self.sort = sort
+         # Don't filter the note list when the text in the search box changes.
+         self.suppress_filter = False
+@@ -408,7 +409,10 @@ class MainFrame(urwid.Frame):
+         # Sort the notes.
+         # TODO: Support different sort orderings.
+-        matching_notes.sort(key=lambda x: x.mtime, reverse=True)
++        if self.sort == "title":
++            matching_notes.sort(key=lambda x: x.title)
++        else:
++            matching_notes.sort(key=lambda x: x.mtime, reverse=True)
+         # Tell the list box to show only the matching notes.
+         self.list_box.filter(matching_notes)
+@@ -433,10 +437,10 @@ class MainFrame(urwid.Frame):
+         self.selected_note = note
+-def launch(notes_dir, editor, extension, extensions, exclude=None):
++def launch(notes_dir, editor, extension, extensions, exclude=None, sort="date"):
+     """Launch the user interface."""
+-    frame = MainFrame(notes_dir, editor, extension, extensions, exclude=exclude)
++    frame = MainFrame(notes_dir, editor, extension, extensions, exclude=exclude, sort=sort)
+     loop = urwid.MainLoop(frame, palette)
+     frame.loop = loop
+     loop.run()