I'm not quite sure what's the best choice here (keeping in mind the
problem with overreaching variable highlights on level 4), but
logically, I think 'module' belongs with 'function' and 'property'
because all three denote some basic syntactic elements which are easy to
understand even without colors, and are harder to make a mistake in.
I am proposing to get rid of the module feature entirely and bring those
queries into the type feature because:
- Of how much overlap there is between them
- It will make maintaining the queries much easier
- It's already a headache dealing with them separately, and I'm not sure the
best way to deal with the issues of them being separate (and the different
levels of highlighting to worry about). It will probably be quite the hack to
deal with it, and no matter what I tried stuff was always sneaking through.
- It also won't introduce that much more highlighting
Also here's a pre-existing problem mentioned above:
use std::{fmt, fs, usize};
'fmt' and 'fs' are not types. But they are highlighted with
font-lock-type-face.
This is really weird, I can reproduce it with emacs -Q but not with my normal
config...
Also with emacs -Q this:
let date = DateTime::<chrono::hey::there::Utc>::from_utc(date,
chrono::cool::this::Utc);
highlights incorrectly, where "there" is font-lock-variable-name-face. But with
my normal config everything is fine.
I'll look into it tomorrow. Not really sure what in my config could cause
this...
Thank you.
I did a clean build and wasn't able to reproduce it anymore. Guess it was stale
bytecode or something?
At level 4 everything highlights correctly I believe, and with level 3 the only
issues are the module highlighting ones, and to deal with that I think the
module feature should be merged into the type one as I mentioned above. Then we
can call it a day :). I'll post a new patch with those changes if you agree.