سؤال

كيف تتحقق مما إذا كانت كلمة في موضع ما في فترة [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 أولاً.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top