Hello, Thanks for your answers.
I will look to semantic highlighting. The purpose seems to fit my needs: syntax highlighting, symbol detection, ... each time a file is opened or modified. @Nikolai the lex file works with at most 4/5 states and was not made to work line by line. Modifying it in this direction will not help me to stick closer to the language when new features will come. I will have to make too many updates to my lex file each time the one's coming with the language is updated. Thanks again. Jeremy Le 23 nov. 2017 09:19, "Nikolai Kosjar" <nikolai.kos...@qt.io> a écrit : > 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::increment > alApplyExtraAdditionalFormats(). 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 Qt-creator@qt-project.org http://lists.qt-project.org/mailman/listinfo/qt-creator