Re: Is anyone working on Groovy language support at the moment? Asking because I'm looking at things, and don't want to collide and throw away each others time.
Wade Chandler <[email protected]> Mon, 26 Sep 2016 23:22:48 -0400
| Newsgroups | gmane.comp.java.netbeans.devel |
|---|---|
| Message-ID | <CALiWaWk2wBJOqEFFJyfcM0Z5ghTPKM7rUj9BSmHq=JCsr=_=VQ@mail.gmail.com> |
Way to go Sven! I can't wait to check it out. I want to look at source scanning and completion in Groovy files not in a project; such as scripts under favorites or in some other structure. It seems if a Groovy environment could be associated with a path, that would be possible. Too, support for Grape.grab or other class path altering logic in a script. Wade On Sep 24, 2016 8:06 AM, "Sven Reimers" <[email protected]> wrote: > Hi guys, > > I already made some progress enhancing code completion and a first hook > for mime-type based code completion extension (using gradle files as poc) > > Bonus: Initial support for traits (i.e. traits not making IDE unusable) > > More news once I am back from Java One. > > I assume we can start committing changes (after release branch creation?) > > Will make handling the different things more easy for me > > Sven > > Am 07.09.2016 05:23 schrieb "Wade Chandler" <[email protected]>: > >> I have it running nicely locally. I haven't tested on Windows yet though. >> Too, I noticed there are no tests in the support module; at all. I am >> adding some only for what I am touching. Too, I will need to make >> isTestClass work better. At the moment I believe it would be enabled for >> any Groovy file, but honestly it is better than not having the option at >> all, and at worst case things will fail as expected of one tries to test a >> class or method that is not a test. Not much different than the "run" file >> which is enabled for a file with nothing "runnable". So, I may submit this >> before making that work better, and then iterate. >> >> I wonder if this could be back ported to 8.1 or at least make a quick fix >> for the 8.2 release. It is a pain using Groovy for testing in NB without >> run single. >> >> Wade >> >> On Sep 5, 2016 2:15 PM, "Wade Chandler" <[email protected]> wrote: >> >> Sounds good Bruno. I’m in the middle of it, so once I done I will post an >> issue (or find one), and attach the patch, or look for a repo in which to >> create a branch to request a merge. >> >> Thanks >> >> Wade >> >> >> =================== >> >> Wade Chandler >> e: [email protected] >> >> >> >> On Sep 5, 2016, at 13:26, Bruno Flavio <[email protected]> wrote: >> >> Hello Wade, >> >> I'm currently the community member maintaining Groovy/Grails support. >> >> Sven Reimers and Martin Klähn recently got in touch to improve the >> NetBeans Groovy code completion for Groovy based DSL's. A wiki page has >> been setup by Sven which gives us an overview of the issues and options >> regarding their resolution: >> >> http://wiki.netbeans.org/MakeGroovyInNetBeansGreatAgain >> >> I'm working to add extension points that allow an faster support of newer >> Grails versions and that will eventually allows NetBeans to support a >> Grails version per project (currently only one version can be used at a >> time within the IDE). >> >> Thus it would be great to have your help and the POC would be greatly >> appreciated (using reflection in order to access the necessary groovy >> classes) Let me know what I could do to ease the development. I can >> test/apply patches or give access to a Jenkins instance configured to test >> a patch against core-main or main-silver and run the Groovy/Grails related >> test suites. >> >> Feel free to edit the aforementioned wiki page and/or update the >> relevant issues (#212829 ?). Also I don't see a reason not to update the >> source to 1.8 whenever necessary. >> >> Thank you for looking into this. Keep in touch :) >> >> Best regards, >> Bruno Flávio. >> >> On Sun, 4 Sep 2016 at 16:37 Wade Chandler <[email protected]> >> wrote: >> >>> Also, >>> >>> Any objections to bumping the Java version in NB projects >>> project.properties to 1.8 considering we need 1.8 to build as it is? i.e. >>> is it OK to use Java 1.8 syntax in NB projects (such as Streams and Lambdas >>> where possible). I noticed some already do this, and others are still at >>> source 1.6. If no to a blanket “if you touch a project, update the source >>> to 1.8”, then what about just the Groovy projects for now? >>> >>> Thanks, >>> >>> Wade >>> >>> >>> =================== >>> >>> Wade Chandler >>> e: [email protected] >>> >>> >>> >>> On Sep 4, 2016, at 11:19, Wade Chandler <[email protected]> >>> wrote: >>> >>> I previously sent this from the wrong address... >>> >>> All, >>> >>> After a long time without proper Groovy support for some important >>> features in the IDE, I have bit the bullet, and started digging in. The >>> first priorities for me are “Run Focused Test Method” and “Debug Focused >>> Test Method”. >>> >>> I see that someone started in the past, but the code there is in 1 of 2 >>> states: 1) partially to mostly there and incorrect in places or 2) >>> completely wrong. Also, I’m noticing the project DAG with relation to >>> “Groovy Support” and “Groovy Editor”, while correct for some things, is not >>> what we need to be able to discover the selected method and name from the >>> Groovy source code considering to do this we need to be able to access the >>> GroovyParser and GroovyParserResult in the “Groovy Support” module to >>> correlate the cursor position to the selected or surrounding method name >>> and class. >>> >>> I know this as I have changed up org.netbeans.modules.groovy >>> .support.actions.TestMethodUtil and org.netbeans.modules.gsf.t >>> estrunner.ui.TestMethodRunnerAction enough to attempt to run a selected >>> method, and see what happens in the code. I changed TestMethodUtil enough >>> not to error out and allow it to get all the way down to incorrectly >>> looking for a JavaSource instance in the Document; which it never finds. It >>> is using JavaSource where it really needs Source and GroovyParserResult >>> plus the Groovy classes ModuleNode and ASTNode; i.e. we are parsing Groovy >>> code not Java. >>> >>> This from code in TestMethodUtil doing this: >>> JavaSource js = JavaSource.forDocument(doc); >>> GroovyTestClassInfoTask task = new >>> GroovyTestClassInfoTask(cursor); >>> try { >>> if (js != null) { >>> Future<Void> f = js.runWhenScanFinished(task, true); >>> if (f.isDone() && task.getFileObject() != null && >>> task.getMethodName() != null){ >>> sm = new SingleMethod(task.getFileObject(), >>> task.getMethodName()); >>> } >>> } >>> } catch (IOException ex) { >>> LOGGER.log(Level.WARNING, null, ex); >>> } >>> >>> and then GroovyTestClassInfoTask really needs to be oriented to the >>> Groovy AST. >>> >>> Once you discover this, you realize you don’t have access to those >>> classes, that Groovy Editor depends on Groovy Support, and thus Groovy >>> Support can not depend on Groovy Editor (cyclical dependencies), and too, >>> there is a bit more to write. I also noticed that org.netbeans.modules.gsf. >>> testrunner.ui.TestMethodRunnerAction is slightly problematic as it is >>> generic code, but action registration is its Achilles hill. To get it to >>> work for both Java and Groovy, one needs to add an >>> extra @ActionReference(path = "Editors/text/x-groovy/Popup", >>> position=1795)} … 1795 definitely needs adjusted as I’m just getting the >>> workings down. >>> >>> I have thought about using reflection for the near term to access the >>> GroovyParserResult which is returned from code similar to this: >>> ParserManager.parseWhenScanFin >>> ished(Collections.<Source>singleton(s), new UserTask() { >>> @Override >>> public void run(ResultIterator rit) throws Exception >>> { >>> Result r = rit.getParserResult(); >>> if("GroovyParserResult".equals >>> (r.getClass().getSimpleName())) { >>> //do things here as it will be with the >>> correct code >>> //and use reflection to get the Groovy >>> ModuleNode instance >>> //and hand off to a new >>> GroovyTestClassInfoTask like utility >>> } >>> } >>> >>> }); >>> >>> I think I can get a POC together that will basically only require >>> changes to: >>> * org.netbeans.modules.gsf.testrunner.ui.TestMethodRunnerAction >>> (annotation additions unless there is some other way to inject this), but >>> now that I’m writing this I do see org.netbeans.modules.groov >>> y.support.actions.TestMethodAction which isn’t halfway baked. So, this >>> may be TestMethodAction completion or an extra annotation on >>> TestMethodRunnerAction; TestMethodRunnerAction works as expected ATM. >>> >>> * org.netbeans.modules.groovy.support.actions.TestMethodUtil >>> >>> * org.netbeans.modules.groovy.support.actions.GroovyTestClassInfoTask >>> (essentially making it extends UserTask instead >>> of CancellableTask<CompilationController>) >>> >>> * “Groovy Support” projects meta-data “project.xml”, to add the >>> dependency on the Groovy binaries >>> >>> Anyways, that would be to get it there, as that is the worst thing not >>> having in the Groovy editor during my day to day work when testing code. >>> There are other low hanging fruit related to actions and parsing that might >>> be able to be fixed with everything in the structure it is in currently, >>> and though using reflection doesn’t “feel right”, it may be the best thing >>> to do in the mean time with a TODO being added to break out and fix later, >>> after all dependencies and the overall graph can be better understood, plus >>> some tests to verify if code is ever changed which makes it broken. When I >>> start looking into “Refactoring” then perhaps the picture gets worse; I >>> don’t know. But, at that time, then I would worry further. Does that sound >>> workable or something that could get accepted? >>> >>> I am working locally off main-golden, so any patch I submit will be in >>> that context. >>> >>> Many thanks, >>> >>> Wade >>> >>> =================== >>> >>> Wade Chandler >>> e: [email protected] >>> >>> >>> >>> >>> =================== >>> >>> Wade Chandler >>> e: [email protected] >>> >>> >>> >>> >>> >> >> >> >> >> =================== >> >> Wade Chandler >> e: [email protected] >> >> >> >> >>