Autocomplete for keywords is a surprisingly nuanced problem.
public |
In this case you need to work out what keywords can appear next, and there may be multiple valid syntaxes!
public | function
In this case you want to narrow the modifiers based on context before and after.
miniblog.
Related Posts
Metalinks in Pharo:
https://www.slideshare.net/mobile/MarcusDenker/lecture-advanced-reflection-metalinks
This is an elegant way of taking the AST of running code and attaching modifiers to it: logging, tracing, override (think advice or AOP).
Pharo feels like the most open, dynamic language I've seen outside of f-expression based PLs.