feat: sort completions in completions_raw_read_only method

This commit is contained in:
Paul Gauthier (aider) 2024-10-04 11:17:47 -07:00
parent 50f88a8d28
commit 0c743ce8e8

View file

@ -603,27 +603,41 @@ class Commands:
# Adjust the start_position to replace all of 'after_command' # Adjust the start_position to replace all of 'after_command'
adjusted_start_position = -len(after_command) adjusted_start_position = -len(after_command)
# Collect all completions
all_completions = []
# Iterate over the completions and modify them # Iterate over the completions and modify them
for completion in path_completer.get_completions(new_document, complete_event): for completion in path_completer.get_completions(new_document, complete_event):
quoted_text = self.quote_fname(after_command + completion.text) quoted_text = self.quote_fname(after_command + completion.text)
yield Completion( all_completions.append(
text=quoted_text, Completion(
start_position=adjusted_start_position, text=quoted_text,
display=completion.display, start_position=adjusted_start_position,
style=completion.style, display=completion.display,
selected_style=completion.selected_style, style=completion.style,
selected_style=completion.selected_style,
)
) )
# Add completions from the 'add' command # Add completions from the 'add' command
add_completions = self.completions_add() add_completions = self.completions_add()
for completion in add_completions: for completion in add_completions:
if after_command in completion: if after_command in completion:
yield Completion( all_completions.append(
text=completion, Completion(
start_position=adjusted_start_position, text=completion,
display=completion, start_position=adjusted_start_position,
display=completion,
)
) )
# Sort all completions based on their text
sorted_completions = sorted(all_completions, key=lambda c: c.text)
# Yield the sorted completions
for completion in sorted_completions:
yield completion
def completions_add(self): def completions_add(self):
files = set(self.coder.get_all_relative_files()) files = set(self.coder.get_all_relative_files())
files = files - set(self.coder.get_inchat_relative_files()) files = files - set(self.coder.get_inchat_relative_files())