fix: Add ConfirmGroup to confirm URL addition

This commit is contained in:
Paul Gauthier 2024-08-23 16:50:38 -07:00 committed by Paul Gauthier (aider)
parent 47294e7609
commit b26550d93f
2 changed files with 10 additions and 4 deletions

View file

@ -25,7 +25,7 @@ from rich.markdown import Markdown
from aider import __version__, models, prompts, urls, utils from aider import __version__, models, prompts, urls, utils
from aider.commands import Commands from aider.commands import Commands
from aider.history import ChatSummary from aider.history import ChatSummary
from aider.io import InputOutput from aider.io import ConfirmGroup, InputOutput
from aider.linter import Linter from aider.linter import Linter
from aider.llm import litellm from aider.llm import litellm
from aider.mdstream import MarkdownStream from aider.mdstream import MarkdownStream
@ -771,9 +771,10 @@ class Coder:
url_pattern = re.compile(r"(https?://[^\s/$.?#].[^\s]*[^\s,.])") url_pattern = re.compile(r"(https?://[^\s/$.?#].[^\s]*[^\s,.])")
urls = list(set(url_pattern.findall(inp))) # Use set to remove duplicates urls = list(set(url_pattern.findall(inp))) # Use set to remove duplicates
added_urls = [] added_urls = []
group = ConfirmGroup(urls)
for url in urls: for url in urls:
if url not in self.rejected_urls: if url not in self.rejected_urls:
if self.io.confirm_ask("Add URL to the chat?", subject=url): if self.io.confirm_ask("Add URL to the chat?", subject=url, group=group):
inp += "\n\n" inp += "\n\n"
inp += self.commands.cmd_web(url, paginate=False) inp += self.commands.cmd_web(url, paginate=False)
added_urls.append(url) added_urls.append(url)

View file

@ -30,8 +30,9 @@ class ConfirmGroup:
preference: str = None preference: str = None
show_group: bool = True show_group: bool = True
def __init__(self, items): def __init__(self, items=None):
self.show_group = len(items) > 1 if items is not None:
self.show_group = len(items) > 1
class AutoCompleter(Completer): class AutoCompleter(Completer):
@ -383,6 +384,9 @@ class InputOutput:
): ):
self.num_user_asks += 1 self.num_user_asks += 1
if group and not group.show_group:
group = None
valid_responses = "yn" valid_responses = "yn"
options = " (Y)es/(N)o" options = " (Y)es/(N)o"
if group: if group:
@ -427,6 +431,7 @@ class InputOutput:
res = "n" res = "n"
elif group and group.preference: elif group and group.preference:
res = group.preference res = group.preference
self.user_input(f"{question}{res}", log_only=False)
else: else:
res = prompt( res = prompt(
question, question,