मैं AvalonEdit के सिंटेक्स हाइलाइटिंग इंजन को कैस्केड करना चाहता हूं। मेरे पास 2 HighlightingDefinitions
है। पहला मुख्य वाक्यविन्यास है। दूसरा एक जटिल मल्टीलाइन-प्रीप्रोसेसर-मार्कअप-भाषा है। इस कारण से पहले व्याकरण को दूसरे व्याकरण में लपेटना बहुत जटिल है। पहला वाक्यविन्यास प्रस्तुत करना आसान तरीका है, और प्रभावित लाइन-पार्ट्स (दूसरे वाक्यविन्यास के आधार पर) को बाद में बदलें।AvalonEdit: कैस्केडिंग हाइलाइटिंग कोलोराइज़र
इसलिए मैंने दूसरी भाषा के साथ एक नया HighlightingColorizer
तुरंत चालू किया और इसे LineTransformers
में जोड़ा। लेकिन दूसरी भाषा पूरे दस्तावेज़ को रंग देती है और न केवल प्रीप्रोसेसर-निर्देशों के साथ लाइनपर्ट्स: गैर प्रीप्रोसेसर-कोड काला है।
जैसा कि मैंने दूसरी पंक्ति ट्रांसफार्मर के ColorizeLine
-method डिबग, गैर प्रकाश डाला कोड (= कोई पूर्वप्रक्रमक कोड) की तर्ज, colorized नहीं किया गया है के रूप में उम्मीद। लेकिन रेखाओं का रंग काला है।
तो क्या HighlightingColorizer
रंगीन होने से पहले पूरे दस्तावेज़ की सभी पिछली हाइलाइटिंग को रीसेट करता है?
या समस्या क्या हो सकती है? मैं 2 HighlightingColorizers
को सही ढंग से कैस्केड कैसे कर सकता हूं?
मैंने एवलॉन एडिट- और आईआईआरसी के साथ थोड़ा सा काम किया है, जब आप एक और रंगीन रंग लागू करते हैं तो यह सभी हाइलाइटिंग रीसेट करता है। इसके आस-पास का सबसे अच्छा तरीका दूसरे व्याकरण को पहले के भीतर एम्बेड करने का फिर से प्रयास करना होगा- असफल होने के कारण आपको एवलॉन एडिट के कोडबेस के साथ गड़बड़ करनी होगी ताकि यह बदल सके कि यह रंग योजना का व्याख्या कैसे करता है और फिर से लागू होता है।उत्तरार्द्ध शायद गैर-तुच्छ होगा क्योंकि मुझे नहीं लगता कि यह 'रीसेट पर टिप्पणी करना' या ऐसा कुछ आसान होगा। –
@Xeno ठीक है। यदि आप XML परिभाषा फ़ाइलों का उपयोग नहीं करना चाहते हैं तो आपको निश्चित रूप से कोड बेस को संपादित करना होगा। हालांकि, मुझे यकीन नहीं है कि आप ऐसा क्यों नहीं करना चाहते हैं - वे तब तक हो सकते हैं जब तक आप चाहें और छोटे विवरण को रंगीन करने के लिए उपयोग किया जा सके। मैंने अभी एम्बेडेड एसक्यूएल के साथ एक सिमलर चीज करने के लिए एक फाइल लिखी है; यह तेज़ है और अच्छी तरह से काम करता है ... – MoonKnight