本文整理汇总了C#中Mono.TextEditor.Document.OffsetToLocation方法的典型用法代码示例。如果您正苦于以下问题:C# Document.OffsetToLocation方法的具体用法?C# Document.OffsetToLocation怎么用?C# Document.OffsetToLocation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mono.TextEditor.Document
的用法示例。
在下文中一共展示了Document.OffsetToLocation方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateCompletion
CSharpTextEditorCompletion CreateCompletion (MonoDevelop.Ide.Gui.Document realDocument, DocumentInfo info, LocalDocumentInfo localInfo, out CodeCompletionContext codeCompletionContext)
{
var doc = new Mono.TextEditor.Document () {
Text = localInfo.LocalDocument,
};
var documentLocation = doc.OffsetToLocation (localInfo.CaretPosition);
codeCompletionContext = new CodeCompletionContext () {
TriggerOffset = localInfo.CaretPosition,
TriggerLine = documentLocation.Line,
TriggerLineOffset = documentLocation.Column - 1
};
var r = new System.IO.StringReader (localInfo.LocalDocument);
using (var parser = ICSharpCode.NRefactory.ParserFactory.CreateParser (SupportedLanguage.CSharp, r)) {
parser.Parse ();
return new CSharpTextEditorCompletion (localInfo.HiddenDocument) {
ParsedUnit = parser.CompilationUnit,
CompletionWidget = CreateCompletionWidget (realDocument, localInfo),
Dom = localInfo.HiddenDocument.Dom
};
}
}
示例2: GetInsertionPoints
public static List<InsertionPoint> GetInsertionPoints (Document doc, IType type)
{
if (doc == null)
throw new ArgumentNullException ("doc");
if (type == null)
throw new ArgumentNullException ("type");
List<InsertionPoint> result = new List<InsertionPoint> ();
int offset = doc.LocationToOffset (type.BodyRegion.Start.Line, type.BodyRegion.Start.Column);
if (offset < 0)
return result;
while (offset < doc.Length && doc.GetCharAt (offset) != '{' && char.IsWhiteSpace (doc.GetCharAt (offset)))
offset++;
var realStartLocation = doc.OffsetToLocation (offset);
result.Add (GetInsertionPosition (doc, realStartLocation.Line, realStartLocation.Column));
result[0].LineBefore = NewLineInsertion.None;
foreach (IMember member in type.Members) {
DomLocation domLocation = member.BodyRegion.End;
if (domLocation.Line <= 0) {
LineSegment lineSegment = doc.GetLine (member.Location.Line);
if (lineSegment == null)
continue;
domLocation = new DomLocation (member.Location.Line, lineSegment.EditableLength + 1);
}
result.Add (GetInsertionPosition (doc, domLocation.Line, domLocation.Column));
}
result[result.Count - 1].LineAfter = NewLineInsertion.None;
CheckStartPoint (doc, result[0], result.Count == 1);
if (result.Count > 1)
CheckEndPoint (doc, result[result.Count - 1], result.Count == 1);
return result;
}
示例3: GetInsertionPosition
static InsertionPoint GetInsertionPosition (Document doc, int line, int column)
{
LineSegment nextLine = doc.GetLine (line + 1);
int bodyEndOffset = doc.LocationToOffset (line, column) + 1;
int endOffset = nextLine != null ? nextLine.Offset : doc.Length;
for (int i = bodyEndOffset; i < endOffset; i++) {
char ch = doc.GetCharAt (i);
if (!char.IsWhiteSpace (ch))
return new InsertionPoint (doc.OffsetToLocation (i), true, true);
}
if (nextLine == null)
return new InsertionPoint (doc.OffsetToLocation (bodyEndOffset - 1), true, true);
int oldLine = line;
bool curLineEmpty = false;
if (doc.GetLineIndent (nextLine).Length == nextLine.EditableLength) {
curLineEmpty = true;
while (line + 2 < doc.LineCount && doc.GetLineIndent (line + 2).Length == doc.GetLine (line + 2).EditableLength)
line++;
}
bool insertBefore = !curLineEmpty && line - oldLine <= 1;
bool insertAfter = line - oldLine == 0;
// if (curLineEmpty)
// line++;
int lineNumber = line + 1;
return new InsertionPoint (new DocumentLocation (lineNumber, doc.GetLineIndent (lineNumber).Length), insertBefore, insertAfter);
}
示例4: GetInsertionPosition
static InsertionPoint GetInsertionPosition (Document doc, int line, int column)
{
int bodyEndOffset = doc.LocationToOffset (line, column) + 1;
LineSegment curLine = doc.GetLine (line);
if (curLine != null) {
if (bodyEndOffset < curLine.Offset + curLine.EditableLength)
return new InsertionPoint (new DocumentLocation (line, column + 1), NewLineInsertion.BlankLine, NewLineInsertion.BlankLine);
}
LineSegment nextLine = doc.GetLine (line + 1);
int endOffset = nextLine != null ? nextLine.Offset : doc.Length;
for (int i = bodyEndOffset; i < endOffset; i++) {
char ch = doc.GetCharAt (i);
if (!char.IsWhiteSpace (ch))
return new InsertionPoint (doc.OffsetToLocation (i), NewLineInsertion.BlankLine, NewLineInsertion.BlankLine);
}
if (nextLine == null)
return new InsertionPoint (doc.OffsetToLocation (bodyEndOffset - 1), NewLineInsertion.BlankLine, NewLineInsertion.BlankLine);
int oldLine = line;
while (line < doc.LineCount && doc.GetLineIndent (line + 1).Length == doc.GetLine (line + 1).EditableLength)
line++;
NewLineInsertion insertBefore = NewLineInsertion.None;
NewLineInsertion insertAfter = NewLineInsertion.None;
int delta = line - oldLine;
int lineNumber = line + 1;
if (delta == 0) {
insertBefore = NewLineInsertion.Eol;
insertAfter = NewLineInsertion.BlankLine;
} else if (delta == 1) {
insertAfter = NewLineInsertion.BlankLine;
} else if (delta == 2) {
lineNumber--;
insertAfter = NewLineInsertion.BlankLine;
} else if (delta >= 3) {
lineNumber -= 2;
insertAfter = NewLineInsertion.None;
}
return new InsertionPoint (new DocumentLocation (lineNumber, doc.GetLineIndent (lineNumber).Length + 1), insertBefore, insertAfter);
}
示例5: SetLocationTextData
void SetLocationTextData (Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
{
CellRendererText cellRendererText = (CellRendererText)cell;
Change change = store.GetValue (iter, objColumn) as Change;
cellRendererText.Visible = (bool)store.GetValue (iter, statusVisibleColumn);
TextReplaceChange replaceChange = change as TextReplaceChange;
if (replaceChange == null) {
cellRendererText.Text = "";
return;
}
Mono.TextEditor.Document doc = new Mono.TextEditor.Document ();
doc.Text = System.IO.File.ReadAllText (replaceChange.FileName);
DocumentLocation loc = doc.OffsetToLocation (replaceChange.Offset);
string text = string.Format (GettextCatalog.GetString ("(Line:{0}, Column:{1})"), loc.Line, loc.Column);
if (treeviewPreview.Selection.IterIsSelected (iter)) {
cellRendererText.Text = text;
} else {
cellRendererText.Markup = "<span foreground=\"" + MonoDevelop.Components.PangoCairoHelper.GetColorString (Style.Text (StateType.Insensitive)) + "\">" + text + "</span>";
}
}