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)
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