From 311e1568d94bd64f11e1deb421e6660beccf5f09 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 25 Oct 2024 15:58:39 -0700 Subject: [PATCH] feat: improve file watching with verbose debug output and error handling --- aider/watch.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/aider/watch.py b/aider/watch.py index 575c00e99..8f4f74098 100644 --- a/aider/watch.py +++ b/aider/watch.py @@ -1,3 +1,5 @@ + +import re from pathlib import Path from typing import Optional, Set @@ -7,6 +9,7 @@ from watchfiles import watch from aider.dump import dump # noqa +VERBOSE=True def is_source_file(path: Path) -> bool: """ @@ -78,6 +81,8 @@ def watch_source_files( """ root = Path(directory) + if VERBOSE: dump(root) + gitignore_paths = [Path(g) for g in gitignores] if gitignores else [] gitignore_spec = load_gitignores(gitignore_paths) root_abs = root.absolute() @@ -91,6 +96,7 @@ def watch_source_files( return False rel_path = path_abs.relative_to(root_abs) + if VERBOSE: dump(rel_path) if gitignore_spec and gitignore_spec.match_file(str(rel_path)): return False @@ -100,14 +106,19 @@ def watch_source_files( if not is_source_file(path_obj): return False + if VERBOSE: dump("ok", rel_path) + # Check if file contains AI markers try: with open(path_abs, encoding=encoding, errors="ignore") as f: content = f.read() - import re - return bool(re.search(r"(?:^|\n)(?:#|//) *ai\b", content, re.IGNORECASE)) - except (IOError, UnicodeDecodeError): + # ai: don't just match at start of line + res = bool(re.search(r"(?:^|\n)(?:#|//) *ai\b", content, re.IGNORECASE)) + if VERBOSE: dump(res) + return res + except (IOError, UnicodeDecodeError) as err: + if VERBOSE: dump(err) return False # Watch the directory for changes