On 11/23/2017 07:29 AM, JeremY Larrieu wrote:
Hello,

I'm working on making a plugin to support a specific language: Anubis.

I've started the highlighting part and I saw that QtCreator is making syntax highlighting line by line instead of making it "globally" for the whole file.

I just wanna know, how can I use the Bison/Flex files, used to check syntax for Anubis language, to make syntax highlighting in QtCreator. Knowing that most of the tokens declared in the Flex file can be multiline, making a lexer, working line by line, able to detect those tokens is hard and the code is too "verbose".

I've tried to adapt what I've found in Bison/Flex files to make a syntax highlighter, but it's really painful and it makes further updates harder. If I was able to apply highlighting on the whole file (not line by line), it were simpler and I could use it to make some other functionalities at the same time: code completion, code analysis, symbol detection, ...

Do you have an idea on how I can make syntax highlighting without rewriting a full lexer ?

Thanks in advance.

Jeremy

Hi!

I guess you've found TextEditor::SyntaxHighlighter, which does the line by line highlighting with highlightBlock(). For C++ and multi-line tokens (e.g. C comments) we call our custom lexer for the current line with the lexer state from the line before. If flex provides such a state based yylex() equivalent, this might work.

The alternative is to use SemanticHighlighter::incrementalApplyExtraAdditionalFormats(). With this one, you can for example start parsing in a worker thread and provide the highlighting information as a stream of TextEditor::HighlightingResult items.

Nikolai
_______________________________________________
Qt-creator mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/qt-creator

Reply via email to