Unfortunately its not that easy.
The highlighter does a basic search, based on the simple syntax rules of the language. It only looks at one line/statement at a time. It only keeps basic state info, like being in a var block.
So in
var
Foo: TMyClass;
FooClass: class of TMyClass;
It would know "Foo" is a variable (because it is before the ":"), and "TMyClass" is a type.
However in the procedure body that is not always the case:
without any context, you can not tell what TMyClass is. It could be another variable, it could be a type, or a function, or constant, or param....
To know what it is, the highlighter would need to keep track of the entire codebase (like codetools does).
Changes in another unit could change the highlight (because if TMyClass is from another unit, it could change from a variable to a function).
Or "FeatureHold" in your example. Seems easy at first, but if there is
with RecordThatHasFieldFeatureHold do begin
a := FeatureHold; // field of the record
end;
Again codetools does that already, but codetools on the other hand only recomputes occasionally.
And Highlight means every keystroke would require a lot of re-computing.
Well modern PC can handle this, but its a lot of code that needs to be implemented. (and that is not on the Todo list at the moment).
---
You can highlight fixed keywords. Such as True, False, break, exit, continue... by using "user defined markup" in the Tools > Options > Editor.
(Though that will highlight them in strings and comments too)