Esempio n. 1
0
    def __init__(self):
        self._connection = None
        self._logger = logging.getLogger(__name__)
        utils.SetUpLogging(self._logger)

        # These are the user-entered breakpoints.
        self._line_breakpoints = defaultdict(list)
        self._func_breakpoints = []
        self._exception_breakpoints = None
        self._configured_breakpoints = {}

        # FIXME: Remove this. Remove breakpoints nonesense from code.py
        self._breakpoints_handler = None
        self._server_capabilities = {}

        self._next_sign_id = 1

        if not signs.SignDefined('vimspectorBP'):
            signs.DefineSign('vimspectorBP',
                             text='●',
                             double_text='●',
                             texthl='WarningMsg')

        if not signs.SignDefined('vimspectorBPCond'):
            signs.DefineSign('vimspectorBPCond',
                             text='◆',
                             double_text='◆',
                             texthl='WarningMsg')

        if not signs.SignDefined('vimspectorBPDisabled'):
            signs.DefineSign('vimspectorBPDisabled',
                             text='●',
                             double_text='●',
                             texthl='LineNr')
Esempio n. 2
0
    def __init__(self, window, api_prefix, render_event_emitter,
                 IsBreakpointPresentAt):

        self._window = window
        self._api_prefix = api_prefix
        self._render_subject = render_event_emitter.subscribe(self._DisplayPC)
        self._IsBreakpointPresentAt = IsBreakpointPresentAt

        self._terminal = None
        self.current_syntax = None

        self._logger = logging.getLogger(__name__)
        utils.SetUpLogging(self._logger)

        # FIXME: This ID is by group, so should be module scope
        self._next_sign_id = 1
        self._signs = {
            'vimspectorPC': None,
        }
        self._current_frame = None
        self._scratch_buffers = []

        with utils.LetCurrentWindow(self._window):
            if utils.UseWinBar():
                # Buggy neovim doesn't render correctly when the WinBar is defined:
                # https://github.com/neovim/neovim/issues/12689
                vim.command('nnoremenu WinBar.■\\ Stop '
                            ':call vimspector#Stop()<CR>')
                vim.command('nnoremenu WinBar.▶\\ Cont '
                            ':call vimspector#Continue()<CR>')
                vim.command('nnoremenu WinBar.▷\\ Pause '
                            ':call vimspector#Pause()<CR>')
                vim.command('nnoremenu WinBar.↷\\ Next '
                            ':call vimspector#StepOver()<CR>')
                vim.command('nnoremenu WinBar.→\\ Step '
                            ':call vimspector#StepInto()<CR>')
                vim.command('nnoremenu WinBar.←\\ Out '
                            ':call vimspector#StepOut()<CR>')
                vim.command('nnoremenu WinBar.⟲: '
                            ':call vimspector#Restart()<CR>')
                vim.command('nnoremenu WinBar.✕ '
                            ':call vimspector#Reset()<CR>')

            if not signs.SignDefined('vimspectorPC'):
                signs.DefineSign('vimspectorPC',
                                 text='▶',
                                 double_text='▶',
                                 texthl='MatchParen',
                                 linehl='CursorLine')
            if not signs.SignDefined('vimspectorPCBP'):
                signs.DefineSign('vimspectorPCBP',
                                 text='●▶',
                                 double_text='▷',
                                 texthl='MatchParen',
                                 linehl='CursorLine')
Esempio n. 3
0
  def __init__( self, window, api_prefix ):
    self._window = window
    self._api_prefix = api_prefix

    self._terminal_window = None
    self._terminal_buffer_number = None
    self.current_syntax = None

    self._logger = logging.getLogger( __name__ )
    utils.SetUpLogging( self._logger )

    self._next_sign_id = 1
    self._breakpoints = defaultdict( list )
    self._signs = {
      'vimspectorPC': None,
      'breakpoints': []
    }

    with utils.LetCurrentWindow( self._window ):
      vim.command( 'nnoremenu WinBar.■\\ Stop :call vimspector#Stop()<CR>' )
      vim.command( 'nnoremenu WinBar.▶\\ Cont :call vimspector#Continue()<CR>' )
      vim.command( 'nnoremenu WinBar.▷\\ Pause :call vimspector#Pause()<CR>' )
      vim.command( 'nnoremenu WinBar.↷\\ Next :call vimspector#StepOver()<CR>' )
      vim.command( 'nnoremenu WinBar.→\\ Step :call vimspector#StepInto()<CR>' )
      vim.command( 'nnoremenu WinBar.←\\ Out :call vimspector#StepOut()<CR>' )
      vim.command( 'nnoremenu WinBar.⟲: :call vimspector#Restart()<CR>' )
      vim.command( 'nnoremenu WinBar.✕ :call vimspector#Reset()<CR>' )

      if not signs.SignDefined( 'vimspectorPC' ):
        signs.DefineSign( 'vimspectorPC',
                          text = '▶',
                          texthl = 'MatchParen',
                          linehl = 'CursorLine' )
