I think you can do:
groovy> /nano filename.groovy   // edit script then save
groovy> filename.groovy          // execute script

On Mon, Jun 23, 2025 at 10:48 PM Guillaume Laforge <glafo...@gmail.com>
wrote:

> Hi Paul,
>
> I've just built that branch, and this new Jline integration looks cool!
> I've only tried a few simple things, like some commands (inspecting
> variables, calling the docs), creating some methods, calling them, printing
> stuff on the output, etc.
> I really like the fact of having syntax highlighting, or how it shows that
> you're currently writing a method and implies the closing curly brace (also
> the indentation is there).
> I'm not sure what the nano editor is really supposed to be doing? Could've
> been nice to be able to edit the current script we're working on? Or maybe
> I'm missing something (on how it's supposed to work)?
> Launching /console, when quitting the console, it'll quit the shell as
> well.
>
> Anyway, that's really cool stuff!
>
> Guillaume
>
>
> On Mon, Jun 23, 2025 at 8:07 AM Paul King <pa...@asert.com.au> wrote:
>
>> I found an (old) existing issue:
>>
>> https://issues.apache.org/jira/browse/GROOVY-8162
>>
>> I'll attach a few screenshots there and use that for additional
>> discussion.
>>
>> Paul.
>>
>>
>> On Mon, Jun 23, 2025 at 3:45 PM Paul King <pa...@asert.com.au> wrote:
>>
>>>
>>> Hi folks,
>>>
>>> I have been looking at what is involved with migrating our Groovysh repl
>>> from JLine2 to JLine3.
>>>
>>> You can find the latest version in the jline3 branch. It would be great
>>> if anyone has spare time and would like to help assess whether we think we
>>> can knock this into shape in time for Groovy 5.
>>>
>>> The easiest way to try it out is switch (once fetched) to the jline3
>>> branch.
>>>
>>> Run "./gradlew iG" to build.
>>> Then run "subprojects/groovy-binary/build/install/bin/groovysh2".
>>> Hitting <TAB> can show some of the commands.
>>> I found some implementation issues using our current ":command" commands
>>> and so have instead used "/command" like jshell. The colon variants are
>>> supported as an undocumented alias at the moment. We'd likely need some
>>> changes to jline if we wanted the colon variants as the only variant.
>>>
>>> That branch has two versions side-by-side:
>>> * The groovysh command is our old version with minimal work done to
>>> "just port" from jline2 to jline3. (This might be currently broken but I'll
>>> fix it soon.)
>>> * The groovysh2 command tries to leverage many features from JLine3 to
>>> make a feature-rich repl but also minimise the amount of code we'd have to
>>> maintain.
>>>
>>> The two versions do parsing/completing/commands slightly differently. My
>>> current thinking is that we'd throw away most of the earlier commands since
>>> they are covered by alternatives. We need to see which, if any, of the
>>> existing completers/parsing we'd like to bring across.
>>>
>>> The JLine3 project's repo has a Groovy-based repl as an example demo
>>> application which shows off many built-in JLine3 features and widgets. I
>>> have based our repl on that demo and kept a lot of the functionality. We'll
>>> have to decide which features, if any, we want to keep. I have copied some
>>> of the repl-related files from the JLine3 repo to ours. I imagine there
>>> will need to be an assessment of which of those files we may be able to
>>> leave on the JLine side of things.
>>>
>>> There will be lots of tidying up to do (dependency metadata, license
>>> file updates, etc.) but the first thing to do is work out which bits we'd
>>> want to keep or need further work.
>>>
>>> Things that I know need some work:
>>> * The /grab completer completes maven coordinates based on dependencies
>>> found in the users ~/.m2/repository directory. We might like to allow that
>>> to be configured to use ~/.groovy/grapes or a URL to maven central.
>>> * Theme support is "enabled" for syntax highlighting and existing
>>> commands let you switch e.g. between light and dark highlighting, but I
>>> don't know what parts are actually affected when you make such changes.
>>> * There are some completers like BackslashEscapeCompleter that are only
>>> in the old version.
>>> * There is a rudimentary DocFinder class that looks up javadoc and
>>> groovydoc using a browser. Our old version also handled GDK documentation
>>> and had fallbacks if browsers weren't found.
>>> * Many switches and system properties haven't been converted over
>>> * I18N message resources are rather limited in the new version
>>> * Interpreter mode hasn't been looked at
>>> * testing on various platforms
>>> * test suite is hard-coded to JLine2 implementation details in numerous
>>> places
>>>
>>> If anyone does get some time, please get in touch and if there are bits
>>> of work that can be divided up, that would be great. I am about to head off
>>> on a mini-break, so may not respond for a few days, but I plan to work on
>>> this again when I return.
>>>
>>> Cheers, Paul.
>>>
>>>
>
> --
> *Guillaume Laforge*
> Apache Groovy committer
> Developer Advocate @ Google Cloud <https://cloud.google.com/>
>
>    - Blog: glaforge.dev
>    - X: @glaforge <http://twitter.com/glaforge>
>    - Bluesky: @glaforge.dev <https://bsky.app/profile/glaforge.dev>
>    - Mastodon: @glafo...@uwyn.net <http://%40glafo...@uwyn.net/>
>
>

Reply via email to