Pr2908 originally just sorted highlight methods together, but was extended to sort all methods together and relabeled for #31060. (This actually simplified the diff.) Pr2925, the 3.6 backport, appears on the replacement issue.
If we do the same renamings for the theme selection vars and functions as done for keys selection on the keys tab, then the corresponding tests can be copied and slightly altered. However, duplicate names require that KeyPage be separated first. Hence the dependency. When the current mess is replaced on both pages, we *might* be able to make a simple Frame subclass tested once and used on both pages.
Coverage now 95%. We are getting close. Still not covered in highlight group: create_page_highlight: # Highlight only. text.bind('', lambda e: 'break') text.bind('', lambda e: 'break') Callbacks are never called. I presume that these mask something. I am not sure that they are needed. save_new: # Same as for keys. if not idleConf.userCfg['highlight'].has_section(theme_name): Never false. delete_custom: # Same as for keys. if not item_list: self.custom_theme_on['state'] = DISABLED self.customlist.SetMenu(item_list, '- no custom themes -') else: self.customlist.SetMenu(item_list, item_list[0]) Condition never false, else never executed.