mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-29 00:35:00 +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())
|
||||
|
||||
|
||||
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:
|
||||
CACHE_VERSION = 3
|
||||
TAGS_CACHE_DIR = f".aider.tags.cache.v{CACHE_VERSION}"
|
||||
|
@ -191,7 +143,7 @@ class RepoMap:
|
|||
return
|
||||
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"))
|
||||
|
||||
# Run the tags queries
|
||||
|
@ -381,7 +333,7 @@ class RepoMap:
|
|||
|
||||
while lower_bound <= upper_bound:
|
||||
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)
|
||||
|
||||
if num_tokens < self.max_map_tokens:
|
||||
|
@ -392,6 +344,53 @@ class RepoMap:
|
|||
|
||||
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):
|
||||
if not os.path.isdir(directory):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue