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