This is a project I started working on during my internship in the summer of 2018 and continued during GSoC2019. The project's goal it is to improve the code completion in Pharo.
Important note: most of the recent changes as of late July 2019 are only available in Pharo 8 and this repository is only maintained as a draft dev version.
The architecture is like this:
- CompletionController for setting the completion engine in the Settings
- CompletionContext for creating the model and parsing the nodes
- CompletionProducer for completing based on node type
- TypingVisitor for assigning types to nodes
- CompletionSorter for establishing various sorting strategies
If you go to Settings Browser -> Code Browsing -> Code Completion you can choose between CompletionController (our completion) and NECController (old completion) for the Controller, and (right now) between AlphabeticSorter and ReverseAlphabeticSorter for the Sorter. Later we want to have an n-gram based and an OCOompletion-inspired sorting strategies.
Improving Code Completion @ GSoC 2019: introduction - link.
Progress with Code Completion [June] - link.
Test Code Completion has been added to Pharo 8! - link.
Latest completion update: simpler, better - link.
Discovering AST implementation errors in Pharo - link.
Machine Learning for Code Completion - link.
Code Completion in Pharo: GSoC Project Summary - link.
Video summing up the work done - link.
List of PRs into the main Pharo repository - link.
Work still left to do (list of issues in the repository) - link.