mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-30 17:24:59 +00:00
handle encoding
This commit is contained in:
parent
a941c5cb82
commit
93fd53263e
1 changed files with 49 additions and 50 deletions
|
@ -22,54 +22,6 @@ from .dump import dump # noqa: F402
|
||||||
Tag = namedtuple("Tag", "rel_fname fname line name kind".split())
|
Tag = namedtuple("Tag", "rel_fname fname line name kind".split())
|
||||||
|
|
||||||
|
|
||||||
def to_tree(tags):
|
|
||||||
if not tags:
|
|
||||||
return ""
|
|
||||||
|
|
||||||
tags = sorted(tags)
|
|
||||||
|
|
||||||
cur_fname = None
|
|
||||||
context = None
|
|
||||||
output = ""
|
|
||||||
|
|
||||||
# add a bogus tag at the end so we trip the this_fname != cur_fname...
|
|
||||||
dummy_tag = (None,)
|
|
||||||
for tag in tags + [dummy_tag]:
|
|
||||||
this_fname = tag[0]
|
|
||||||
|
|
||||||
# ... here ... to output the final real entry in the list
|
|
||||||
if this_fname != cur_fname:
|
|
||||||
if context:
|
|
||||||
context.add_context()
|
|
||||||
output += "\n"
|
|
||||||
output += cur_fname + ":\n"
|
|
||||||
output += context.format()
|
|
||||||
context = None
|
|
||||||
elif cur_fname:
|
|
||||||
output += "\n" + cur_fname + "\n"
|
|
||||||
|
|
||||||
if type(tag) is Tag:
|
|
||||||
context = TreeContext(
|
|
||||||
tag.rel_fname,
|
|
||||||
Path(tag.fname).read_text(), # TODO: encoding
|
|
||||||
color=False,
|
|
||||||
line_number=False,
|
|
||||||
child_context=False,
|
|
||||||
last_line=False,
|
|
||||||
margin=0,
|
|
||||||
mark_lois=False,
|
|
||||||
loi_pad=0,
|
|
||||||
header_max=3,
|
|
||||||
show_top_of_file_parent_scope=False,
|
|
||||||
)
|
|
||||||
cur_fname = this_fname
|
|
||||||
|
|
||||||
if context:
|
|
||||||
context.add_lines_of_interest([tag.line])
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
|
|
||||||
class RepoMap:
|
class RepoMap:
|
||||||
CACHE_VERSION = 3
|
CACHE_VERSION = 3
|
||||||
TAGS_CACHE_DIR = f".aider.tags.cache.v{CACHE_VERSION}"
|
TAGS_CACHE_DIR = f".aider.tags.cache.v{CACHE_VERSION}"
|
||||||
|
@ -191,7 +143,7 @@ class RepoMap:
|
||||||
return
|
return
|
||||||
query_scm = query_scm.read_text()
|
query_scm = query_scm.read_text()
|
||||||
|
|
||||||
code = Path(fname).read_text() # TODO: encoding
|
code = Path(fname).read_text(encoding=self.io.encoding)
|
||||||
tree = parser.parse(bytes(code, "utf-8"))
|
tree = parser.parse(bytes(code, "utf-8"))
|
||||||
|
|
||||||
# Run the tags queries
|
# Run the tags queries
|
||||||
|
@ -381,7 +333,7 @@ class RepoMap:
|
||||||
|
|
||||||
while lower_bound <= upper_bound:
|
while lower_bound <= upper_bound:
|
||||||
middle = (lower_bound + upper_bound) // 2
|
middle = (lower_bound + upper_bound) // 2
|
||||||
tree = to_tree(ranked_tags[:middle])
|
tree = self.to_tree(ranked_tags[:middle])
|
||||||
num_tokens = self.token_count(tree)
|
num_tokens = self.token_count(tree)
|
||||||
|
|
||||||
if num_tokens < self.max_map_tokens:
|
if num_tokens < self.max_map_tokens:
|
||||||
|
@ -392,6 +344,53 @@ class RepoMap:
|
||||||
|
|
||||||
return best_tree
|
return best_tree
|
||||||
|
|
||||||
|
def to_tree(self, tags):
|
||||||
|
if not tags:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
tags = sorted(tags)
|
||||||
|
|
||||||
|
cur_fname = None
|
||||||
|
context = None
|
||||||
|
output = ""
|
||||||
|
|
||||||
|
# add a bogus tag at the end so we trip the this_fname != cur_fname...
|
||||||
|
dummy_tag = (None,)
|
||||||
|
for tag in tags + [dummy_tag]:
|
||||||
|
this_fname = tag[0]
|
||||||
|
|
||||||
|
# ... here ... to output the final real entry in the list
|
||||||
|
if this_fname != cur_fname:
|
||||||
|
if context:
|
||||||
|
context.add_context()
|
||||||
|
output += "\n"
|
||||||
|
output += cur_fname + ":\n"
|
||||||
|
output += context.format()
|
||||||
|
context = None
|
||||||
|
elif cur_fname:
|
||||||
|
output += "\n" + cur_fname + "\n"
|
||||||
|
|
||||||
|
if type(tag) is Tag:
|
||||||
|
context = TreeContext(
|
||||||
|
tag.rel_fname,
|
||||||
|
Path(tag.fname).read_text(self.io.encoding),
|
||||||
|
color=False,
|
||||||
|
line_number=False,
|
||||||
|
child_context=False,
|
||||||
|
last_line=False,
|
||||||
|
margin=0,
|
||||||
|
mark_lois=False,
|
||||||
|
loi_pad=0,
|
||||||
|
header_max=3,
|
||||||
|
show_top_of_file_parent_scope=False,
|
||||||
|
)
|
||||||
|
cur_fname = this_fname
|
||||||
|
|
||||||
|
if context:
|
||||||
|
context.add_lines_of_interest([tag.line])
|
||||||
|
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
def find_src_files(directory):
|
def find_src_files(directory):
|
||||||
if not os.path.isdir(directory):
|
if not os.path.isdir(directory):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue