[wingide-users] Debug - exception - fix - stop - select file - debug: is there an easier way?

Wing IDE Support support at wingware.com
Wed Mar 30 18:49:59 EST 2005


On Thu, 31 Mar 2005, Rene Pijlman wrote:
> I find myself repeating this sequence over and over again:
> 
> 1. My file a.py is current. I hit "Debug".
> 2. An exception occurs in b.py. Wing raises b.py to the front.
>    That's good.
> 3. I fix my bug in b.py.
> 4. I hit "Stop".
> 5. I select a.py
> 6. I hit Debug.
> 
> Is there a way to combine steps 4-6 in one easy keystroke?

Sure, add the following script into a file in the 'scripts'
directory in your User Settings Directory (see 5th item in About
box from Help menu; location varies by OS):

import wingapi
def debug_restart():
  app = wingapi.gApplication
  app.ExecuteCommand('debug-kill')
  app.OpenDocument('/path/to/a.py')
  app.ExecuteCommand('debug-continue')

Then change /path/to/a.py to the correct desired main entry point
and select "Reload All Scripts" from the Edit menu (only needed
the first time a new script file is added; after that Wing auto
reloads the files when they are edited and saved from Wing).

Then define a key binding for it using the User Interface /
Keyboard / Custom Key Bindings preference.

This could be made more general by reading the main entry point
out of the project, when it is set, but the API doesn't have a
way to do that right now.  If you want to do that, you can use
the following, which gets just slightly into undocumented API:

import wingapi

def _get_mainfile():
  # Hack to work around missing API
  app = wingapi.gApplication
  mainfile = app.GetAttribute('proj.main-file')
  if mainfile is None:
    return None
  else:
    return mainfile.fName
  
def debug_restart():
  app = wingapi.gApplication
  app.ExecuteCommand('debug-kill')
  mainfile = _get_mainfile()
  if mainfile is not None:
    app.OpenDocument(mainfile)
  app.ExecuteCommand('debug-continue')

This of course requires that you set a main debug file from
from the Debug menu or Project's context menu.

Please let me know if you have any questions.

- Stephan


More information about the wingide-users mailing list