diff --git a/aider/watch.py b/aider/watch.py index 5dd770976..e7b115730 100644 --- a/aider/watch.py +++ b/aider/watch.py @@ -64,7 +64,7 @@ class FileWatcher: """Watches source files for changes and AI comments""" # Compiled regex pattern for AI comments - ai_comment_pattern = re.compile(r"(?:#|//|--) *(ai\b.*|ai\b.*|.*\bai[?!]?) *$", re.IGNORECASE) + ai_comment_pattern = re.compile(r"(?:#|//|--|;+) *(ai\b.*|ai\b.*|.*\bai[?!]?) *$", re.IGNORECASE) def __init__(self, coder, gitignores=None, verbose=False, analytics=None, root=None): self.coder = coder @@ -262,7 +262,7 @@ class FileWatcher: line_nums.append(i) comments.append(comment) comment = comment.lower() - comment = comment.lstrip("/#-") + comment = comment.lstrip("/#-;") # Added semicolon for Lisp comments comment = comment.strip() if comment.startswith("ai!") or comment.endswith("ai!"): has_action = "!" diff --git a/tests/basic/test_watch.py b/tests/basic/test_watch.py index 706fd1ade..524f80e08 100644 --- a/tests/basic/test_watch.py +++ b/tests/basic/test_watch.py @@ -155,3 +155,12 @@ def test_ai_comment_pattern(): assert ( question_js_has_bang == "?" ), "Expected at least one bang (!) comment in watch_question.js fixture" + + # Test Lisp fixture + lisp_path = fixtures_dir / "watch.lisp" + lisp_lines, lisp_comments, lisp_has_bang = watcher.get_ai_comments(str(lisp_path)) + lisp_expected = 7 + assert ( + len(lisp_lines) == lisp_expected + ), f"Expected {lisp_expected} AI comments in Lisp fixture, found {len(lisp_lines)}" + assert lisp_has_bang == "!", "Expected at least one bang (!) comment in Lisp fixture" diff --git a/tests/fixtures/watch.lisp b/tests/fixtures/watch.lisp new file mode 100644 index 000000000..1aae8fb8f --- /dev/null +++ b/tests/fixtures/watch.lisp @@ -0,0 +1,19 @@ +(defun hello-world () + ;; ai this is a simple hello world function + (format t "Hello, World!")) + +(defun add (a b) + ; ai! fix this function to handle nil values + (+ a b)) + +(defun multiply (a b) + ;;; ai? why is this function not working with large numbers? + (* a b)) + +; ai this is a single semicolon comment + +;; ai this is a double semicolon comment + +;;; ai this is a triple semicolon comment + +;;;; ai! this is a quadruple semicolon comment