feat: add file watcher support to coder cloning

This commit is contained in:
Paul Gauthier 2024-12-05 09:28:16 -08:00 committed by Paul Gauthier (aider)
parent a1d558a960
commit 6b8e235f88
3 changed files with 22 additions and 4 deletions

View file

@ -103,6 +103,7 @@ class Coder:
detect_urls = True detect_urls = True
ignore_mentions = None ignore_mentions = None
chat_language = None chat_language = None
file_watcher = None
@classmethod @classmethod
def create( def create(
@ -153,10 +154,12 @@ class Coder:
aider_commit_hashes=from_coder.aider_commit_hashes, aider_commit_hashes=from_coder.aider_commit_hashes,
commands=from_coder.commands.clone(), commands=from_coder.commands.clone(),
total_cost=from_coder.total_cost, total_cost=from_coder.total_cost,
ignore_mentions=from_coder.ignore_mentions,
file_watcher=from_coder.file_watcher,
) )
use_kwargs.update(update) # override to complete the switch use_kwargs.update(update) # override to complete the switch
use_kwargs.update(kwargs) # override passed kwargs use_kwargs.update(kwargs) # override passed kwargs
dump(use_kwargs)
kwargs = use_kwargs kwargs = use_kwargs
@ -175,7 +178,6 @@ class Coder:
def clone(self, **kwargs): def clone(self, **kwargs):
new_coder = Coder.create(from_coder=self, **kwargs) new_coder = Coder.create(from_coder=self, **kwargs)
new_coder.ignore_mentions = self.ignore_mentions
return new_coder return new_coder
def get_announcements(self): def get_announcements(self):
@ -283,6 +285,9 @@ class Coder:
suggest_shell_commands=True, suggest_shell_commands=True,
chat_language=None, chat_language=None,
detect_urls=True, detect_urls=True,
ignore_mentions=None,
file_watcher=None,
): ):
# Fill in a dummy Analytics if needed, but it is never .enable()'d # Fill in a dummy Analytics if needed, but it is never .enable()'d
self.analytics = analytics if analytics is not None else Analytics() self.analytics = analytics if analytics is not None else Analytics()
@ -293,7 +298,14 @@ class Coder:
self.aider_commit_hashes = set() self.aider_commit_hashes = set()
self.rejected_urls = set() self.rejected_urls = set()
self.abs_root_path_cache = {} self.abs_root_path_cache = {}
self.ignore_mentions = set()
self.ignore_mentions = ignore_mentions
if not self.ignore_mentions:
self.ignore_mentions = set()
self.file_watcher = file_watcher
if self.file_watcher:
self.file_watcher.coder = self
self.suggest_shell_commands = suggest_shell_commands self.suggest_shell_commands = suggest_shell_commands
self.detect_urls = detect_urls self.detect_urls = detect_urls

View file

@ -43,6 +43,8 @@ class Commands:
verify_ssl=self.verify_ssl, verify_ssl=self.verify_ssl,
args=self.args, args=self.args,
parser=self.parser, parser=self.parser,
verbose=self.verbose,
editor=self.editor,
) )
def __init__( def __init__(
@ -997,6 +999,7 @@ class Commands:
if not args.strip(): if not args.strip():
self.basic_help() self.basic_help()
dump(self.coder)
return return
self.coder.event("interactive help") self.coder.event("interactive help")

View file

@ -822,7 +822,8 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
ignores.append(args.aiderignore) ignores.append(args.aiderignore)
if args.watch_files: if args.watch_files:
FileWatcher(coder, gitignores=ignores, verbose=args.verbose) file_watcher = FileWatcher(coder, gitignores=ignores, verbose=args.verbose)
coder.file_watcher = file_watcher
coder.show_announcements() coder.show_announcements()
@ -946,7 +947,9 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
if "show_announcements" in kwargs: if "show_announcements" in kwargs:
del kwargs["show_announcements"] del kwargs["show_announcements"]
dump(hash(coder.file_watcher), coder.file_watcher)
coder = Coder.create(**kwargs) coder = Coder.create(**kwargs)
dump(hash(coder.file_watcher), coder.file_watcher)
if switch.kwargs.get("show_announcements") is not False: if switch.kwargs.get("show_announcements") is not False:
coder.show_announcements() coder.show_announcements()