File: Shared\Tagging\EventSources\TaggerEventSources.cs
Web Access
Project: src\src\EditorFeatures\Core\Microsoft.CodeAnalysis.EditorFeatures.csproj (Microsoft.CodeAnalysis.EditorFeatures)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.CodeAnalysis.Editor.Shared.Utilities;
using Microsoft.CodeAnalysis.Editor.Tagging;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.VisualStudio.Text;
using Microsoft.VisualStudio.Text.Editor;
 
namespace Microsoft.CodeAnalysis.Editor.Shared.Tagging;
 
internal static partial class TaggerEventSources
{
    public static ITaggerEventSource Compose(
        params ITaggerEventSource[] eventSources)
    {
        return new CompositionEventSource(eventSources);
    }
 
    public static ITaggerEventSource Compose(IEnumerable<ITaggerEventSource> eventSources)
        => new CompositionEventSource(eventSources.ToArray());
 
    public static ITaggerEventSource OnCaretPositionChanged(ITextView textView, ITextBuffer subjectBuffer)
        => new CaretPositionChangedEventSource(textView, subjectBuffer);
 
    public static ITaggerEventSource OnTextChanged(ITextBuffer subjectBuffer)
        => new TextChangedEventSource(subjectBuffer);
 
    /// <summary>
    /// Reports an event any time the workspace changes.
    /// </summary>
    public static ITaggerEventSource OnWorkspaceChanged(ITextBuffer subjectBuffer, IAsynchronousOperationListener listener)
        => new WorkspaceChangedEventSource(subjectBuffer, listener);
 
    public static ITaggerEventSource OnDocumentActiveContextChanged(ITextBuffer subjectBuffer)
        => new DocumentActiveContextChangedEventSource(subjectBuffer);
 
    public static ITaggerEventSource OnSelectionChanged(ITextView textView)
        => new SelectionChangedEventSource(textView);
 
    public static ITaggerEventSource OnReadOnlyRegionsChanged(ITextBuffer subjectBuffer)
        => new ReadOnlyRegionsChangedEventSource(subjectBuffer);
 
    public static ITaggerEventSource OnGlobalOptionChanged(IGlobalOptionService globalOptions, Func<IOption2, bool> predicate)
        => new GlobalOptionChangedEventSource(globalOptions, predicate);
 
    public static ITaggerEventSource OnParseOptionChanged(ITextBuffer subjectBuffer)
        => new ParseOptionChangedEventSource(subjectBuffer);
 
    public static ITaggerEventSource OnWorkspaceRegistrationChanged(ITextBuffer subjectBuffer)
        => new WorkspaceRegistrationChangedEventSource(subjectBuffer);
 
    public static ITaggerEventSource OnViewSpanChanged(IThreadingContext threadingContext, ITextView textView)
        => new ViewSpanChangedEventSource(threadingContext, textView);
}