Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd357b0f

Browse files
debugging can be entered and exited in Curtsies
1 parent51e8cef commitd357b0f

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

‎bpython/curtsies.py‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
frombpython.curtsiesfrontendimporteventsasbpythonevents
2121
frombpythonimportinspection
2222
frombpython.replimportextract_exit_value
23+
frombpython.curtsiesfrontend.replimportdebugger_hook
2324

2425
logger=logging.getLogger(__name__)
2526

@@ -50,6 +51,8 @@ def main(args=None, locals_=None, banner=None):
5051
logging.getLogger('curtsies').propagate=False
5152
logging.getLogger('bpython').addHandler(handler)
5253
logging.getLogger('bpython').propagate=False
54+
ifoptions.debugger:
55+
sys.excepthook=debugger_hook
5356

5457
interp=None
5558
paste=None

‎bpython/curtsiesfrontend/repl.py‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@
3838
frombpython._py3compatimportpy3
3939
frombpython.pagerimportget_pager_command
4040

41+
try:
42+
frombpythonimportdebugger
43+
exceptImportErroraserr:
44+
debugger=None
45+
4146
frombpython.curtsiesfrontendimportreplpainteraspaint
4247
frombpython.curtsiesfrontendimportsitefix
4348
frombpython.curtsiesfrontend.coderunnerimportCodeRunner,FakeOutput
@@ -631,6 +636,8 @@ def process_key_event(self, e):
631636
self.clear_modules_and_reevaluate()
632637
elifeinkey_dispatch[self.config.toggle_file_watch_key]:
633638
returnself.toggle_file_watch()
639+
elifeinkey_dispatch[self.config.debug_key]:
640+
self.toggle_auto_debug()
634641
elifeinkey_dispatch[self.config.clear_screen_key]:
635642
self.request_paint_to_clear_screen=True
636643
elifeinkey_dispatch[self.config.show_source_key]:
@@ -871,6 +878,16 @@ def toggle_file_watch(self):
871878
self.status_bar.message(_('Auto-reloading not available because '
872879
'watchdog not installed.'))
873880

881+
deftoggle_auto_debug(self):
882+
ifdebuggerisNone:
883+
self.status_bar.message(
884+
_('No debugger, check your PYTHON_DEBUGGER value.\n'))
885+
return
886+
ifsys.excepthookisnotdebugger_hook:
887+
sys.excepthook=debugger_hook
888+
else:
889+
sys.excepthook=sys.__excepthook__
890+
874891
# Handler Helpers
875892
defadd_normal_character(self,char):
876893
iflen(char)>1oris_nop(char):
@@ -1602,6 +1619,13 @@ def compress_paste_event(paste_event):
16021619
returnNone
16031620

16041621

1622+
defdebugger_hook(exc,value,tb):
1623+
ifexcin (SyntaxError,IndentationError,KeyboardInterrupt):
1624+
sys.__excepthook__(exc,value,tb)
1625+
return
1626+
debugger.post_mortem(tb,exc,value)
1627+
1628+
16051629
defjust_simple_events(event_list):
16061630
simple_events= []
16071631
foreinevent_list:

‎bpython/debugger.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
"""
66
Debugger factory. Set PYTHON_DEBUGGER to a module path that has a post_mortem
7-
function in it. Defaults topdb. This allows alternate debuggers to be used,
7+
function in it. Defaults tobpdb. This allows alternate debuggers to be used,
88
such as pycopia.debugger. :)
99
"""
1010
from __future__importabsolute_import

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp