Пользовательский язык NotePad++ не отображает условные операторы

Пользовательский язык NotePad++ не отображает условные операторы

Я загрузил пользовательский язык для Powerbuilder в NotePad+. С ним все работает отлично, за исключением того, что он не показывает условные операторы в подсветке. Я посмотрел на XML, но не нашел в нем ничего неправильного, так как он должен быть подсвечен.

Есть идеи, что тут может быть не так? Вот скриншот того, как это выглядит в NotePad++:

условный_оператор_определенный_пользователем_язык

PowerBuilder.xml <- Определяемый пользователем язык

<NotepadPlus>
    <UserLang name="PowerBuilder" ext="srw sru srs srm">
        <Settings>
            <Global caseIgnored="yes"/>
            <TreatAsSymbol comment="yes" commentLine="yes"/>
            <Prefix words1="no" words2="no" words3="no" words4="no"/>
        </Settings>
            <KeywordLists>
                <Keywords name="Delimiters">"00"00</Keywords>
                <Keywords name="Folder+">if choose subroutine type</Keywords>
                <Keywords name="Folder-">end</Keywords>
                <Keywords name="Operators">( ) . ;</Keywords>
                <Keywords name="Comment">1/* 2*/ 0//</Keywords>
                <Keywords name="Words1">
                alias and autoinstantiate call case catch choose close commit connect constant continue create cursor declare delete describe descriptor destory disconnect do dynamic else elseif end enumerated event execute exit external false fetch finally first for forward from function global goto halt if immediate indirect insert into intrinsic is last library loop namespace native next not of on open or parent post prepare prior private privateread privatewrite procedure protected protectedread protectedwrite prototypes public readonly ref return rollback rpcfunc select selectblob shared static step subroutine super system systemread systemwrite then this throw throws to trigger true try type until update updateblob using variables while with within xor _debug
                </Keywords>
                <Keywords name="Words2">
                any Blob Boolean Byte Char Character Date DateTime Decimal Dec Double Integer Int Long LongLong Real String Time UnsignedInteger UnsignedInt UInt UnsignedLong ULong
                </Keywords>
                <Keywords name="Words3">this parent super</Keywords>
                <Keywords name="Words4"/>
            </KeywordLists>
        <Styles>
            <WordsStyle name="DEFAULT" styleID="11" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
            <WordsStyle name="FOLDEROPEN" styleID="12" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
            <WordsStyle name="FOLDERCLOSE" styleID="13" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
            <WordsStyle name="KEYWORD1" styleID="5" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="1"/>
            <WordsStyle name="KEYWORD2" styleID="6" fgColor="800080" bgColor="FFFFFF" fontName="" fontStyle="0"/>
            <WordsStyle name="KEYWORD3" styleID="7" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="1"/>
            <WordsStyle name="KEYWORD4" styleID="8" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0"/>
            <WordsStyle name="COMMENT" styleID="1" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
            <WordsStyle name="NUMBER" styleID="4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
            <WordsStyle name="OPERATOR" styleID="10" fgColor="000000" bgColor="FFFFFF" fontName="@Arial Unicode MS" fontStyle="0"/>
            <WordsStyle name="DELIMINER1" styleID="14" fgColor="959595" bgColor="FFFFFF" fontName="" fontStyle="0"/>
            <WordsStyle name="DELIMINER2" styleID="15" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
            <WordsStyle name="DELIMINER3" styleID="16" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
        </Styles>
    </UserLang>
</NotepadPlus>

решение1

Я знаю, что в вашем комментарии говорилось, что вы пытались удалить ifиз Folder+ в XML... но когда я использую диалоговое окно UDL для изменения настроек, оно подтверждает, что находится ifвСкладывание в стиле кода 1вот в чем причина:

  • Поскольку у вас было определение UDL, я вижу нечто похожее на то, что вы показали:
  • Если я затем изменюСтайлердляСкладывание в стиле кода 1, Chooseи ifи endследуют за цветом сворачивания:
  • Если я затем удалю ifизСкладывание в стиле кода 1, цвет ifменяется с розоватого на голубой.

Если у вас есть слово, указанное как «folding» и «keyword», будет применено форматирование стиля «folding», поскольку лексический анализатор UDL ищет «folding» перед тем, как выделить «keyword», и останавливается, как только находит его.

(также я бы рекомендовал добавить elseifв раздел «Середина»Складывание в стиле кода 1, если вы оставите ifсворачивание as вместо ключевого слова.)

Связанный контент