本文整理汇总了C#中RefactoringOptions.ParseDocument方法的典型用法代码示例。如果您正苦于以下问题:C# RefactoringOptions.ParseDocument方法的具体用法?C# RefactoringOptions.ParseDocument怎么用?C# RefactoringOptions.ParseDocument使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RefactoringOptions
的用法示例。
在下文中一共展示了RefactoringOptions.ParseDocument方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: IsValid
public override bool IsValid (RefactoringOptions options)
{
// if (options.SelectedItem != null)
// return false;
var buffer = options.Document.Editor;
if (buffer.IsSomethingSelected) {
ParsedDocument doc = options.ParseDocument ();
if (doc != null && doc.CompilationUnit != null) {
if (doc.CompilationUnit.GetMemberAt (buffer.Caret.Line, buffer.Caret.Column) == null)
return false;
return true;
}
}
return false;
}
示例2: IsValid
public override bool IsValid (RefactoringOptions options)
{
// if (options.SelectedItem != null)
// return false;
var buffer = options.Document.TextEditor;
if (buffer.SelectionStartPosition - buffer.SelectionEndPosition != 0) {
ParsedDocument doc = options.ParseDocument ();
if (doc != null && doc.CompilationUnit != null) {
int line, column;
buffer.GetLineColumnFromPosition (buffer.CursorPosition, out line, out column);
if (doc.CompilationUnit.GetMemberAt (line, column) == null)
return false;
return true;
}
}
return false;
}
示例3: PerformChanges
public override List<Change> PerformChanges (RefactoringOptions options, object properties)
{
List<Change> result = new List<Change> ();
ICompilationUnit compilationUnit = options.ParseDocument ().CompilationUnit;
Mono.TextEditor.TextEditorData textEditorData = options.GetTextEditorData ();
int minOffset = int.MaxValue;
foreach (IUsing u in compilationUnit.Usings) {
if (u.IsFromNamespace)
continue;
int offset = textEditorData.Document.LocationToOffset (u.Region.Start.Line, u.Region.Start.Column);
TextReplaceChange change = new TextReplaceChange () {
FileName = options.Document.FileName,
Offset = offset,
RemovedChars = textEditorData.Document.LocationToOffset (u.Region.End.Line, u.Region.End.Column) - offset
};
Mono.TextEditor.LineSegment line = textEditorData.Document.GetLineByOffset (change.Offset);
if (line != null && line.EditableLength == change.RemovedChars)
change.RemovedChars += line.DelimiterLength;
result.Add (change);
minOffset = Math.Min (minOffset, offset);
}
StringBuilder output = new StringBuilder ();
List<IUsing> usings = new List<IUsing> (compilationUnit.Usings);
usings.Sort (UsingComparer);
INRefactoryASTProvider astProvider = options.GetASTProvider ();
foreach (IUsing u in usings) {
AstNode declaration;
if (u.IsFromNamespace)
continue;
if (u.Aliases.Any ()) {
KeyValuePair<string, IReturnType> alias = u.Aliases.First ();
declaration = new UsingAliasDeclaration (alias.Key, alias.Value.ConvertToTypeReference ());
} else {
declaration = new UsingDeclaration (u.Namespaces.First ());
}
output.Append (astProvider.OutputNode (options.Dom, declaration));
}
TextReplaceChange insertSortedUsings = new TextReplaceChange () {
FileName = options.Document.FileName,
Offset = minOffset,
InsertedText = output.ToString ()
};
result.Add (insertSortedUsings);
return result;
}
示例4: PerformChanges
public override List<Change> PerformChanges (RefactoringOptions options, object properties)
{
List<Change> result = new List<Change> ();
ICSharpCode.NRefactory.Ast.CompilationUnit unit = options.GetASTProvider ().ParseFile (options.Document.Editor.Text);
FindTypeReferencesVisitor visitor = new FindTypeReferencesVisitor (options.GetTextEditorData (), options.GetResolver ());
visitor.VisitCompilationUnit (unit, null);
ProjectDom dom = options.Dom;
ICompilationUnit compilationUnit = options.ParseDocument ().CompilationUnit;
HashSet<string> usedUsings = new HashSet<string> ();
foreach (TypeReference r in visitor.PossibleTypeReferences) {
if (r.IsKeyword)
continue;
IType type = dom.SearchType (compilationUnit, compilationUnit, r.ConvertToReturnType ());
if (type != null) {
usedUsings.Add (type.Namespace);
}
}
Mono.TextEditor.TextEditorData textEditorData = options.GetTextEditorData ();
HashSet<string> currentUsings = new HashSet<string> ();
foreach (IUsing u in compilationUnit.Usings) {
if (u.IsFromNamespace)
continue;
if (!u.Aliases.Any () && u.Namespaces.All (name => currentUsings.Contains (name) || !usedUsings.Contains (name)) ) {
TextReplaceChange change = new TextReplaceChange ();
change.FileName = options.Document.FileName;
change.Offset = textEditorData.Document.LocationToOffset (u.Region.Start.Line, u.Region.Start.Column);
change.RemovedChars = textEditorData.Document.LocationToOffset (u.Region.End.Line, u.Region.End.Column) - change.Offset;
Mono.TextEditor.LineSegment line = textEditorData.Document.GetLineByOffset (change.Offset);
if (line != null && line.EditableLength == change.RemovedChars)
change.RemovedChars += line.DelimiterLength;
result.Add (change);
}
foreach (string nspace in u.Namespaces)
currentUsings.Add (nspace);
}
return result;
}
示例5: CreateParameters
public ExtractMethodParameters CreateParameters (RefactoringOptions options)
{
var buffer = options.Document.Editor;
if (!buffer.IsSomethingSelected)
return null;
ParsedDocument doc = options.ParseDocument ();
if (doc == null || doc.CompilationUnit == null)
return null;
IMember member = doc.CompilationUnit.GetMemberAt (buffer.Caret.Line, buffer.Caret.Column);
if (member == null)
return null;
ExtractMethodParameters param = new ExtractMethodParameters () {
DeclaringMember = member,
Location = new DomLocation (buffer.Caret.Line, buffer.Caret.Column)
};
Analyze (options, param, true);
return param;
}
示例6: CreateParameters
public ExtractMethodParameters CreateParameters (RefactoringOptions options)
{
var buffer = options.Document.TextEditor;
if (buffer.SelectionStartPosition - buffer.SelectionEndPosition == 0)
return null;
ParsedDocument doc = options.ParseDocument ();
if (doc == null || doc.CompilationUnit == null)
return null;
int line, column;
buffer.GetLineColumnFromPosition (buffer.CursorPosition, out line, out column);
IMember member = doc.CompilationUnit.GetMemberAt (line, column);
if (member == null)
return null;
ExtractMethodParameters param = new ExtractMethodParameters () {
DeclaringMember = member,
Location = new DomLocation (line, column)
};
Analyze (options, param, true);
return param;
}