Esempio n. 1
0
  def LaunchTerminal( self, params ):
    # kind = params.get( 'kind', 'integrated' )

    # FIXME: We don't support external terminals, and only open in the
    # integrated one.

    cwd = params[ 'cwd' ]
    args = params[ 'args' ]
    env = params.get( 'env', {} )

    options = {
      'vertical': 1,
      'norestore': 1,
      'cwd': cwd,
      'env': env,
    }

    buffer_number = None
    with utils.TemporaryVimOptions( { 'splitright': True,
                                      'equalalways': False } ):
      with utils.RestoreCurrentWindow():
        vim.current.window = self._window
        # TODO/FIXME: Do something about closing this when we reset ?
        vim_cmd =  'term_start( {}, {} )'.format( json.dumps( args ),
                                                  json.dumps( options ) )

        self._logger.debug( 'Start terminal: {}'.format( vim_cmd ) )

        buffer_number = int( vim.eval( vim_cmd ) )

    if buffer_number is None or buffer_number <= 0:
      # TODO: Do something better like reject the request?
      raise ValueError( "Unable to start terminal" )

    return buffer_number
    def _SetUpUI(self):
        original_window = vim.current.window

        vim.command('tabnew')
        self._uiTab = vim.current.tabpage

        # Code window
        self._codeView = code.CodeView(vim.current.window, original_window,
                                       self._api_prefix)

        # Call stack
        with utils.TemporaryVimOptions({
                'splitright': False,
                'equalalways': False,
        }):
            vim.command('topleft 50vspl')
            vim.command('enew')
            self._stackTraceView = stack_trace.StackTraceView(
                self, self._connection, vim.current.buffer)

        with utils.TemporaryVimOptions({
                'splitbelow': False,
                'eadirection': 'ver',
                'equalalways': True
        }):
            # Watches
            vim.command('spl')
            vim.command('enew')
            watch_win = vim.current.window

            # Variables
            vim.command('spl')
            vim.command('enew')
            vars_win = vim.current.window

            self._variablesView = variables.VariablesView(
                self._connection, vars_win, watch_win)

        with utils.TemporaryVimOption('splitbelow', True):
            vim.current.window = self._codeView._window

            # Output/logging
            vim.command('10spl')
            vim.command('enew')
            self._outputView = output.OutputView(self._connection,
                                                 vim.current.window,
                                                 self._api_prefix)
Esempio n. 3
0
    def LaunchTerminal(self, params):
        # kind = params.get( 'kind', 'integrated' )

        # FIXME: We don't support external terminals, and only open in the
        # integrated one.

        cwd = params['cwd']
        args = params['args']
        env = params.get('env', {})

        options = {
            'vertical': 1,
            'norestore': 1,
            'cwd': cwd,
            'env': env,
        }

        window_for_start = self._window
        if self._terminal_window is not None:
            assert self._terminal_buffer_number
            if (self._terminal_window.buffer.number
                    == self._terminal_buffer_number and int(
                        utils.Call(
                            'vimspector#internal#{}term#IsFinished'.format(
                                self._api_prefix),
                            self._terminal_buffer_number))):
                window_for_start = self._terminal_window
                options['curwin'] = 1

        buffer_number = None
        terminal_window = None
        with utils.TemporaryVimOptions({
                'splitright': True,
                'equalalways': False
        }):
            with utils.LetCurrentWindow(window_for_start):
                buffer_number = int(
                    utils.Call(
                        'vimspector#internal#{}term#Start'.format(
                            self._api_prefix), args, options))
                terminal_window = vim.current.window

        if buffer_number is None or buffer_number <= 0:
            # TODO: Do something better like reject the request?
            raise ValueError("Unable to start terminal")
        else:
            self._terminal_window = terminal_window
            self._terminal_buffer_number = buffer_number

        return buffer_number