Exemple #1
0
 int IVsImmediateStatementCompletion2.GetFilter(IVsTextView textView, out IVsTextViewFilter filter)
 {
     // They never even call this, so just make it compile
     Debug.Assert(false);
     filter = null;
     return(VSConstants.S_OK);
 }
        public int GetTextViewFilter(
            IVsIntellisenseHost intellisenseHost,
            IOleCommandTarget nextCmdTarget,
            out IVsTextViewFilter textViewFilter)
        {
            var wpfTextView = GetViewFromIVsIntellisenseHost(intellisenseHost);

            if (wpfTextView == null)
            {
                textViewFilter = null;
                return(VSConstants.E_FAIL);
            }

            textViewFilter = new VenusCommandFilter(wpfTextView, SubjectBuffer, nextCmdTarget, ComponentModel);

            return(VSConstants.S_OK);
        }
        public int GetTextViewFilter(
            IVsIntellisenseHost intellisenseHost,
            IOleCommandTarget nextCmdTarget,
            out IVsTextViewFilter textViewFilter)
        {
            var wpfTextView = GetViewFromIVsIntellisenseHost(intellisenseHost);

            if (wpfTextView == null)
            {
                textViewFilter = null;
                return(VSConstants.E_FAIL);
            }

            textViewFilter = new VenusCommandFilter <TPackage, TLanguageService>(_languageService, wpfTextView, SubjectBuffer, nextCmdTarget, _editorAdaptersFactoryService);

            return(VSConstants.S_OK);
        }
        internal void Create(HtmlEditorDocument document, IVsContainedLanguage containedLanguage, IVsTextBufferCoordinator bufferCoordinator, LanguageProjectionBuffer languageBuffer, out IVsTextViewFilter containedLanguageViewfilter)
        {
            containedLanguageViewfilter = null;
            TextViewData textViewDataForBuffer = TextViewConnectionListener.GetTextViewDataForBuffer(document.TextBuffer);
            if (textViewDataForBuffer == null || textViewDataForBuffer.LastActiveView == null)
                return;
            TextView = textViewDataForBuffer.LastActiveView;
            IVsTextViewIntellisenseHostProvider vsTextViewIntellisenseHostProvider = TextView.QueryInterface<IVsTextViewIntellisenseHostProvider>();
            if (vsTextViewIntellisenseHostProvider == null)
                return;

            Guid gUID = typeof(IVsTextViewIntellisenseHost).GUID;
            IntPtr intPtr;
            vsTextViewIntellisenseHostProvider.CreateIntellisenseHost(bufferCoordinator, ref gUID, out intPtr);
            if (intPtr == IntPtr.Zero)
                return;

            IVsTextViewIntellisenseHost vsTextViewIntellisenseHost = Marshal.GetObjectForIUnknown(intPtr) as IVsTextViewIntellisenseHost;
            Marshal.Release(intPtr);
            if (vsTextViewIntellisenseHost == null)
                return;

            HtmlMainController htmlMainController = HtmlMainController.FromTextView(TextView);
            ICommandTarget chainedController = htmlMainController.ChainedController;
            if (chainedController == null)
                return;

            OleToCommandTargetShim oleToCommandTargetShim = chainedController as OleToCommandTargetShim;
            if (containedLanguage.GetTextViewFilter(vsTextViewIntellisenseHost, oleToCommandTargetShim.OleTarget, out containedLanguageViewfilter) != 0)
                return;

            IOleCommandTarget oleTarget = containedLanguageViewfilter as IOleCommandTarget;
            OleToCommandTargetShim containedLanguageTarget = new OleToCommandTargetShim(TextView, oleTarget);
            ContainedLanguageTarget = containedLanguageTarget;

            _languageBuffer = languageBuffer;
            _languageBuffer.MappingsChanged += OnMappingsChanged;
        }
 public int GetTextViewFilter(IVsIntellisenseHost pISenseHost, IOleCommandTarget pNextCmdTarget, out IVsTextViewFilter pTextViewFilter)
 {
     IVsTextLines buffer;
     ErrorHandler.ThrowOnFailure(bufferCoordinator.GetSecondaryBuffer(out buffer));
     bool doOutlining = LanguageService.Preferences.AutoOutlining;
     LanguageService.Preferences.AutoOutlining = false;
     PythonSource source = LanguageService.CreateSource(buffer) as PythonSource;
     LanguageService.Preferences.AutoOutlining = doOutlining;
     CodeWindowManager windowMgr = LanguageService.CreateCodeWindowManager(null, source);
     language.AddCodeWindowManager(windowMgr);
     TextViewWrapper view = new TextViewWrapper(languageHost, pISenseHost, bufferCoordinator, pNextCmdTarget);
     windowMgr.OnNewView(view);
     language.AddSpecialSource(source, view);
     pTextViewFilter = view.InstalledFilter;
     PythonViewFilter pythonFilter = pTextViewFilter as PythonViewFilter;
     if (null != pythonFilter) {
         pythonFilter.BufferCoordinator = this.bufferCoordinator;
     }
     return VSConstants.S_OK;
 }
