[squeak-dev] Fwd: [Pharo-dev] Code Completion

Eliot Miranda eliot.miranda at gmail.com
Fri Jan 26 14:51:28 UTC 2018


From: "Torsten Bergmann" <astares at gmx.de>
Date: January 25, 2018 at 11:51:17 PM PST
To: pharo-dev at lists.pharo.org
Subject: Re: [Pharo-dev] Code Completion
Reply-To: Pharo Development List <pharo-dev at lists.pharo.org>

Hi Myroslava,

some infos:
 
Initially for Squeak there was "eCompletion" written by Ruben Bakker. According to the package "eCompletion is code 
completion inspired by eclipse", it required MCInstaller, Shout 4 and RoelTyper.
http://uncomplex.net/ecompletion/

Back in Squeak "Shout" was used to have syntax highlighting as you type.
RoelTyper is a fast type reconstructor for Smalltalk (name comes from its Author Roel Wuyts)
https://roelwuyts.be/roeltyper/index.html
https://www.youtube.com/watch?v=CvKTCSv7s8s

Later oCompletion followed - "OCompletion builds on ECompletion and improves its accuracy."
http://www.squeaksource.com/OCompletion/
http://www.inf.unisi.ch/phd/robbes/papers/ASE2008-completion.pdf
OCompletion uses (based on recent activity) considerably improves the accuracy of code completion. That is, 
the actual selector you want to insert is usually in the top 3 matches OCompletion proposes.
https://news.squeak.org/tag/ocompletion/

A paper you should read is
https://users.dcc.uchile.cl/~rrobbes/p/JASE-completion.pdf
OCompletion is a re-working of the venerable eCompletion package, based on research done by Romain Robbes and Michele Lanza.

OCompletion is in Pharo since Pharo 2.0
There already was a discussion about better completion back in 2015
https://www.mail-archive.com/pharo-users@lists.pharo.org/msg14835.html based on the need for pluggability
(https://pharo.fogbugz.com/f/cases/13124/NECContext-needs-plugin-design) and basing it on AST instead of Shout
https://pharo.fogbugz.com/f/cases/10219/Completion-enter-on-accept-awkwardness

So NECController is the old code and NOCController (there was a setting to change from one to the other)
ECompletion was just a list of matching classes/selectors. OCompletion added some candy like showing first last typed entries 
(with some other heuristic).

http://www.jarober.com/blog/blogView?showComments=true&title=ST+4U+46%3A+Autocomplete+in+Pharo&entry=3474862713


What I always liked in Eclipse compared to Pharo is that you can code complete an expression and
the parameters are visualized with a rectangle and by "tabbing" you can fill each of them:

https://www.youtube.com/watch?v=OMbVQcZ0gV8

Also one can do own code templates who are used in the completion then:
https://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.cdt.doc.user%2Ftasks%2Fcdt_t_add_codetemp.htm


Some other alternatives: CACHECA is a cache language model based code suggestion tool (https://github.com/christinef/CACHECA) for Eclipse
which could be seen in https://www.youtube.com/watch?v=3INk0N3JNtc

RubyMine code completion for Ruby
https://www.jetbrains.com/help/ruby/auto-completing-code.html


Thanks
T.

Gesendet: Donnerstag, 25. Januar 2018 um 22:52 Uhr
Von: "Myroslava Romaniuk" <romaniuk at ucu.edu.ua>
An: "Pharo Development List" <pharo-dev at lists.pharo.org>
Betreff: [Pharo-dev] Code Completion

Hi, I'm Myroslava
 
Some of you might remember how last year I did GSoC and worked on Renraku / Quality Assistant with Yuriy.
 
This year Stephane suggested several projects I could work on, and one of them is improving code completion in Pharo, in particular ecompletion. Could you recommend any resources that would help me better understand how it works? I'd also like to know what's the difference between ecompletion and ocompletion, and what's NOC and NEC completion, as it doesn't seem very clear to me so far?
 
If any of you worked on it and can help me get started, I would really appreciate it.
 
Thanks

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20180126/a8ec87c1/attachment.html>


More information about the Squeak-dev mailing list