Hello @Eike that's exactly what I wanna do. But I don't know where I can connect tout this signals and the "highlightBlock" method doesn't provide the line number to highlight nor from which file the line comes from.
Jeremy Le 23 nov. 2017 10:06, "JeremY Larrieu" <[email protected]> a écrit : > 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" <[email protected]> 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 [email protected] http://lists.qt-project.org/mailman/listinfo/qt-creator
