void rpRenameXamlNamespacePrefix_Apply(object sender, ApplyContentEventArgs ea) { IEnumerable <TagPrefix> tagPrefixes = GetTagPrefixes(ea.Element); ILinkedIdentifierList linkedIdentifiers = CodeRush.LinkedIdentifiers.ActiveStorage.NewList(); foreach (TagPrefix tp in tagPrefixes) { linkedIdentifiers.Add(tp.Range); } CodeRush.LinkedIdentifiers.ActiveStorage.Invalidate(); }
/// <summary> /// Links ranges in the document passed as parameter /// </summary> /// <param name="document"></param> /// <param name="ranges"></param> private static void setUpLinksForDocument(TextDocument document, FileSourceRangeCollection ranges) { if ((ranges != null) && (document != null)) { ILinkedIdentifierList list = CodeRush.LinkedIdentifiers.GetStorage(document).NewList(); int count = ranges.Count; for (int i = 0; i < count; i++) { FileSourceRange range = ranges[i]; ILinkedIdentifier identifier = list.Add(range.Range); if (identifier != null) { identifier.Affix = range.Data as LinkedIdentifierAffix; } } } }
/// <summary> /// Breaks preexisting links between the source ranges passed as parameters /// </summary> /// <param name="context"></param> /// <param name="ranges"></param> private static void breakLinks(RefactoringContext context, FileSourceRangeCollection ranges) { if ((ranges != null) && (ranges.Count != 0)) { TextDocument document = context.Document; foreach (SourceRange range in getDocumentRanges(document, ranges)) { foreach (ILinkedIdentifier identifier in CodeRush.LinkedIdentifiers.Find(document, range)) { ILinkedIdentifierList list = identifier.List; if (list.MultiDocumentContainer != null) { list.MultiDocumentContainer.BreakAllLinks(); } } CodeRush.LinkedIdentifiers.BreakAllLinksInRange(document, range); } } }