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:
return
cur_msg_text = self.get_cur_message_text()
mentioned_fnames = self.get_file_mentions(cur_msg_text)
mentioned_idents = self.get_ident_mentions(cur_msg_text)
try:
cur_msg_text = self.get_cur_message_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())
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
other_files = all_abs_files - chat_files
all_abs_files = set(self.get_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
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(
set(),
all_abs_files,
chat_files,
other_files,
mentioned_fnames=mentioned_fnames,
mentioned_idents=mentioned_idents,
force_refresh=force_refresh,
)
# fall back to completely unhinted repo
if not repo_content:
repo_content = self.repo_map.get_repo_map(
set(),
all_abs_files,
)
# 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(
set(),
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):
repo_messages = []