Add a super hacky check for `xonsh`, smh..
							parent
							
								
									6d124db7c9
								
							
						
					
					
						commit
						2e278ceb74
					
				|  | @ -20,9 +20,13 @@ Multi-core debugging for da peeps! | ||||||
| """ | """ | ||||||
| from __future__ import annotations | from __future__ import annotations | ||||||
| import bdb | import bdb | ||||||
|  | import os | ||||||
| import sys | import sys | ||||||
| import signal | import signal | ||||||
| from functools import partial | from functools import ( | ||||||
|  |     partial, | ||||||
|  |     cached_property, | ||||||
|  | ) | ||||||
| from contextlib import asynccontextmanager as acm | from contextlib import asynccontextmanager as acm | ||||||
| from typing import ( | from typing import ( | ||||||
|     Any, |     Any, | ||||||
|  | @ -192,6 +196,22 @@ class MultiActorPdb(pdbpp.Pdb): | ||||||
|     def _cmdloop(self): |     def _cmdloop(self): | ||||||
|         self.cmdloop() |         self.cmdloop() | ||||||
| 
 | 
 | ||||||
|  |     @cached_property | ||||||
|  |     def shname(self) -> str: | ||||||
|  |         ''' | ||||||
|  |         Attempt to return the login shell name with a special check for | ||||||
|  |         the infamous `xonsh` since it seems to have some issues much | ||||||
|  |         different from std shells when it comes to flushing the prompt? | ||||||
|  | 
 | ||||||
|  |         ''' | ||||||
|  |         # SUPER HACKY and only really works if `xonsh` is not used | ||||||
|  |         # before spawning further sub-shells.. | ||||||
|  |         xonsh_is_login_sh: bool = os.getenv('XONSH_LOGIN', default=False) | ||||||
|  |         if xonsh_is_login_sh: | ||||||
|  |             return 'xonsh' | ||||||
|  | 
 | ||||||
|  |         return os.path.basename(os.getenv('SHELL')) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| @acm | @acm | ||||||
| async def _acquire_debug_lock_from_root_task( | async def _acquire_debug_lock_from_root_task( | ||||||
|  | @ -691,17 +711,19 @@ def shield_sigint_handler( | ||||||
|         raise KeyboardInterrupt |         raise KeyboardInterrupt | ||||||
| 
 | 
 | ||||||
|     # NOTE: currently (at least on ``fancycompleter`` 0.9.2) |     # NOTE: currently (at least on ``fancycompleter`` 0.9.2) | ||||||
|     # it lookks to be that the last command that was run (eg. ll) |     # it looks to be that the last command that was run (eg. ll) | ||||||
|     # will be repeated by default. |     # will be repeated by default. | ||||||
| 
 | 
 | ||||||
|     # maybe redraw/print last REPL output to console since |     # maybe redraw/print last REPL output to console since | ||||||
|     # we want to alert the user that more input is expect since |     # we want to alert the user that more input is expect since | ||||||
|     # nothing has been done dur to ignoring sigint. |     # nothing has been done dur to ignoring sigint. | ||||||
|     if ( |     if ( | ||||||
|         pdb_obj |         pdb_obj  # only when this actor has a REPL engaged | ||||||
|     ): |     ): | ||||||
|         # redraw the prompt ONLY in the actor that has the REPL running. |         # XXX: yah, mega hack, but how else do we catch this madness XD | ||||||
|         pdb_obj.stdout.write(pdb_obj.prompt) |         if pdb_obj.shname == 'xonsh': | ||||||
|  |             pdb_obj.stdout.write(pdb_obj.prompt) | ||||||
|  | 
 | ||||||
|         pdb_obj.stdout.flush() |         pdb_obj.stdout.flush() | ||||||
| 
 | 
 | ||||||
|         # TODO: make this work like sticky mode where if there is output |         # TODO: make this work like sticky mode where if there is output | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue