gpt4 book ai didi

delphi - 如何配置 DScintilla 以突出显示具有某些样式属性的 Lua?

转载 作者:行者123 更新时间:2023-12-03 18:42:17 25 4
gpt4 key购买 nike

我正在尝试复制此处显示的 Lua 语法突出显示样式:



我正在使用 DScintilla,VLC 组件在 Delphi 中支持 Scintilla。我阅读了 Dscintilla 的每个模块以查看功能并获得所需的内容,并且我已经完成了以下操作:

  • 边距(颜色、数量、宽度等)
  • 着色 =、>、< 等
  • 为数字着色
  • 为评论着色
  • 用 '...' 为字符串着色

  • 现在的问题是,我无法将注释样式更改为斜体,或将 the lexer of Lua that Scintilla has 中的条件语句(if、else、then、while 等)着色。 ,
    或为变量着色。

    我目前的代码,一个有效的,是这样的:
    with EditScript do
    begin
    SetScrollWidth(430); //so we don't see it
    Margins.Right := 1;
    Margins.Left := 0;
    Margins.Top := 0;
    Margins.Bottom := 0;
    SetMarginLeft(5);
    SetMarginWidthN(0, 40);
    SetMarginWidthN(1, 0);
    SetExtraAscent(4); //space between lines

    //-----------------------margin line numbers
    StyleSetFont(STYLE_LINENUMBER, 'Default');
    StyleSetBold(STYLE_LINENUMBER, true);
    StyleSetBack(STYLE_LINENUMBER, gray);
    StyleSetFore(STYLE_LINENUMBER, clWebBlack);

    //-----------------------Text
    StyleSetFont(STYLE_DEFAULT, 'Courier New');
    //TO DO: variables and comments in cursive
    SetLexerLanguage('Lua');
    SetLexer(SCLEX_LUA);
    SetCodePage(CP_UTF8);

    //-----------------------Colours
    StyleSetFore(SCE_LUA_COMMENTLINE, green_comments);
    StyleSetFore(SCE_LUA_NUMBER, blue_numbers);
    StyleSetFore(SCE_LUA_CHARACTER, red_strings);
    StyleSetFore(SCE_LUA_OPERATOR, green_conditionals);
    end;

    什么不起作用?这:
    //-----------------------Italics
    StyleSetItalic(SCE_LUA_DEFAULT, true);
    StyleSetItalic(SCE_LUA_COMMENTLINE, true);
    StyleSetItalic(SCE_LUA_COMMENTDOC, true);

    或者
    StyleSetFore(SCE_LUA_COMMENT, clGreen);
    StyleSetFore(SCE_LUA_COMMENTDOC, clGreen);
    StyleSetFore(SCE_LUA_STRING, clGreen);
    StyleSetFore(SCE_LUA_LITERALSTRING, clGreen);
    StyleSetFore(SCE_LUA_PREPROCESSOR, clGreen);
    // StyleSetFore(SCE_LUA_IDENTIFIER, clGreen); //it highlights everything, wtf?
    StyleSetFore(SCE_LUA_STRINGEOL, clGreen);
    StyleSetFore(SCE_LUA_WORD, clGreen);
    StyleSetFore(SCE_LUA_WORD2, clGreen);
    StyleSetFore(SCE_LUA_WORD3, clGreen);
    StyleSetFore(SCE_LUA_WORD4, clGreen);
    StyleSetFore(SCE_LUA_WORD5, clGreen);
    StyleSetFore(SCE_LUA_WORD6, clGreen);
    StyleSetFore(SCE_LUA_WORD7, clGreen);
    StyleSetFore(SCE_LUA_WORD8, clGreen);
    StyleSetFore(SCE_LUA_LABEL, clGreen);

    如果我调用 ShowMessage(EditScript.DescribeKeyWordSets) ,我得到以下信息:

    关键词
    基本功能
    字符串、(表格)和数学函数
    (协程)、I/O 和系统设施
    用户1
    用户2
    用户3
    用户4

    最佳答案

    如果问题仅在于关键字和变量名,则似乎归结为两件事:

  • 您需要使用 SetKeyWords调用以将您拥有的任何关键字分配给对应于 SCE_LUA_WORD 的那些组和 SCE_LUA_WORD#团体。例如,editor:SetKeyWords(0,"if then else") .
  • 对于变量名,您可能需要使用 SCE_LUA_IDENTIFIER并以不同的颜色为其他所有内容着色。就我而言,设置 editor:StyleSetForeground(wxstc.wxSTC_LUA_IDENTIFIER, wx.wxColour(127, 0, 0))正确着色仅使用的变量。
  • 关于delphi - 如何配置 DScintilla 以突出显示具有某些样式属性的 Lua?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16742507/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com