Also, using a list of names can indeed highlight more locations, but OTOH it has many other shortcomings: * not syntax-based, which you don't currently like for type names: how would it really be different here? * bound to only highlight *known* names, so like for typenames it's unreliable as a visual clue as it's inconsistent. * as said, requires a way to feed the lexer with a very large list of names (probably at least a few hundred thousands, each names probably about 16 chars long in an optimistic scenario -- who said currently it means building a 2M string?), and the lexer to use that list, both in an efficient enough manner so it can reasonably be done whenever the list of functions names changes (which can happen on every keystroke).