diff --git a/aider/coders/editblock_coder.py b/aider/coders/editblock_coder.py index bcc367627..cfb9ba16c 100644 --- a/aider/coders/editblock_coder.py +++ b/aider/coders/editblock_coder.py @@ -341,7 +341,7 @@ def find_original_update_blocks(content): try: if not len(filename) or "`" in filename: filename = processed[-2].splitlines()[-2].strip() - if not len(filename) or "`" in filename: + if not len(filename) or "`" in filename or filename == "...": if current_filename: filename = current_filename else: diff --git a/tests/test_editblock.py b/tests/test_editblock.py index 27d5a60a0..85b3c87d2 100644 --- a/tests/test_editblock.py +++ b/tests/test_editblock.py @@ -345,6 +345,39 @@ new content = Path(file1).read_text(encoding="utf-8") self.assertEqual(content, orig_content) + def test_find_original_update_blocks_mupltiple_same_file(self): + edit = """ +Here's the change: + +```text +foo.txt +<<<<<<< HEAD +one +======= +two +>>>>>>> updated + +... + +<<<<<<< HEAD +three +======= +four +>>>>>>> updated +``` + +Hope you like it! +""" + + edits = list(eb.find_original_update_blocks(edit)) + self.assertEqual( + edits, + [ + ("foo.txt", "one\n", "two\n"), + ("foo.txt", "three\n", "four\n"), + ], + ) + if __name__ == "__main__": unittest.main()