Avalonedit - تمتد القواعد
-
25-09-2019 - |
سؤال
كيف تتحقق مما إذا كانت كلمة في موضع ما في فترة [i] من مجموعة XSHD؟
شكرًا!
المحلول
هناك طريقتان محتملين للحصول على معلومات من محرك تسليط الضوء:
يخزن محرك تسليط الضوء فقط "مكدس Span" في بداية كل سطر. يمكنك استعمال ال DocumentHighlighter.GetSpanStack
طريقة لاستردادها.
var documentHighlighter = textEditor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter;
bool isInComment = documentHighlighter.GetSpanStack(1)
.Any(s => s.SpanColor != null && s.SpanColor.Name == "Comment");
سيعود هذا صحيحًا إذا كانت نهاية السطر 1 (= بدء السطر 2) داخل تعليق متعدد الأسلحة.
لمزيد من النتائج التفصيلية داخل الخطوط ، سيتعين عليك تشغيل أداة التمييز.
int off = document.GetOffset(7, 22);
HighlightedLine result = documentHighlighter.HighlightLine(7);
bool isInComment = result.Sections.Any(s => s.Offset <= off
&& s.Offset+s.Length >= off
&& s.Color.Name == "Comment");
بطبيعة الحال ، فإن تحديد الممتدات/الأقسام حسب اللون لا يعمل إلا بشكل موثوق إذا تم تسمية هذه الألوان. لم يتم تحديث جميع الباتجاهات المدمجة لاستخدام الألوان المسماة ، لذا يرجى التحقق من ملفات .xshd أولاً.
لا تنتمي إلى StackOverflow