diff --git a/aider/coders/wholefile_coder.py b/aider/coders/wholefile_coder.py index 48e3339e3..2ba813dae 100644 --- a/aider/coders/wholefile_coder.py +++ b/aider/coders/wholefile_coder.py @@ -44,7 +44,7 @@ class WholeFileCoder(Coder): full_path = (Path(self.root) / fname).absolute() if mode == "diff" and full_path.exists(): - orig_lines = full_path.read_text().splitlines() + orig_lines = full_path.read_text().splitlines(keepends=True) show_diff = diffs.diff_partial_update( orig_lines, @@ -97,7 +97,7 @@ class WholeFileCoder(Coder): full_path = (Path(self.root) / fname).absolute() if mode == "diff" and full_path.exists(): - orig_lines = full_path.read_text().splitlines() + orig_lines = full_path.read_text().splitlines(keepends=True) show_diff = diffs.diff_partial_update( orig_lines, diff --git a/aider/diffs.py b/aider/diffs.py index a2a8c52f6..4608e8e18 100644 --- a/aider/diffs.py +++ b/aider/diffs.py @@ -33,6 +33,13 @@ def create_progress_bar(percentage): return bar +def assert_newlines(lines): + if not lines: + return + for line in lines: + assert line and line[-1] == "\n", line + + def diff_partial_update(lines_orig, lines_updated, final=False, fname=None): """ Given only the first part of an updated file, show the diff while @@ -43,6 +50,9 @@ def diff_partial_update(lines_orig, lines_updated, final=False, fname=None): # dump(lines_orig) # dump(lines_updated) + assert_newlines(lines_orig) + assert_newlines(lines_orig) + num_orig_lines = len(lines_orig) if final: