internal static IEnumerable <TokenInfo> ReverseTokenInfoEnumerable(Genero4glClassifier classifier, SnapshotPoint startPoint) { var startLine = startPoint.GetContainingLine(); int curLine = startLine.LineNumber; var tokens = classifier.GetTokens(new SnapshotSpan(startLine.Start, startPoint)); for (; ;) { for (int i = tokens.Count - 1; i >= 0; i--) { yield return(tokens[i]); } // indicate the line break yield return(default(TokenInfo)); curLine--; if (curLine >= 0) { var prevLine = startPoint.Snapshot.GetLineFromLineNumber(curLine); tokens = classifier.GetTokens(prevLine.Extent); } else { break; } } }
public GeneroTextViewChangedListener(IWpfTextView textView) { _textView = textView; _options = _textView.Options; _textView.Closed += _textView_Closed; _textView.TextBuffer.Changed += TextBuffer_Changed; _classifier = textView.TextBuffer.GetGeneroClassifier(); }
internal static ClassificationTypeDefinition OperatorClassificationDefinition = null; // Set via MEF #endregion #region IDlrClassifierProvider public IClassifier GetClassifier(ITextBuffer buffer) { if (_categoryMap == null) { _categoryMap = FillCategoryMap(_classificationRegistry); } Genero4glClassifier res = null; if (buffer != null && buffer.Properties != null) { if (!buffer.Properties.TryGetProperty <Genero4glClassifier>(typeof(Genero4glClassifier), out res) && ContentTypes != null && ContentTypes.Any(x => x != null && buffer.ContentType != null && buffer.ContentType.IsOfType(x.TypeName))) { res = new Genero4glClassifier(this, buffer); buffer.Properties.AddProperty(typeof(Genero4glClassifier), res); } } if (VSGeneroPackage.Instance != null) { if (VSGeneroPackage.Instance.GlobalFunctionProvider == null) { VSGeneroPackage.Instance.GlobalFunctionProvider = _PublicFunctionProvider; } if (VSGeneroPackage.Instance.ProgramFileProvider == null) { VSGeneroPackage.Instance.ProgramFileProvider = _ProgramFileProvider; } if (VSGeneroPackage.Instance.GlobalDatabaseProvider == null) { VSGeneroPackage.Instance.GlobalDatabaseProvider = _DatabaseInfoProvider; } if (VSGeneroPackage.Instance.BuildTaskProvider == null) { VSGeneroPackage.Instance.BuildTaskProvider = _BuildTaskProvider; } if (VSGeneroPackage.Instance.CommentValidators == null) { VSGeneroPackage.Instance.CommentValidators = _CommentValidators; } } if (res == null) { return(GetClassifier()); } return(res); }
internal static IEnumerator <ClassificationSpan> ReverseClassificationSpanEnumerator(Genero4glClassifier classifier, SnapshotPoint startPoint) { if (classifier != null && startPoint != null) { var startLine = startPoint.GetContainingLine(); if (startLine != null) { int curLine = startLine.LineNumber; var tokens = classifier.GetClassificationSpans(new SnapshotSpan(startLine.Start, startPoint)); for (;;) { for (int i = tokens.Count - 1; i >= 0; i--) { yield return(tokens[i]); } // indicate the line break yield return(null); curLine--; if (curLine >= 0 && startPoint.Snapshot != null) { var prevLine = startPoint.Snapshot.GetLineFromLineNumber(curLine); tokens = classifier.GetClassificationSpans(prevLine.Extent); } else { break; } } } } }