diff options
| author | Nate Sesti <sestinj@gmail.com> | 2023-06-22 13:04:49 -0700 | 
|---|---|---|
| committer | Nate Sesti <sestinj@gmail.com> | 2023-06-22 13:04:49 -0700 | 
| commit | 99e065d720fa345d96e98468b8a0fc8a7971c83b (patch) | |
| tree | 5842790307116e38e6616e811598a0240a12c887 | |
| parent | 0846a5dca6530a5cd6dad97952d2844a463a15e1 (diff) | |
| download | sncontinue-99e065d720fa345d96e98468b8a0fc8a7971c83b.tar.gz sncontinue-99e065d720fa345d96e98468b8a0fc8a7971c83b.tar.bz2 sncontinue-99e065d720fa345d96e98468b8a0fc8a7971c83b.zip  | |
more diff work, checkpoint
| -rw-r--r-- | continuedev/src/continuedev/steps/core/core.py | 40 | 
1 files changed, 14 insertions, 26 deletions
diff --git a/continuedev/src/continuedev/steps/core/core.py b/continuedev/src/continuedev/steps/core/core.py index d4ccda58..64f53c0f 100644 --- a/continuedev/src/continuedev/steps/core/core.py +++ b/continuedev/src/continuedev/steps/core/core.py @@ -271,6 +271,7 @@ class DefaultModelEditCodeStep(Step):          lines = []          unfinished_line = "" +        red_or_green_first = "green"          current_block_added = []          current_block_removed = []          last_diff_char = " " @@ -362,9 +363,15 @@ class DefaultModelEditCodeStep(Step):                      return True              return False -        def block_not_empty() -> bool: -            nonlocal current_block_added, current_block_removed -            return len(current_block_added) or len(current_block_removed) +        def should_end_current_block(next_diff_char: str) -> bool: +            nonlocal current_block_added, current_block_removed, last_diff_char +            if next_diff_char == " ": +                return len(current_block_added) or len(current_block_removed) +            elif next_diff_char == "-": +                return last_diff_char == "+" and len(current_block_removed) +            elif next_diff_char == "+": +                return last_diff_char == "-" and len(current_block_added) +            raise Exception("Invalid next_diff_char")          async def handle_generated_line(line: str):              nonlocal completion_lines_covered, lines, current_block_added, current_block_removed, offset_from_blocks, original_lines, current_block_start_of_insertion, matched_line, lines_covered_in_this_block, lines_same_in_this_block, current_line_in_file, completion_lines_covered, last_diff_char @@ -379,37 +386,18 @@ class DefaultModelEditCodeStep(Step):              next_diff_char = diff[current_line_in_file][0]              # If we need to start a new block, end the old one -            if next_diff_char != last_diff_char: +            if should_end_current_block(next_diff_char):                  await show_block_as_suggestion() - -            if next_diff_char == " ": -                if block_not_empty(): -                    await show_block_as_suggestion() -                  current_block_start_of_insertion = -1                  lines_same_in_this_block += 1              elif next_diff_char == "-":                  # Line was removed from the original, add it to the block -                if block_not_empty(): -                    # Matches something, add all lines up to this as red in the old block, then show the block -                    await show_block_as_suggestion() -                    # Begin next block! -                    lines_same_in_this_block = 0 -                    lines_covered_in_this_block = 0 -                current_block_start_of_insertion = -1 -                lines_same_in_this_block += 1 +                await add_red_to_block(line) +              elif next_diff_char == "+":                  # Line was added to the original, add it to the block - -                if block_not_empty(): -                    # Matches something, add all lines up to this as red in the old block, then show the block -                    await show_block_as_suggestion() -                    # Begin next block! -                    lines_same_in_this_block = 0 -                    lines_covered_in_this_block = 0 -                current_block_start_of_insertion = -1 -                lines_same_in_this_block += 1 +                await add_green_to_block(line)              else:                  raise Exception("Unexpected diff character: " +  | 
