# HG changeset patch # User Sean Farley # Date 1373822200 18000 # Node ID 51799a965446235f88a30e7bdcd0a488e140aaa8 # Parent 6ccec36a1fd9a55dc64ad9c62d4feb5ce6d19a5c debugshell: check ui.debugger for which debugger to use diff -r 6ccec36a1fd9 -r 51799a965446 contrib/debugshell.py --- a/contrib/debugshell.py Sun Jul 14 12:02:36 2013 -0500 +++ b/contrib/debugshell.py Sun Jul 14 12:16:40 2013 -0500 @@ -1,6 +1,7 @@ # debugshell extension """a python shell with repo, changelog & manifest objects""" +import sys import mercurial import code @@ -27,7 +28,24 @@ "using source: %s" % (repo.root, mercurial.__path__[0]) - pdb(ui, repo, bannermsg, **opts) + pdbmap = { + 'pdb' : 'code', + 'ipdb' : 'IPython' + } + + debugger = ui.config("ui", "debugger") + if not debugger: + debugger = 'pdb' + + # if IPython doesn't exist, fallback to code.interact + try: + __import__(pdbmap[debugger]) + except ImportError: + ui.warn("%s debugger specified but %s module was not found\n" + % (debugger, pdbmap[debugger])) + debugger = 'pdb' + + getattr(sys.modules[__name__], debugger)(ui, repo, bannermsg, **opts) cmdtable = { "debugshell|dbsh": (debugshell, [])