diff --git a/jrnl/jrnl.py b/jrnl/jrnl.py index 1c0b97e9..9572f4bd 100644 --- a/jrnl/jrnl.py +++ b/jrnl/jrnl.py @@ -328,7 +328,11 @@ def _other_entries(journal: Journal, entries: list["Entry"]) -> list["Entry"]: def _edit_search_results( - config: dict, journal: Journal, old_entries: list["Entry"], **kwargs + args: "Namespace", + config: dict, + journal: Journal, + old_entries: list["Entry"], + **kwargs ) -> None: """ 1. Send the given journal entries to the user-configured editor @@ -350,6 +354,10 @@ def _edit_search_results( # Get stats now for summary later old_stats = _get_predit_stats(journal) + # If we're adding a new entry (due to no entries matching the + # search), apply the change time operation if it was requested + do_change_time = not journal.entries and args.change_time + # Send user to the editor edited = get_text_from_editor(config, journal.editable_str()) journal.parse_editable_str(edited) @@ -358,9 +366,16 @@ def _edit_search_results( _print_edited_summary(journal, old_stats) # Put back entries we separated earlier, sort, and write the journal - journal.entries += other_entries - journal.sort() - journal.write() + if do_change_time: + # If we're changing time, _change_time_search_results will + # handle the recombining, sorting, and saving + _change_time_search_results( + args, journal, other_entries, no_prompt=True, **kwargs + ) + else: + journal.entries += other_entries + journal.sort() + journal.write() def _print_edited_summary( diff --git a/tests/bdd/features/change_time.feature b/tests/bdd/features/change_time.feature index 5f6d419c..a057d4be 100644 --- a/tests/bdd/features/change_time.feature +++ b/tests/bdd/features/change_time.feature @@ -243,19 +243,19 @@ Feature: Change entry times in journal # | basic_dayone.yaml | @todo - Scenario Outline: --change-time with --edit and an empty search adds an entry + Scenario Outline: --change-time with --edit and an empty search adds an entry at the specified time Given we use the config "" And we write nothing to the editor if opened And we use the password "test" if prompted And we append to the editor if opened - [2022-11-13 11:25] worked on jrnl tests - When we run "jrnl -on tomorrow --change-time --edit" + worked on jrnl tests + When we run "jrnl -on tomorrow --change-time '2022-11-13 13:25' --edit" When we run "jrnl -99 --short" Then the output should be 2020-08-29 11:11 Entry the first. 2020-08-31 14:32 A second entry in what I hope to be a long series. 2020-09-24 09:14 The third entry finally after weeks without writing. - 2022-11-13 11:25 worked on jrnl tests + 2022-11-13 13:25 worked on jrnl tests Examples: Configs | config_file |