我正在尝试复制此处显示的 Lua 语法突出显示样式:
我正在使用 DScintilla,VLC 组件在 Delphi 中支持 Scintilla。我阅读了 Dscintilla 的每个模块以查看功能并获得我想要的内容,并且我已经完成了以下操作:
- 边距(颜色、数量、宽度等)
- 着色 =、>、< 等
- 给数字着色
- 为评论着色
- 用'...'为字符串着色
现在的问题是,我无法将注释样式更改为斜体,或对 Scintilla 的 Lua 词法分析器中的条件语句(if、else、then、while 等)进行着色条件语句(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