A code completion tool built on n-grams could be very effective. Many special cases for types arise naturally from this.
`foo.` is probably a void method, whereas `await foo.` is an async method. `return foo.` and `x = foo.` probably have different properties too.
miniblog.
Related Posts
I'm writing a Path type in my programming language but not sure what methods belong on a Path.
Should I have some_path.read_string() or fs::read_string(some_path) instead?
I love .method() for IDE completion, but I don't want Path to be cluttered. I'm also trying to avoid UFCS.
Should code completion offer private methods/fields?
If the user chooses a private method, you can offer a quickfix to change its visibility. It's clutter though.
I frequently find myself wanting fields that I haven't exposed yet, and frustrated that the IDE hides them.
Copilot doesn't offer a way of disabling completion inside comments. People have discovered a comical workaround: swearing in the comment!