To provide good completion suggestions, an ast is needed to know if the cursor is in an option or not. However common completion cases do not parse in protocompile, for example:
- An empty option block:
int32 foo [<cursor>]; (done)
- An option without an "= ":
int32 foo [bar<cursor>]; (done)
- An option with a trailing ",":
int32 foo [deprecated = true, <cursor>]; (done)
- An option without a trailing semicolon:
int32 foo [bar<cursor>] (done)
- An option name with a trailing ".":
int32 foo [(bar.<cursor>)]; or int32 foo [foo.<cursor>] (done)
- A type reference with a trailing ".":
foo.<cursor>
To provide good completion suggestions, an ast is needed to know if the cursor is in an option or not. However common completion cases do not parse in protocompile, for example:
int32 foo [<cursor>];(done)int32 foo [bar<cursor>];(done)int32 foo [deprecated = true, <cursor>];(done)int32 foo [bar<cursor>](done)int32 foo [(bar.<cursor>)];orint32 foo [foo.<cursor>](done)foo.<cursor>