refactor: Handle KeyboardInterrupt in get_repo_map

This commit is contained in:
Paul Gauthier (aider) 2025-05-09 10:05:59 -07:00
parent 1b2eeaff56
commit 9d74e8c730

View file

@ -704,42 +704,46 @@ class Coder:
if not self.repo_map: if not self.repo_map:
return return
cur_msg_text = self.get_cur_message_text() try:
mentioned_fnames = self.get_file_mentions(cur_msg_text) cur_msg_text = self.get_cur_message_text()
mentioned_idents = self.get_ident_mentions(cur_msg_text) mentioned_fnames = self.get_file_mentions(cur_msg_text)
mentioned_idents = self.get_ident_mentions(cur_msg_text)
mentioned_fnames.update(self.get_ident_filename_matches(mentioned_idents)) mentioned_fnames.update(self.get_ident_filename_matches(mentioned_idents))
all_abs_files = set(self.get_all_abs_files()) all_abs_files = set(self.get_all_abs_files())
repo_abs_read_only_fnames = set(self.abs_read_only_fnames) & all_abs_files repo_abs_read_only_fnames = set(self.abs_read_only_fnames) & all_abs_files
chat_files = set(self.abs_fnames) | repo_abs_read_only_fnames chat_files = set(self.abs_fnames) | repo_abs_read_only_fnames
other_files = all_abs_files - chat_files other_files = all_abs_files - chat_files
repo_content = self.repo_map.get_repo_map(
chat_files,
other_files,
mentioned_fnames=mentioned_fnames,
mentioned_idents=mentioned_idents,
force_refresh=force_refresh,
)
# fall back to global repo map if files in chat are disjoint from rest of repo
if not repo_content:
repo_content = self.repo_map.get_repo_map( repo_content = self.repo_map.get_repo_map(
set(), chat_files,
all_abs_files, other_files,
mentioned_fnames=mentioned_fnames, mentioned_fnames=mentioned_fnames,
mentioned_idents=mentioned_idents, mentioned_idents=mentioned_idents,
force_refresh=force_refresh,
) )
# fall back to completely unhinted repo # fall back to global repo map if files in chat are disjoint from rest of repo
if not repo_content: if not repo_content:
repo_content = self.repo_map.get_repo_map( repo_content = self.repo_map.get_repo_map(
set(), set(),
all_abs_files, all_abs_files,
) mentioned_fnames=mentioned_fnames,
mentioned_idents=mentioned_idents,
)
return repo_content # fall back to completely unhinted repo
if not repo_content:
repo_content = self.repo_map.get_repo_map(
set(),
all_abs_files,
)
return repo_content
except KeyboardInterrupt:
self.keyboard_interrupt()
return None
def get_repo_messages(self): def get_repo_messages(self):
repo_messages = [] repo_messages = []