Skip to content

My internship project: improving code completion for Pharo

Notifications You must be signed in to change notification settings

myroslavarm/Experimental-Completion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Experimental-Completion

Information about the project:

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.

alt-text

Blog posts about the progress and further plans:

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.

More links related to the work:

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.

alt-text

Releases

No releases published

Packages

No packages published