Exemplo n.º 1
0
 private static void ComputeRefactoring(
     RefactoringContext context,
     MemberDeclarationSortMode sortMode,
     string title,
     SelectedMemberDeclarationCollection selectedMembers,
     ImmutableArray <MemberDeclarationSyntax> selectedMemberArray)
 {
     if (!MemberDeclarationComparer.IsSorted(selectedMemberArray, sortMode))
     {
         context.RegisterRefactoring(
             title,
             cancellationToken => RefactorAsync(context.Document, selectedMembers, sortMode, cancellationToken));
     }
 }
Exemplo n.º 2
0
        private static async Task <Document> RefactorAsync(
            Document document,
            SelectedMemberDeclarationCollection selectedMembers,
            MemberDeclarationSortMode sortMode,
            CancellationToken cancellationToken)
        {
            var comparer = new MemberDeclarationComparer(sortMode);

            MemberDeclarationSyntax containingMember = selectedMembers.ContainingMember;

            SyntaxList <MemberDeclarationSyntax> members = containingMember.GetMembers();

            SyntaxList <MemberDeclarationSyntax> newMembers = members
                                                              .Take(selectedMembers.FirstIndex)
                                                              .Concat(selectedMembers.OrderBy(f => f, comparer))
                                                              .Concat(members.Skip(selectedMembers.LastIndex + 1))
                                                              .ToSyntaxList();

            MemberDeclarationSyntax newNode = containingMember.SetMembers(newMembers);

            return(await document.ReplaceNodeAsync(containingMember, newNode, cancellationToken).ConfigureAwait(false));
        }
Exemplo n.º 3
0
        private static void ComputeRefactoring(RefactoringContext context, SelectedMemberDeclarationCollection selectedMembers)
        {
            if (selectedMembers.IsMultiple)
            {
                ImmutableArray <MemberDeclarationSyntax> selectedMemberArray = selectedMembers.ToImmutableArray();

                SyntaxKind kind = GetSingleKindOrDefault(selectedMemberArray);

                if (kind != SyntaxKind.None)
                {
                    if (MemberDeclarationComparer.CanBeSortedAlphabetically(kind))
                    {
                        ComputeRefactoring(
                            context,
                            MemberDeclarationSortMode.ByKindThenByName,
                            "Sort members by name",
                            selectedMembers,
                            selectedMemberArray);
                    }
                }
                else
                {
                    ComputeRefactoring(
                        context,
                        MemberDeclarationSortMode.ByKind,
                        "Sort members by kind",
                        selectedMembers,
                        selectedMemberArray);

                    ComputeRefactoring(
                        context,
                        MemberDeclarationSortMode.ByKindThenByName,
                        "Sort members by kind then by name",
                        selectedMembers,
                        selectedMemberArray);
                }
            }
        }
Exemplo n.º 4
0
 public static void ComputeRefactoring(RefactoringContext context, InterfaceDeclarationSyntax interfaceDeclaration)
 {
     ComputeRefactoring(context, SelectedMemberDeclarationCollection.Create(interfaceDeclaration, context.Span));
 }