Exemple #6
0
        public int GetTextViewFilter(IVsIntellisenseHost pISenseHost, IOleCommandTarget pNextCmdTarget, out IVsTextViewFilter pTextViewFilter)
        {
            IVsTextLines buffer;

            ErrorHandler.ThrowOnFailure(bufferCoordinator.GetSecondaryBuffer(out buffer));
            bool doOutlining = LanguageService.Preferences.AutoOutlining;

            LanguageService.Preferences.AutoOutlining = false;
            PythonSource source = LanguageService.CreateSource(buffer) as PythonSource;

            LanguageService.Preferences.AutoOutlining = doOutlining;
            CodeWindowManager windowMgr = LanguageService.CreateCodeWindowManager(null, source);

            language.AddCodeWindowManager(windowMgr);
            TextViewWrapper view = new TextViewWrapper(languageHost, pISenseHost, bufferCoordinator, pNextCmdTarget);

            windowMgr.OnNewView(view);
            language.AddSpecialSource(source, view);
            pTextViewFilter = view.InstalledFilter;
            PythonViewFilter pythonFilter = pTextViewFilter as PythonViewFilter;

            if (null != pythonFilter)
            {
                pythonFilter.BufferCoordinator = this.bufferCoordinator;
            }
            return(VSConstants.S_OK);
        }
