diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index fc40d818e..4cec92d6f 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -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 = []