« first day (423 days earlier)      last day (1924 days later) » 

01:01
01:31
Good news: The last hour I profiled the plugin because I found that the highlighting worked too slow on large files. I knew that the reason had something to do with the coloring of local variables, because to identify them, I have to walk the AST a bit. To make my life easier, I had implemented the highlighter (more exact: annotator) to use the resolving of symbol definitions to find out, whether or not a variable has its definition in a Module/Block/Table.
When I couldn't find a symbols definition by walking the tree upwards and checking every localization construct, it meant the symbol was defined at global scope. To find the position of this global definition, I had to go through the whole AST from top, until I met a definition which defined the symbol in question. This was the death for the highlighter because you have to imagine that it checks whether it needs to annotate for every symbol in the file. Worst-case scenario is that there are
no localized variables but only global definitions. Then, for each non-builtin symbol the annotator makes run through the whole file.
Anyway, now I that I fixed that, 2xCombinatorica.m which is about 16k lines of code is highlighted completely in <4s.
I'm very proud of myself now.
Thanks @Scabolcs for sharing the pain and discussing this stuff!

« first day (423 days earlier)      last day (1924 days later) »