In case it might be useful to someone in a more informal form than a diff,
here are the extracted changes as lines of code.
---------------------------------------
#
# Two pieces which allow the monitor to trigger reloading breakpoints.
#
*In monitor.py*
In Monitor add a function
def reload_breakpoints(self, file):
if not self.pdb_obj:
return
# command defined and patched into place in sitecustomize.py
self.pdb_obj.reload_spyder_breakpoints( file )
and, in Monitor.__init__ register it
"reload_breakpoints":self.reload_breakpoints,
*sitecustomize.py*
In SpyderPdb, add in the function for the monitor to use.
def reload_spyder_breakpoints(self, filename):
# TODO, fix this so that it just adds/removes the diffs, not all bps
from spyderlib.config import CONF
filename = self.canonic(filename)
self.clear_all_file_breaks( filename )
# load in new ones
CONF.load_from_ini()
if CONF.get('run', 'breakpoints/enabled', True):
breakpoints = CONF.get('run','breakpoints', {})
for fname, data in breakpoints.iteritems():
fname = self.canonic(fname)
if filename == fname: # add it
for linenumber, condition in data:
self.set_break(fname, linenumber, cond=condition)
#
# And three pieces which set it up so that the editor will trigger the
loading
#
*plugins/editor.py*
In Editor.save_breakpoints, add a final line
self.emit(SIGNAL("reload_spyder_breakpoints(QString)"), filename)
*externalconsole.py*
In ExternalConsole.register_plugin, add a new registration
self.connect(self.main.editor,
SIGNAL("reload_spyder_breakpoints(QString)"),
self.reload_spyder_breakpoints)
and in ExternalConsole add the appropriate function
def reload_spyder_breakpoints(self, filename):
# ? Basically, works when the debugger is the top external console
# BTW, could do shellwidget.shell.ask_monitor(...)
# but the style seems to be to let the shell take care off
# asking the monitor.
shellwidget = self.tabwidget.currentWidget()
if shellwidget is not None:
shellwidget.shell.reload_breakpoints( filename )
*pythonshell.py*
In ExtPythonShellWidget, add the function to ask the Monitor
def reload_breakpoints(self, file):
return self.ask_monitor("reload_breakpoints(r'%s')" % file)
On Tuesday, April 2, 2013 10:35:39 AM UTC-4, Doug Bonar wrote:
>
> My local version has some other changes as well, plus in only on 2.1.11.
> I'll try doing the same thing in a clean, newer version over the weekend.
>
> On Monday, April 1, 2013 6:41:52 PM UTC-4, Sylvain Corlay wrote:
>>
>> Great, could you share your patch? I would be interested to test it.
>> S.
>>
>> On Monday, April 1, 2013 11:43:38 AM UTC-4, Doug Bonar wrote:
>>>
>>> I ended up just adding a bit to my local version.
>>>
>>> I added a new signal, 'reload_spyder_breakpoints(filename)' to
>>> plugins/editor.py and caught it in externalconsole.py. That then looks at
>>> the current tab widget and asks its monitor to run a new function I patched
>>> into SpyderPdb in sitecustomize.py. It touches 4 files, but it didn't seem
>>> too hideous.
>>>
>>> For now, my patched in function is just clearing all breakpoints for the
>>> file using Pdb's clear_all_file_breaks( filename ) and then loading the
>>> ones from CONF as the existing set_spyder_breakpoints does. If I get
>>> ambitious, I might change that to leave the ones that are unchanged in
>>> place (matching of file, line & condition string) since right now the
>>> numbering of all breakpoints in the file changes when you adjust any one.
>>> But it is a start.
>>>
>>> Doug
>>>
>>>
>>>
>>> On Thursday, March 7, 2013 4:55:59 PM UTC-5, Doug Bonar wrote:
>>>>
>>>> Thanks Jed. Not the answers I wanted to hear, but glad to know I
>>>> wasn't missing anything.
>>>>
>>>>
>>>> On Wednesday, March 6, 2013 5:41:37 PM UTC-5, Doug Bonar wrote:
>>>>>
>>>>> Can I set the graphically?
>>>>>
>>>>> In spyderlib/plugins/editor.py I see breakpoint related actions being
>>>>> set up, but I can't find the breakpoint_menu anywhere as an actual UI
>>>>> widget. That said, F12 does put a dot in the edge of the file -- looks
>>>>> like it should be a breakpoint. Unfortunately, it I start the debugger,
>>>>> then create a breakpoint, the debugger doesn't seem to see it.
>>>>>
>>>>> So, a 2-part question.
>>>>> 1) Is there some way other than F12 to set breakpoints?
>>>>> 2) Is there a way to add a breakpoint while the debugger is running?
>>>>>
>>>>> Thanks
>>>>>
>>>>
--
You received this message because you are subscribed to the Google Groups
"spyder" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/spyderlib?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.