在Scintilla.NET中更改语法颜色

时间:2013-01-21 03:27:02

标签: c# .net scintilla

我一直在乱搞Scintilla.NET一两个小时,但我遇到了一个似乎应该很容易解决的问题。我似乎找不到一种方法来改变Scintilla.NET中关键字的实际高亮颜色。据我所见,他们的文件非常缺乏,我在那里找不到任何帮助。我在这里也看到很多问题也没有帮到我。似乎无论我做什么,关键词的亮点总是深蓝色,这在我的表格主题上极难阅读。

到目前为止,我已将这种XML样式放在一起,并使用C#代码加载样式。我将几个示例中的XML放在一起,C#代码来自他们网站上的一个问题。

<?xml version="1.0" encoding="utf-8"?>
<ScintillaNET>

    <Language Name="65c816 asm">
        <Indentation TabWidth="4"/>
        <Lexer LineCommentPrefix=";" >
            <Keywords List="0" Inherit="False">
            adc adc and asl bcc bcs beq bit bmi bne bpl
            bra brk brl bvc bvs clc cld cli clv cmp cop
            cpx cpy dec dex dey eor inc inx iny jmp jsr
            lda ldx ldy lsr mvn mvp nop ora pea pei per
            pha phb phd phk php phx phy pla plb pld plp
            plx ply rep rol ror rti rtl rts sbc sec sed
            sei sep sta stp stx sty stz tax tay tcd tcs
            tdc trb tsb tsc tsx txa txs txy tya tyx wai
            wdm xba xce
            </Keywords>
        </Lexer>
        <Style Name="CHARACTER" ForeColor="#00AAFF"/>
        <Style Name="NUMBER" ForeColor="#00AA00"/>
    </Language>
</ScintillaNET>

C#代码如下:

scintilla1.Lexing.LexerLanguageMap["65c816 asm"] = "cpp";
scintilla1.ConfigurationManager.CustomLocation = System.IO.Path.GetFullPath("65c816.xml");
scintilla1.ConfigurationManager.Language = "65c816 asm";
scintilla1.ConfigurationManager.Configure();

1 个答案:

答案 0 :(得分:5)

我犯的错误似乎并未将<Style>包裹在<Styles>标记内。这样做之后似乎有效。在发布问题后直接找到一种令人尴尬的事情。

立即工作:

<?xml version="1.0" encoding="utf-8"?>
<ScintillaNET>

    <Language Name="65c816 asm">
        <Indentation TabWidth="4"/>
        <Lexer LineCommentPrefix=";" >
            <Keywords List="0" Inherit="False">
            adc adc and asl bcc bcs beq bit bmi bne bpl
            bra brk brl bvc bvs clc cld cli clv cmp cop
            cpx cpy dec dex dey eor inc inx iny jmp jsr
            lda ldx ldy lsr mvn mvp nop ora pea pei per
            pha phb phd phk php phx phy pla plb pld plp
            plx ply rep rol ror rti rtl rts sbc sec sed
            sei sep sta stp stx sty stz tax tay tcd tcs
            tdc trb tsb tsc tsx txa txs txy tya tyx wai
            wdm xba xce
            </Keywords>
        </Lexer>
        <Styles>
            <Style Name="CHARACTER" ForeColor="#00AAFF"/>
            <Style Name="NUMBER" ForeColor="#00AA00"/>
        </Styles>
    </Language>
</ScintillaNET>