@@ -248,6 +248,8 @@ def smarter_request_refresh():
248248 self .current_match = None
249249 self .list_win_visible = False
250250
251+ self .original_modules = sys .modules .keys ()
252+
251253 self .width = None # will both be set by a window resize event
252254 self .height = None
253255
@@ -408,6 +410,9 @@ def process_event(self, e):
408410 elif e in ("<Shift-TAB>" ,):
409411 self .on_tab (back = True )
410412 self .rl_history .reset ()
413+ elif e in key_dispatch [self .config .reimport_key ]:
414+ self .clear_modules_and_reevaluate ()
415+ self .update_completion ()
411416 elif e in key_dispatch [self .config .undo_key ]: #ctrl-r for undo
412417 self .undo ()
413418 self .update_completion ()
@@ -516,6 +521,14 @@ def send_session_to_external_editor(self, filename=None):
516521 self .current_line = lines [- 1 ][4 :]
517522 self .cursor_offset = len (self .current_line )
518523
524+ def clear_modules_and_reevaluate (self ):
525+ cursor , line = self .cursor_offset , self .current_line
526+ for modname in sys .modules .keys ():
527+ if modname not in self .original_modules :
528+ del sys .modules [modname ]
529+ self .reevaluate (insert_into_history = True )
530+ self .cursor_offset , self .current_line = cursor , line
531+
519532 ## Handler Helpers
520533 def add_normal_character (self , char ):
521534 if len (char ) > 1 or is_nop (char ):
0 commit comments