protected override ITaggerEventSource CreateEventSource(ITextView textView, ITextBuffer subjectBuffer) { return(TaggerEventSources.Compose( TaggerEventSources.OnTextChanged(subjectBuffer, TaggerDelay.NearImmediate), TaggerEventSources.OnCaretPositionChanged(textView, subjectBuffer, TaggerDelay.NearImmediate), TaggerEventSources.OnParseOptionChanged(subjectBuffer, TaggerDelay.NearImmediate))); }
protected sealed override ITaggerEventSource CreateEventSource(ITextView textViewOpt, ITextBuffer subjectBuffer) { // We listen to the following events: // 1) Text changes. These can obviously affect outlining, so we need to recompute when // we hear about them. // 2) Parse option changes. These can affect outlining when, for example, we change from // DEBUG to RELEASE (affecting the inactive/active regions). // 3) When we hear about a workspace being registered. Outlining may run before a // we even know about a workspace. This can happen, for example, in the TypeScript // case. With TypeScript a file is opened, but the workspace is not generated until // some time later when they have examined the file system. As such, initially, // the file will not have outline spans. When the workspace is created, we want to // then produce the right outlining spans. return(TaggerEventSources.Compose( TaggerEventSources.OnTextChanged(subjectBuffer, TaggerDelay.OnIdle), TaggerEventSources.OnParseOptionChanged(subjectBuffer, TaggerDelay.OnIdle), TaggerEventSources.OnWorkspaceRegistrationChanged(subjectBuffer, TaggerDelay.OnIdle), TaggerEventSources.OnOptionChanged(subjectBuffer, BlockStructureOptions.ShowBlockStructureGuidesForCodeLevelConstructs, TaggerDelay.NearImmediate), TaggerEventSources.OnOptionChanged(subjectBuffer, BlockStructureOptions.ShowBlockStructureGuidesForDeclarationLevelConstructs, TaggerDelay.NearImmediate), TaggerEventSources.OnOptionChanged(subjectBuffer, BlockStructureOptions.ShowBlockStructureGuidesForCommentsAndPreprocessorRegions, TaggerDelay.NearImmediate), TaggerEventSources.OnOptionChanged(subjectBuffer, BlockStructureOptions.ShowOutliningForCodeLevelConstructs, TaggerDelay.NearImmediate), TaggerEventSources.OnOptionChanged(subjectBuffer, BlockStructureOptions.ShowOutliningForDeclarationLevelConstructs, TaggerDelay.NearImmediate), TaggerEventSources.OnOptionChanged(subjectBuffer, BlockStructureOptions.ShowOutliningForCommentsAndPreprocessorRegions, TaggerDelay.NearImmediate), TaggerEventSources.OnOptionChanged(subjectBuffer, BlockStructureOptions.CollapseRegionsWhenCollapsingToDefinitions, TaggerDelay.NearImmediate))); }