本文整理汇总了C#中Mono.OffsetToLineNumber方法的典型用法代码示例。如果您正苦于以下问题:C# Mono.OffsetToLineNumber方法的具体用法?C# Mono.OffsetToLineNumber怎么用?C# Mono.OffsetToLineNumber使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mono
的用法示例。
在下文中一共展示了Mono.OffsetToLineNumber方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ExpressionResult
// string expression;
/* IMember GetLanguageItem (Mono.TextEditor.Document document, LineSegment line, int offset, string expression)
{
string txt = document.Text;
ExpressionResult expressionResult = new ExpressionResult (expression);
// ExpressionResult expressionResult = expressionFinder.FindFullExpression (txt, offset);
int lineNumber = document.OffsetToLineNumber (offset);
expressionResult.Region = new DomRegion (lineNumber, offset - line.Offset, lineNumber, offset + expression.Length - line.Offset);
expressionResult.ExpressionContext = ExpressionContext.IdentifierExpected;
resolver = new NRefactoryResolver (ctx, doc.CompilationUnit, doc.TextEditor, document.FileName);
ResolveResult result = resolver.Resolve (expressionResult, expressionResult.Region.Start);
if (result is MemberResolveResult)
return ((MemberResolveResult)result).ResolvedMember;
return null;
}*/
public override void Analyze (Mono.TextEditor.Document doc, LineSegment line, Chunk startChunk, int startOffset, int endOffset)
{
if (!MonoDevelop.Core.PropertyService.Get ("EnableSemanticHighlighting", false) || doc == null || line == null || startChunk == null)
return;
ctx = GetParserContext (doc);
int lineNumber = doc.OffsetToLineNumber (line.Offset);
ParsedDocument parsedDocument = ProjectDomService.GetParsedDocument (ctx, doc.FileName);
ICompilationUnit unit = parsedDocument != null ? parsedDocument.CompilationUnit : null;
if (unit == null)
return;
for (Chunk chunk = startChunk; chunk != null; chunk = chunk.Next) {
if (chunk.Style != "text")
continue;
for (int i = chunk.Offset; i < chunk.EndOffset; i++) {
char charBefore = i > 0 ? doc.GetCharAt (i - 1) : '}';
if (Char.IsLetter (doc.GetCharAt (i)) && !Char.IsLetterOrDigit (charBefore)) {
} else {
continue;
}
int start = i;
bool wasWhitespace = false;
bool wasDot = false;
int bracketCount = 0;
while (start > 0) {
char ch = doc.GetCharAt (start);
if (ch == '\n' || ch == '\r')
break;
if (wasWhitespace && IsNamePart(ch)) {
start++;
if (start < chunk.Offset)
start = Int32.MaxValue;
break;
}
if (ch == '<') {
bracketCount--;
if (bracketCount < 0) {
start++;
break;
}
start--;
wasWhitespace = false;
continue;
}
if (ch == '>') {
if (wasWhitespace && !wasDot)
break;
bracketCount++;
start--;
wasWhitespace = false;
continue;
}
if (!IsNamePart(ch) && !Char.IsWhiteSpace (ch) && ch != '.') {
start++;
break;
}
wasWhitespace = Char.IsWhiteSpace (ch);
wasDot = ch == '.' || wasDot && wasWhitespace;
start--;
}
int end = i;
int genericCount = 0;
wasWhitespace = false;
List<Segment> nameSegments = new List<Segment> ();
while (end < chunk.EndOffset) {
char ch = doc.GetCharAt (end);
if (wasWhitespace && IsNamePart(ch))
break;
if (ch == '<') {
genericCount = 1;
while (end < doc.Length) {
ch = doc.GetCharAt (end);
if (ch == ',')
genericCount++;
if (ch == '>') {
nameSegments.Add (new Segment (end, 1));
break;
}
end++;
}
break;
//.........这里部分代码省略.........