Send to Printer


Code Completion in VA Smalltalk

March 20, 2012 10:19:04.202

Seth Berman - who's relatively new to the VA team at Instantiations - built the new code completion facilities for the tool. I've done a screencast on that - and Set looked at various other implementations (VW, Pharo, non-Smalltalk tools) before calling his work done.

Lots of new stuff in 8.5.1 - when I did my screencast, it was in 8.5. Sounds like I need to go back and have another look. It sounds like you can configure the way this works a lot more than you could with the first release of it.

Here's the abstract:

Code Completion allows for developers to type less by predicting how to complete what is being typed and offering these predictions to the developer to select from. Code Completion was first introduced in VA Smalltalk 8.5, but development didn’t stop there. Many additional features have since been added and it has continued to improve in usability and configurability. This presentation will show Code Completion in action by providing a thorough demonstration of its capabilities in the browsers, debuggers and workspaces. Furthermore, an overview of its extensive set of configuration options will be given to show how one can create a completely customized experience.

There's more coming for this, too - tighter integration with the existing code assist features being the biggest. As with many of these talks, you'll want to see the video (when STIC releases it) for the demo.

Ok, this is cool. The CamelCase matching is really quite nice. If you type in RWS, it knows that you mean "match by camel case", and offers "ReadWriteStream". This is the kind of intelligent help that experienced Smalltalkers could make great use of, and it makes long descriptive names easier to use. Works for methods, too: #add:afterIndex: comes up if you type aai - each character after the : gets treated (for matching purposes) as if it were a capital in camel case.


x := OrderedCollection new.
y := x
z := y.

Doing code completion on z (or x or y) offers methods from OrderedCollection. There's a setting option to filter out all of the inherited from Object stuff too. In general, the completer uses static analysis/type reconstruction to help it decide what to offer.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This