Пример #1
0
        public async Task <QuickInfoItem?> GetQuickInfoItemAsync(IAsyncQuickInfoSession session, CancellationToken cancellationToken)
        {
            SnapshotPoint?triggerPoint = session.GetTriggerPoint(_buffer?.CurrentSnapshot);

            if (triggerPoint.HasValue)
            {
                SnapshotSpan span = new(triggerPoint.Value.Snapshot, triggerPoint.Value.Position, 0);
                IMappingTagSpan <TokenTag> tag = _tags.GetTags(span).FirstOrDefault(t => t.Tag.GetTooltipAsync != null);

                if (tag != null && tag.Tag.GetTooltipAsync != null)
                {
                    object?tooltip = await tag.Tag.GetTooltipAsync(triggerPoint.Value);

                    if (tooltip == null)
                    {
                        return(null);
                    }

                    ContainerElement container    = new(ContainerElementStyle.Stacked, tooltip);
                    ITrackingSpan    applicapleTo = _buffer !.CurrentSnapshot.CreateTrackingSpan(tag.Span.GetSpans(_buffer)[0], SpanTrackingMode.EdgeExclusive);

                    return(new QuickInfoItem(applicapleTo, container));
                }
            }

            return(null);
        }
        internal void NewSnapshot(TickNumber tick)
        {
            if (tick <= Tick)
            {
                throw new ArgumentOutOfRangeException("New tick number must be greater than current tick:" + Tick);
            }
            Snapshot snapshot = (Snapshot)CurrentSnapshot.Clone();

            Snapshots.Add(tick, snapshot);
            Tick = tick;
        }
Пример #3
0
        public ITextSnapshot Insert(int position, string text)
        {
            var sb = new StringBuilder();

            sb.Append(CurrentSnapshot.GetText(0, position));
            sb.Append(text);
            sb.Append(CurrentSnapshot.GetText(position, CurrentSnapshot.Length - position));

            TextChangeMock   change       = new TextChangeMock(position, 0, String.Empty, text);
            TextSnapshotMock nextSnapshot = ((TextSnapshotMock)CurrentSnapshot).CreateNextSnapshot(sb.ToString(), change);

            ApplyChange(nextSnapshot);

            return(CurrentSnapshot);
        }
        public SimState(Snapshot initialSnapshot)
        {
            InitialSnapshot = (Snapshot)initialSnapshot.Clone();
            Snapshots.Add(0, (Snapshot)initialSnapshot.Clone());

            EntityID largestEntityID = 0;

            foreach (SimComponent component in CurrentSnapshot.GetComponents())
            {
                if (component.EntityID > largestEntityID)
                {
                    largestEntityID = component.EntityID;
                }
            }
            NextEntityID = largestEntityID + 1;
        }
Пример #5
0
        public ITextSnapshot Replace(Span replaceSpan, string replaceWith)
        {
            var sb      = new StringBuilder();
            var oldText = CurrentSnapshot.GetText(replaceSpan);

            sb.Append(CurrentSnapshot.GetText(0, replaceSpan.Start));
            sb.Append(replaceWith);
            sb.Append(CurrentSnapshot.GetText(replaceSpan.End, CurrentSnapshot.Length - replaceSpan.End));

            TextChangeMock change = new TextChangeMock(replaceSpan.Start, replaceSpan.Length, oldText, replaceWith);

            TextSnapshotMock nextSnapshot = ((TextSnapshotMock)CurrentSnapshot).CreateNextSnapshot(sb.ToString(), change);

            ApplyChange(nextSnapshot);

            return(CurrentSnapshot);
        }
Пример #6
0
            public void LoadSnapshotFromJson(string jsonString)
            {
                var json = JObject.Parse(jsonString);
                var data = json.ToObject <SnapshotModel>();

                if (data.NodesCache != null)
                {
                    SetCurrentSnapshotNodesCache(data.NodesCache);
                }

                if (data.DependenciesWorld != null)
                {
                    foreach (var dependency in data.DependenciesWorld)
                    {
                        CurrentSnapshot.AddDependency(dependency.ItemSpec, dependency.Properties);
                    }
                }
            }
Пример #7
0
 public void UpdateDependencyInSnapshot(string itemSpec, IImmutableDictionary <string, string> properties)
 {
     CurrentSnapshot.UpdateDependency(itemSpec, properties);
 }
Пример #8
0
 public void AddDependencyToSnapshot(string itemSpec, IImmutableDictionary <string, string> properties)
 {
     CurrentSnapshot.AddDependency(itemSpec, properties);
 }
 private string GetText()
 {
     return CurrentSnapshot.GetText();
 }
