From 8528d80510788589844bfbcb675a7e8a9ed4c2c6 Mon Sep 17 00:00:00 2001 From: Ben Jackson Date: Sun, 24 Feb 2019 19:41:41 +0000 Subject: [PATCH] Fix breakpoints --- python3/vimspector/breakpoints.py | 21 +++++++++++++++++---- python3/vimspector/debug_session.py | 21 +++++++++++++-------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/python3/vimspector/breakpoints.py b/python3/vimspector/breakpoints.py index 3c8e0b2..94f0edf 100644 --- a/python3/vimspector/breakpoints.py +++ b/python3/vimspector/breakpoints.py @@ -16,7 +16,7 @@ from collections import defaultdict import vim -import functools +import os class ProjectBreakpoints( object ): @@ -27,6 +27,9 @@ class ProjectBreakpoints( object ): self._line_breakpoints = defaultdict( list ) self._func_breakpoints = [] + # FIXME: Remove this. Remove breakpoints nonesense from code.py + self._breakpoints_handler = None + self._next_sign_id = 1 # TODO: Change to sign_define ? @@ -127,7 +130,17 @@ class ProjectBreakpoints( object ): else: self._ShowBreakpoints() - def SendBreakpoints( self, handler ): + + # FIXME: Remove this temporary compat .layer + def SetBreakpointsHandler( self, handler ): + self._breakpoints_handler = handler + + def SendBreakpoints( self ): + if not self._breakpoints_handler: + handler = lambda source, msg: self._ShowBreakpoints() + else: + handler = self._breakpoints_handler + for file_name, line_breakpoints in self._line_breakpoints.items(): breakpoints = [] for bp in line_breakpoints: @@ -147,7 +160,7 @@ class ProjectBreakpoints( object ): } self._connection.DoRequest( - functools.partial( self._UpdateBreakpoints, source ), + lambda msg: handler( source, msg ), { 'command': 'setBreakpoints', 'arguments': { @@ -159,7 +172,7 @@ class ProjectBreakpoints( object ): ) self._connection.DoRequest( - functools.partial( self._UpdateBreakpoints, None ), + lambda msg: handler( None, msg ), { 'command': 'setFunctionBreakpoints', 'arguments': { diff --git a/python3/vimspector/debug_session.py b/python3/vimspector/debug_session.py index 384e903..2ea9e6e 100644 --- a/python3/vimspector/debug_session.py +++ b/python3/vimspector/debug_session.py @@ -147,6 +147,16 @@ class DebugSession( object ): self._stackTraceView.ConnectionUp( self._connection ) self._variablesView.ConnectionUp( self._connection ) self._outputView.ConnectionUp( self._connection ) + self._breakpoints.ConnectionUp( self._connection ) + + def update_breakpoints( source, message ): + if 'body' not in message: + return + self._codeView.AddBreakpoints( source, + message[ 'body' ][ 'breakpoints' ] ) + self._codeView.ShowBreakpoints() + + self._breakpoints.SetBreakpointsHandler( update_breakpoints ) if self._connection: self._StopDebugAdapter( start ) @@ -539,15 +549,8 @@ class DebugSession( object ): self._stackTraceView.LoadThreads( True ) def OnEvent_initialized( self, message ): - def update_breakpoints( source, message ): - if 'body' not in message: - return - self._codeView.AddBreakpoints( source, - message[ 'body' ][ 'breakpoints' ] ) - self._codeView.ShowBreakpoints() - self._codeView.ClearBreakpoints() - self._breakpoints.SendBreakpoints( update_breakpoints ) + self._breakpoints.SendBreakpoints() self._connection.DoRequest( lambda msg: self._OnInitializeComplete(), @@ -614,6 +617,8 @@ class DebugSession( object ): self._stackTraceView.ConnectionClosed() self._variablesView.ConnectionClosed() self._outputView.ConnectionClosed() + self._breakpoints.ConnectionClosed() + self._breakpoints.SetBreakpointsHandler( None ) self._ResetServerState()