يبدو أن تمييز الكود يتجاهل علامات الاقتباس المهربة (المفردة والمزدوجة). هذا يعني، إذا كان يحتوي على علامات اقتباس مهربة، فسيتم تمييز أجزاء من السلسلة النصية كرمز عادي. في هذا المنتدى، يبدو أن تمييز الكود معطل، لذلك أدرج رابطًا لمنشور المنتدى المحدد حيث لاحظت ذلك لأول مرة.
تم تمكين تمييز الكود لـ bash، cs، cpp، xml، ini، json، makefile، markdown، python، c، c-like. الإعداد الافتراضي هو cpp. إعادة تعيين إعدادات تمييز اللغة هذه إلى الإعدادات الافتراضية لا يحل المشكلة.
المشكلة موجودة أيضًا في الوضع الآمن
المشكلة موجودة أيضًا عند تهريب علامات الاقتباس المفردة في سلسلة نصية مفردة (تهريب علامة الاقتباس المفردة في سلسلة نصية مزدوجة والعكس يعمل بشكل صحيح).
بالفعل، تمييز لغة ++cpp يعمل إذا تم تحديده صراحةً. ومع ذلك، أثناء البحث في هذا الأمر أكثر، وجدت سلوكًا آخر… غير متوقع.
لقد قمت بإزالة جميع اللغات من قائمة اللغات المميزة باستثناء cpp وأعدت اللغة الافتراضية إلى auto. كانت النتيجة لا تزال تمييزًا خاطئًا. كشف فتح المفتش في فيرفكس أن الكود يُعرف على ما يبدو باسم vbnet - وهي لغة لم تكن أبدًا في قائمة اللغات المميزة (لا الافتراضية ولا أي لغات مخصصة جربتها لهذه المشكلة)؟ هل من المفترض أن يحدث هذا؟
لقد قمت بإعادة تحميل الصفحة. بينما لم يتغير منشور المنتدى نفسه أبدًا - حتى عند إعادة تشغيل فايرفوكس أو إعادة تحميل الصفحة باستخدام CTRL+F5 - لاحظت أن المعاينة لتحرير المنشور تستخدم الإعدادات المعدلة عند إعادة تحميل الصفحة.
لذلك، مع cpp كلغة وحيدة في القائمة (لإبقاء الأمور بسيطة)، إذا قمت بتعيين اللغة الافتراضية إلى cpp، فإن تمييز الكود في معاينة تحرير المنشور يكون صحيحًا. إذا قمت بتعيين اللغة الافتراضية إلى auto وقمت بإعادة تحميل الصفحة مرة أخرى، فلن يكون الأمر صحيحًا كما هو موضح في المنشور السابق.
إعادة تشغيل المتصفح لن يفي بالغرض. في Discourse، يتم خبز المنشورات (تحويلها من markdown إلى HTML) في الخادم مرة واحدة فقط، ويتم تخزين HTML الناتج مؤقتًا في قاعدة البيانات. لتحديث المنشور المخبوز المذكور، تحتاج إلى “إعادة خبزه”. يمكن القيام بذلك بواسطة مستخدم إداري باستخدام قائمة المفتاح على منشور أو بواسطة مؤلف المنشور عن طريق تحرير محتويات المنشور المذكور.
شكرًا. إعادة الخبز تؤدي إلى نفس السلوك كما هو الحال مع معاينة التعديل. auto يحدد لغة (vbnet) غير موجودة في قائمة اللغات التي سيتم تمييزها. تعيين اللغة الافتراضية صراحةً إلى cpp (إما في إعدادات المنتدى أو كما أظهرت هنا) يعمل كما تم الإبلاغ عنه سابقًا.
لذا يبقى السؤال: هل من المفترض أن تستخدم auto لغات أخرى غير تلك الموجودة في القائمة؟