Exemple #7
0
        internal void Create(HtmlEditorDocument document, IVsContainedLanguage containedLanguage, IVsTextBufferCoordinator bufferCoordinator, LanguageProjectionBuffer languageBuffer, out IVsTextViewFilter containedLanguageViewfilter)
        {
            containedLanguageViewfilter = null;
            TextViewData textViewDataForBuffer = TextViewConnectionListener.GetTextViewDataForBuffer(document.TextBuffer);

            if (textViewDataForBuffer == null || textViewDataForBuffer.LastActiveView == null)
            {
                return;
            }
            TextView = textViewDataForBuffer.LastActiveView;
            IVsTextViewIntellisenseHostProvider vsTextViewIntellisenseHostProvider = TextView.QueryInterface <IVsTextViewIntellisenseHostProvider>();

            if (vsTextViewIntellisenseHostProvider == null)
            {
                return;
            }

            Guid   gUID = typeof(IVsTextViewIntellisenseHost).GUID;
            IntPtr intPtr;

            vsTextViewIntellisenseHostProvider.CreateIntellisenseHost(bufferCoordinator, ref gUID, out intPtr);
            if (intPtr == IntPtr.Zero)
            {
                return;
            }

            IVsTextViewIntellisenseHost vsTextViewIntellisenseHost = Marshal.GetObjectForIUnknown(intPtr) as IVsTextViewIntellisenseHost;

            Marshal.Release(intPtr);
            if (vsTextViewIntellisenseHost == null)
            {
                return;
            }

            HtmlMainController htmlMainController = HtmlMainController.FromTextView(TextView);
            ICommandTarget     chainedController  = htmlMainController.ChainedController;

            if (chainedController == null)
            {
                return;
            }

            OleToCommandTargetShim oleToCommandTargetShim = chainedController as OleToCommandTargetShim;

            if (containedLanguage.GetTextViewFilter(vsTextViewIntellisenseHost, oleToCommandTargetShim.OleTarget, out containedLanguageViewfilter) != 0)
            {
                return;
            }

            IOleCommandTarget      oleTarget = containedLanguageViewfilter as IOleCommandTarget;
            OleToCommandTargetShim containedLanguageTarget = new OleToCommandTargetShim(TextView, oleTarget);

            ContainedLanguageTarget = containedLanguageTarget;

            _languageBuffer = languageBuffer;
            _languageBuffer.MappingsChanged += OnMappingsChanged;
        }
        public int GetTextViewFilter(IVsIntellisenseHost pISenseHost, IOleCommandTarget pNextCmdTarget, out IVsTextViewFilter pTextViewFilter)
        {
            pTextViewFilter = null;

            IVsTextLines buffer;

            ErrorHandler.ThrowOnFailure(bufferCoordinator.GetSecondaryBuffer(out buffer));

            var secondaryFilePath = FilePathUtilities.GetFilePath(buffer);

            if (secondaryFilePath == null)
            {
                secondaryFilePath = NemerleSource.GetStubFileForSecondaryBuffer(buffer);
            }

            var secondaryFileIndex = Location.GetFileIndex(secondaryFilePath);
            var primaryFileindex   = Location.GetFileIndex(_filePath);

            bool doOutlining = LanguageService.Preferences.AutoOutlining;

            LanguageService.Preferences.AutoOutlining = false;

            if (_projectInfo != null && LanguageService.GetSource(buffer) == null)
            {
                // создаем и регистрируем в проекте временный source, чтобы не сломалась логика
                // конструктора NemerleSource (см вызов LanguageService.AddEditableSource)
                //_projectInfo.ReplaseOrAddSource(new FileNemerleSource(secondaryFileIndex));
                _projectInfo.AddEditableSource((NemerleSource)LanguageService.CreateSource(buffer));
            }

            NemerleSource source = LanguageService.GetOrCreateSource(buffer) as NemerleSource;

            source.SetBufferCoordinator(bufferCoordinator);

            if (_projectInfo != null)
            {
                _projectInfo.Engine.RequestOnBuildTypesTree();
            }

            LanguageService.Preferences.AutoOutlining = doOutlining;

            _windowManager = LanguageService.CreateCodeWindowManager(null, source);

            language.AddCodeWindowManager(_windowManager);

            // увеличиваем внутренний счетчик openCount, для того чтобы впоследствии корректно отработала логика закрытия соурса
            source.Open();

            TextViewWrapper view = new TextViewWrapper(languageHost, pISenseHost, bufferCoordinator, pNextCmdTarget, source);

            _windowManager.OnNewView(view);

            pTextViewFilter = view.InstalledFilter;
            NemerleViewFilter nemerleFilter = pTextViewFilter as NemerleViewFilter;

            if (null != nemerleFilter)
            {
                nemerleFilter.BufferCoordinator = this.bufferCoordinator;
            }

            // сохраним значение DocumentEvents в переменной класса, чтобы исключить преждевременное уничтожение
            // объекта и автоматическоей отписывание от событий.
            //
            // Источник решения:
            // PRB: Visual Studio .NET events being disconnected from add-in (http://www.mztools.com/articles/2005/mz2005012.aspx)
            _documentEvents = _projectItem.DTE.Events.get_DocumentEvents(_projectItem.Document);

            _documentEvents.DocumentClosing += _documentClosingEventHandler;

            return(VSConstants.S_OK);
        }
        public int GetTextViewFilter(IVsIntellisenseHost pISenseHost, IOleCommandTarget pNextCmdTarget, out IVsTextViewFilter pTextViewFilter)
        {
            pTextViewFilter = null;

            IVsTextLines buffer;
            ErrorHandler.ThrowOnFailure(bufferCoordinator.GetSecondaryBuffer(out buffer));

            var secondaryFilePath = FilePathUtilities.GetFilePath(buffer);

            if (secondaryFilePath == null)
                secondaryFilePath = NemerleSource.GetStubFileForSecondaryBuffer(buffer);

            var secondaryFileIndex = Location.GetFileIndex(secondaryFilePath);
            var primaryFileindex = Location.GetFileIndex(_filePath);

            bool doOutlining = LanguageService.Preferences.AutoOutlining;
            LanguageService.Preferences.AutoOutlining = false;

            if (_projectInfo != null && LanguageService.GetSource(buffer) == null)
            {
                // создаем и регистрируем в проекте временный source, чтобы не сломалась логика
                // конструктора NemerleSource (см вызов LanguageService.AddEditableSource)
                //_projectInfo.ReplaseOrAddSource(new FileNemerleSource(secondaryFileIndex));
                _projectInfo.AddEditableSource((NemerleSource)LanguageService.CreateSource(buffer));
            }

            NemerleSource source = LanguageService.GetOrCreateSource(buffer) as NemerleSource;
            source.SetBufferCoordinator(bufferCoordinator);

            if (_projectInfo != null)
            {
                _projectInfo.Engine.RequestOnBuildTypesTree();
            }

            LanguageService.Preferences.AutoOutlining = doOutlining;

            _windowManager = LanguageService.CreateCodeWindowManager(null, source);

            language.AddCodeWindowManager(_windowManager);

            // увеличиваем внутренний счетчик openCount, для того чтобы впоследствии корректно отработала логика закрытия соурса
            source.Open();

            TextViewWrapper view = new TextViewWrapper(languageHost, pISenseHost, bufferCoordinator, pNextCmdTarget, source);
            _windowManager.OnNewView(view);

            pTextViewFilter = view.InstalledFilter;
            NemerleViewFilter nemerleFilter = pTextViewFilter as NemerleViewFilter;
            if (null != nemerleFilter)
                nemerleFilter.BufferCoordinator = this.bufferCoordinator;

            // сохраним значение DocumentEvents в переменной класса, чтобы исключить преждевременное уничтожение
            // объекта и автоматическоей отписывание от событий.
            //
            // Источник решения:
            // PRB: Visual Studio .NET events being disconnected from add-in (http://www.mztools.com/articles/2005/mz2005012.aspx)
            _documentEvents = _projectItem.DTE.Events.get_DocumentEvents(_projectItem.Document);

            _documentEvents.DocumentClosing += _documentClosingEventHandler;

            return VSConstants.S_OK;
        }