Пример #10
0
        private NugetDependenciesChange ProcessResolvedChanges(IProjectSubscriptionUpdate projectSubscriptionUpdate,
                                                               HashSet <IDependencyNode> rootTreeNodes)
        {
            var changes         = projectSubscriptionUpdate.ProjectChanges;
            var resolvedChanges = ResolvedReferenceRuleNames.Where(x => changes.Keys.Contains(x))
                                  .Select(ruleName => changes[ruleName])
                                  .ToImmutableHashSet();
            var dependenciesChange = new NugetDependenciesChange();
            var newDependencies    = new HashSet <DependencyMetadata>();

            foreach (var change in resolvedChanges)
            {
                if (!change.Difference.AnyChanges)
                {
                    continue;
                }

                foreach (string removedItemSpec in change.Difference.RemovedItems)
                {
                    var metadata = CurrentSnapshot.RemoveDependency(removedItemSpec);
                    var itemNode = rootTreeNodes.FirstOrDefault(
                        x => x.Id.ItemSpec.Equals(removedItemSpec, StringComparison.OrdinalIgnoreCase));
                    if (itemNode != null)
                    {
                        dependenciesChange.RemovedNodes.Add(metadata);
                    }
                }

                foreach (string changedItemSpec in change.Difference.ChangedItems)
                {
                    var properties = GetProjectItemProperties(change.After, changedItemSpec);
                    if (properties == null)
                    {
                        continue;
                    }

                    var metadata = CurrentSnapshot.UpdateDependency(changedItemSpec, properties);
                    var itemNode = rootTreeNodes.FirstOrDefault(
                        x => x.Id.ItemSpec.Equals(changedItemSpec, StringComparison.OrdinalIgnoreCase));
                    if (itemNode != null)
                    {
                        dependenciesChange.UpdatedNodes.Add(metadata);
                    }
                }

                foreach (string addedItemSpec in change.Difference.AddedItems)
                {
                    var properties = GetProjectItemProperties(change.After, addedItemSpec);
                    if (properties == null)
                    {
                        continue;
                    }

                    var newDependency = CurrentSnapshot.AddDependency(addedItemSpec, properties);
                    newDependencies.Add(newDependency);
                }
            }

            // Note: currently deisgn time build is limited and is not aware of conditional on TFM
            // PackageReference items: Unresolved PackageReference items for conditional TFMs are not sent.
            // Thus we will display conditional PackageReferences if they were resolved and are in assets.json.
            // This limitation should go away, when we have final design for cross target dependencies and
            // DesignTime build.
            var allTargetsDependencies = CurrentSnapshot.GetUniqueTopLevelDependencies();

            if (allTargetsDependencies.Count == 0)
            {
                return(dependenciesChange);
            }

            var addedTopLevelDependencies = newDependencies.Where(
                x => allTargetsDependencies.Contains(x.ItemSpec));

            foreach (var addedDependency in addedTopLevelDependencies)
            {
                dependenciesChange.AddedNodes.Add(addedDependency);
            }

            return(dependenciesChange);
        }
Пример #11
0
 public void LineForPosition(int position, int expectedLine)
 {
     Assert.AreEqual(expectedLine, CurrentSnapshot.LineNumberForPosition(position));
 }
Пример #12
0
 public IEnumerable <SimComponent> GetComponents()
 {
     return(CurrentSnapshot.GetComponents());
 }
Пример #13
0
 public IEnumerable <T> GetComponents <T>() where T : SimComponent
 {
     return(CurrentSnapshot.GetComponents <T>());
 }
Пример #14
0
 internal void Update(IEnumerable <ComponentUpdate> updates)
 {
     CurrentSnapshot.Update(updates);
 }
 TextSpan TextSpan(int start, int length)
 {
     return(CurrentSnapshot.GetSpan(start, length));
 }
Пример #16
0
 public void RemoveDependencyFromSnapshot(string itemSpec)
 {
     CurrentSnapshot.RemoveDependency(itemSpec);
 }
Пример #17
0
 public HashSet <string> GetUniqueTopLevelDependencies()
 {
     return(CurrentSnapshot.GetUniqueTopLevelDependencies());
 }
Пример #18
0
 protected override SimpleInputSnapshot GetAvailableSnapshot()
 {
     CurrentSnapshot.Clear();
     NativeWindow.ProcessEvents();
     return(CurrentSnapshot);
 }