Exemple #1
0
        private ReplEditFilter(
            IVsTextView vsTextView,
            ITextView textView,
            IEditorOperations editorOps,
            IServiceProvider serviceProvider,
            IOleCommandTarget next
            )
        {
            _vsTextView      = vsTextView;
            _textView        = textView;
            _editorOps       = editorOps;
            _serviceProvider = serviceProvider;
            _componentModel  = _serviceProvider.GetComponentModel();
            _pyService       = _serviceProvider.GetPythonToolsService();
            _interactive     = _textView.TextBuffer.GetInteractiveWindow();
            _next            = next;

            if (_interactive != null)
            {
                _selectEval = _interactive.Evaluator as SelectableReplEvaluator;
            }

            if (_selectEval != null)
            {
                _selectEval.EvaluatorChanged           += EvaluatorChanged;
                _selectEval.AvailableEvaluatorsChanged += AvailableEvaluatorsChanged;
            }

            var mse = _interactive?.Evaluator as IMultipleScopeEvaluator;

            if (mse != null)
            {
                _scopeListVisible                = mse.EnableMultipleScopes;
                mse.AvailableScopesChanged      += AvailableScopesChanged;
                mse.MultipleScopeSupportChanged += MultipleScopeSupportChanged;
            }

            if (_next == null && _interactive != null)
            {
                ErrorHandler.ThrowOnFailure(vsTextView.AddCommandFilter(this, out _next));
            }
        }
Exemple #2
0
        private ReplEditFilter(
            IVsTextView vsTextView,
            ITextView textView,
            IEditorOperations editorOps,
            IServiceProvider serviceProvider,
            IOleCommandTarget next
        ) {
            _vsTextView = vsTextView;
            _textView = textView;
            _editorOps = editorOps;
            _serviceProvider = serviceProvider;
            _componentModel = _serviceProvider.GetComponentModel();
            _pyService = _serviceProvider.GetPythonToolsService();
            _interactive = _textView.TextBuffer.GetInteractiveWindow();
            _next = next;

            if (_interactive != null) {
                _selectEval = _interactive.Evaluator as SelectableReplEvaluator;
            }

            if (_selectEval != null) {
                _selectEval.EvaluatorChanged += EvaluatorChanged;
                _selectEval.AvailableEvaluatorsChanged += AvailableEvaluatorsChanged;
            }

            var mse = _interactive?.Evaluator as IMultipleScopeEvaluator;
            if (mse != null) {
                _scopeListVisible = mse.EnableMultipleScopes;
                mse.AvailableScopesChanged += AvailableScopesChanged;
                mse.MultipleScopeSupportChanged += MultipleScopeSupportChanged;
            }

            if (_next == null && _interactive != null) {
                ErrorHandler.ThrowOnFailure(vsTextView.AddCommandFilter(this, out _next));
            }
        }
        public IVsInteractiveWindow Create(string replId, int curId = -1)
        {
            EnsureInterpretersAvailable();

            if (curId < 0)
            {
                curId = GetNextId();
            }

            var contentType = _contentTypeService.GetContentType(PythonCoreConstants.ContentType);
            var evaluator   = new SelectableReplEvaluator(_serviceProvider, _evaluators, replId, curId.ToString());
            var window      = CreateInteractiveWindowInternal(
                evaluator,
                contentType,
                true,
                curId,
                Strings.ReplCaptionNoEvaluator,
                CommonGuidList.guidPythonLanguageServiceGuid,
                "PythonInteractive"
                );

            lock (_windows) {
                _windows[curId] = window;
                _lruWindows.Add(window);
            }

            window.InteractiveWindow.TextView.Closed += (s, e) => {
                lock (_windows) {
                    Debug.Assert(ReferenceEquals(_windows[curId], window));
                    _windows.Remove(curId);
                    _lruWindows.Remove(window);
                }
            };

            return(window);
        }