From 31f7856f41cb428c095bf277a78d7c79d7cf178c Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 27 Aug 2024 15:21:41 -0700 Subject: [PATCH] feat: enhance autocomplete functionality for code tokens and filenames --- aider/io.py | 9 ++++----- tests/basic/test_io.py | 4 +++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/aider/io.py b/aider/io.py index 925d60aac..8e0fa3fdd 100644 --- a/aider/io.py +++ b/aider/io.py @@ -78,7 +78,9 @@ class AutoCompleter(Completer): except ClassNotFound: continue tokens = list(lexer.get_tokens(content)) - self.words.update(token[1] for token in tokens if token[0] in Token.Name) + self.words.update( + (token[1], f"`{token[1]}`") for token in tokens if token[0] in Token.Name + ) def get_command_completions(self, text, words): candidates = [] @@ -125,10 +127,7 @@ class AutoCompleter(Completer): candidates = self.words candidates.update(set(self.fname_to_rel_fnames)) - candidates = [ - (word, f"`{word}`" if word not in self.fname_to_rel_fnames else word) - for word in candidates - ] + candidates = [word if type(word) is tuple else (word, word) for word in candidates] last_word = words[-1] for word_match, word_insert in candidates: diff --git a/tests/basic/test_io.py b/tests/basic/test_io.py index f8f696251..511cd7355 100644 --- a/tests/basic/test_io.py +++ b/tests/basic/test_io.py @@ -3,6 +3,7 @@ import unittest from pathlib import Path from unittest.mock import MagicMock, patch +from aider.dump import dump # noqa: F401 from aider.io import AutoCompleter, ConfirmGroup, InputOutput from aider.utils import ChdirTemporaryDirectory @@ -33,7 +34,8 @@ class TestInputOutput(unittest.TestCase): Path(fname).write_text("def hello(): pass\n") autocompleter = AutoCompleter(root, rel_fnames, addable_rel_fnames, commands, "utf-8") - self.assertEqual(autocompleter.words, set(rel_fnames + ["hello"])) + dump(autocompleter.words) + self.assertEqual(autocompleter.words, set(rel_fnames + [("hello", "`hello`")])) encoding = "utf-16" some_content_which_will_error_if_read_with_encoding_utf8 = "ÅÍÎÏ".encode(encoding)