Esempio n. 1
0
        private void Apply(string displayName, HtmlElement original, HtmlElement newElement, string tabsBefore)
        {
            if ((!string.IsNullOrEmpty(displayName) && (original != null)) && (newElement != null))
            {
                int         num            = original.NameRange.End.Offset - original.StartOffset;
                SourceRange insertionRange = GetInsertionRange(original);
                string      s = CodeRush.Language.GenerateElement(newElement);
                s = CodeRush.StrUtil.RemoveLastLineTerminator(s);
                if (Options.PutCloseTagOnOwnLine)
                {
                    var terminator = @"/>";
                    if (!s.EndsWith(terminator))
                    {
                        terminator = @">";
                    }

                    s  = s.Substring(0, s.Length - terminator.Length);
                    s += string.Format("\r\n{0}{1}", tabsBefore, terminator);
                }
                insertionRange.BindToCode(CodeRush.Documents.Active as TextDocument);
                ICompoundAction         action = CodeRush.TextBuffers.NewMultiFileCompoundAction(displayName, true);
                IMultiLidContainerGroup group  = CodeRush.LinkedIdentifiers.OpenMultiLidContainerGroup();
                try
                {
                    FileChangeCollection changes = new FileChangeCollection();
                    changes.Add(new FileChange(original.FileNode.Name, insertionRange, s));
                    CodeRush.File.ApplyChanges(changes, false, true);
                    CodeRush.Caret.MoveTo(insertionRange.Start.Line, (int)(insertionRange.Start.Offset + num));
                }
                catch (Exception exception)
                {
                    LogBase <Log> .SendException(displayName, exception);
                }
                finally
                {
                    if (_breakApartPreview != null)
                    {
                        _breakApartPreview.Clear();
                        _breakApartPreview = null;
                    }

                    group.Close();
                    action.Close();
                    insertionRange.RemoveAllBindings();
                }
            }
        }
 private void GetChanges(FileChangeCollection result, Member member, string newName)
 {
     result.Add(new FileChange(member.FileNode.Name, member.NameRange, newName));
     CascadeReferenceSearcher cascadeReferenceSearcher = new CascadeReferenceSearcher();
     IElementCollection references = cascadeReferenceSearcher.FindCascadeReferences(CodeRush.Source.ActiveSolution, member);
     foreach (IElement reference in references)
     {
         _NumReferencesChanged++;
         result.Add(new FileChange(reference.FirstFile.Name, reference.FirstNameRange, newName));
     }
 }
 private void AddFileChanges(FileChangeCollection fileChangeCollection, Dictionary<string, List<LanguageElement>> references)
 {
     foreach (KeyValuePair<string, List<LanguageElement>> referenceList in references)
     {
         string expectedNamespace = referenceList.Key;
         List<LanguageElement> allReferences = referenceList.Value;
         foreach (LanguageElement reference in allReferences)
             fileChangeCollection.Add(new FileChange(reference.FileNode.Name, reference.Range, expectedNamespace));
     }
 }
 public void RemoveOldNamespaceImports(FileChangeCollection fileChangeCollection)
 {
     foreach (NamespaceReference namespaceReference in _NamespacesToRemove)
         fileChangeCollection.Add(new FileChange(namespaceReference.FileNode.Name, namespaceReference.Range, String.Empty));
 }
        private void Apply(string displayName, HtmlElement original, HtmlElement newElement, string tabsBefore)
        {
            if ((!string.IsNullOrEmpty(displayName) && (original != null)) && (newElement != null))
            {
                int num = original.NameRange.End.Offset - original.StartOffset;
                SourceRange insertionRange = GetInsertionRange(original);
                string s = CodeRush.Language.GenerateElement(newElement);
                s = CodeRush.StrUtil.RemoveLastLineTerminator(s);
                if (Options.PutCloseTagOnOwnLine)
                {
                    var terminator = @"/>";
                    if(!s.EndsWith(terminator))
                    {
                        terminator = @">";
                    }

                    s = s.Substring(0, s.Length - terminator.Length);
                    s += string.Format("\r\n{0}{1}", tabsBefore, terminator);
                }
                insertionRange.BindToCode(CodeRush.Documents.Active as TextDocument);
                ICompoundAction action = CodeRush.TextBuffers.NewMultiFileCompoundAction(displayName, true);
                IMultiLidContainerGroup group = CodeRush.LinkedIdentifiers.OpenMultiLidContainerGroup();
                try
                {
                    FileChangeCollection changes = new FileChangeCollection();
                    changes.Add(new FileChange(original.FileNode.Name, insertionRange, s));
                    CodeRush.File.ApplyChanges(changes, false, true);
                    CodeRush.Caret.MoveTo(insertionRange.Start.Line, (int)(insertionRange.Start.Offset + num));
                }
                catch (Exception exception)
                {
                    LogBase<Log>.SendException(displayName, exception);
                }
                finally
                {
                    if (_breakApartPreview != null)
                    {
                        _breakApartPreview.Clear();
                        _breakApartPreview = null;
                    }

                    group.Close();
                    action.Close();
                    insertionRange.RemoveAllBindings();
                }
            }
        }