Esempio n. 4
0
  def __init__( self, render_event_emitter, IsPCPresentAt ):
    self._connection = None
    self._logger = logging.getLogger( __name__ )
    self._render_subject = render_event_emitter.subscribe( self.Refresh )
    self._IsPCPresentAt = IsPCPresentAt
    utils.SetUpLogging( self._logger )

    # These are the user-entered breakpoints.
    self._line_breakpoints = defaultdict( list )
    self._func_breakpoints = []
    self._exception_breakpoints = None
    self._configured_breakpoints = {}

    self._server_capabilities = {}

    self._next_sign_id = 1
    self._awaiting_bp_responses = 0
    self._pending_send_breakpoints = None


    self._breakpoints_view = BreakpointsView()

    if not signs.SignDefined( 'vimspectorBP' ):
      signs.DefineSign( 'vimspectorBP',
                        text = '●',
                        double_text = '●',
                        texthl = 'WarningMsg' )

    if not signs.SignDefined( 'vimspectorBPCond' ):
      signs.DefineSign( 'vimspectorBPCond',
                        text = '◆',
                        double_text = '◆',
                        texthl = 'WarningMsg' )

    if not signs.SignDefined( 'vimspectorBPLog' ):
      signs.DefineSign( 'vimspectorBPLog',
                        text = '◆',
                        double_text = '◆',
                        texthl = 'SpellRare' )

    if not signs.SignDefined( 'vimspectorBPDisabled' ):
      signs.DefineSign( 'vimspectorBPDisabled',
                        text = '●',
                        double_text = '●',
                        texthl = 'LineNr' )
Esempio n. 5
0
    def __init__(self, session, win):
        self._logger = logging.getLogger(__name__)
        utils.SetUpLogging(self._logger)

        self._buf = win.buffer
        self._session = session
        self._connection = None

        self._current_thread = None
        self._current_frame = None
        self._current_syntax = ""

        self._threads = []
        self._sources = {}
        self._scratch_buffers = []

        # FIXME: This ID is by group, so should be module scope
        self._next_sign_id = 1

        utils.SetUpHiddenBuffer(self._buf, 'vimspector.StackTrace')
        utils.SetUpUIWindow(win)

        mappings = settings.Dict('mappings')['stack_trace']

        with utils.LetCurrentWindow(win):
            for mapping in utils.GetVimList(mappings, 'expand_or_jump'):
                vim.command(f'nnoremap <silent> <buffer> { mapping } '
                            ':<C-U>call vimspector#GoToFrame()<CR>')

            for mapping in utils.GetVimList(mappings, 'focus_thread'):
                vim.command(f'nnoremap <silent> <buffer> { mapping } '
                            ':<C-U>call vimspector#SetCurrentThread()<CR>')

            if utils.UseWinBar():
                vim.command('nnoremenu <silent> 1.1 WinBar.Pause/Continue '
                            ':call vimspector#PauseContinueThread()<CR>')
                vim.command('nnoremenu <silent> 1.2 WinBar.Expand/Collapse '
                            ':call vimspector#GoToFrame()<CR>')
                vim.command('nnoremenu <silent> 1.3 WinBar.Focus '
                            ':call vimspector#SetCurrentThread()<CR>')

        win.options['cursorline'] = False

        if not signs.SignDefined('vimspectorCurrentThread'):
            signs.DefineSign('vimspectorCurrentThread',
                             text='▶ ',
                             double_text='▶',
                             texthl='MatchParen',
                             linehl='CursorLine')

        self._line_to_frame = {}
        self._line_to_thread = {}

        self._requesting_threads = StackTraceView.ThreadRequestState.NO
        self._pending_thread_request = None