RFR: JDK-8214491: Upgrade to JLine 3.9.0

Jan Lahoda jan.lahoda at oracle.com
Sat Dec 8 19:47:06 UTC 2018


On 8.12.2018 20:39, Robert Field wrote:
> Thanks for updating.
>
> Good to have /help for line editing keys, however:
>    (1) The supported keys should be listed without requiring that the
> user knows or looks-up readline. More so, since only some readline keys
> are supposed.
>    (2) "/edit" is a command, so with this change, typing "/help edit"
> would give both the /edit and editing help -- which would be confusing.
> I suggest "/help keys", there are no "k" help items.

Will do.

>    (3) In jshell tool online docs the tool is spelled "jshell tool"
> I'd be happy to write up suggested text.

Thanks, that would be very welcome!

>
> As to the alternative patch: I understand the motivation, it would be
> nice to just use the natural "Enter" as new line. Unfortunately it's
> functionality is then overloaded.  I believe the alternative will be
> confusing and awkward:
>    (1) It breaks backward compatibility in user experience, Enter has
> always been accept/evaluate
>    (2) It would be very awkward and non-intuitive (particularly in a
> long multiline snippet) to have to navigate to the end of the snippet to
> accept.
>         Note: must be the end both vertically and horizontally.
>    (3) It is inconsistent: Mid snippet Enter on one line does accept.
> However, on a continuation line (say after "int x =") it adds a new line
> instead.
>    (4) It doesn't solve the problem for the most common location for
> adding a new line, the end of snippet -- thus introducing more
> inconsistency.

Ok. This was meant more as a backup in case there's no reasonable 
shortcut we could use to add new lines.

Thanks for the comments!

Jan

>
> Thanks,
> Robert
>
>
> On 12/8/18 7:21 AM, Jan Lahoda wrote:
>> Hi,
>>
>> I've updated the patch to reflect the comments so far, the current
>> version is here:
>> http://cr.openjdk.java.net/~jlahoda/8214491/webrev.01/
>> Delta since the previous version is here for convenience:
>> http://cr.openjdk.java.net/~jlahoda/8214491/webrev.delta.00.01/
>>
>> In this version, while editing a snippet, a new line can be added
>> using Alt-Enter (on platforms that support that), or Ctrl-Enter (on
>> Windows).
>>
>>
>> And alternative patch is here:
>> http://cr.openjdk.java.net/~jlahoda/8214491/webrev.01a/
>> Delta:
>> http://cr.openjdk.java.net/~jlahoda/8214491/webrev.delta.00.01a/
>>
>> In the alternative version, Enter will only "confirm" multi-line
>> snippet when the cursor is at the end of the snippet, otherwise it
>> will add a new line (so that a special shortcut is not needed; but a
>> snippet cannot be "confirmed" by pressing Enter in the middle of a
>> multi-line snippet.)
>>
>> The only difference between the .01 and .01a patches is the way they
>> allow to add new lines into the multi-line snippets. Other changes are
>> the same.
>>
>> Any feedback on this is welcome.
>>
>> Thanks!
>>
>> Jan
>>
>> On 5.12.2018 18:18, Jan Lahoda wrote:
>>> Hi Robert,
>>>
>>> On 4.12.2018 23:59, Robert Field wrote:
>>>> I saw no issues with JShell tool and test portions of the webrev.  I
>>>> did
>>>> not review the nashorn changes.
>>>
>>> Thanks for looking at this!
>>>
>>>>
>>>> Testing it: editing multi-line snippets is vastly easier and more
>>>> intuitive.
>>>> There is one issue, with the old mechanism, as horridly clunky as it
>>>> was, you could add new lines of code (a frequently needed
>>>> functionality).
>>>> Since <return> is accept, I could find no way to add lines with this
>>>> JLine 3 version.  Thoughts?
>>>
>>> One possibility that comes to mind: pressing Enter inside the snippet
>>> would add a new line, Enter at the very end of a (complete) snippet
>>> would confirm that snippet. Could be fairly convenient/intuitive. What
>>> do you think?
>>>
>>>>
>>>> I looked into readline commands as an approach to addressing this,
>>>> found
>>>> nothing.  However, most readline commands worked. Ctrl-u however did
>>>> not
>>>> behave as documented in readline (instead deleting to the beginning of
>>>> the line).  I notice that the there is zero in-command documentation of
>>>> command-line editing -- not even a mention.  Independent from the
>>>> review
>>>> of this port, it seems we should have in-command documentation of
>>>> command editing -- even more so now that multiline editing is useful.
>>>
>>> This is about enhancing /help, right? I'll see what I can do.
>>>
>>>>
>>>> The JShell User Manual will also need a little edit in the History
>>>> Navigation section.
>>>
>>> Where is that?
>>>
>>> Thanks,
>>>      Jan
>>>
>>>>
>>>> -Robert
>>>>
>>>>
>>>> On 11/29/18 1:06 PM, Jan Lahoda wrote:
>>>>> Hi,
>>>>>
>>>>> I'd like to update the internal JLine used by JShell and jjs to JLine
>>>>> 3.9.0. Two notable advantages of this version is multi-line snippet
>>>>> editing and better UI on Windows (escape sequence support on Windows).
>>>>> As a consequence, this patch drops EditingHistory, as it does not seem
>>>>> to be needed anymore.
>>>>>
>>>>> JBS:
>>>>> https://bugs.openjdk.java.net/browse/JDK-8214491
>>>>>
>>>>> The full patch is here:
>>>>> http://cr.openjdk.java.net/~jlahoda/8214491/webrev.00/
>>>>>
>>>>>
>>>>> To make the changes more clear, I've split it into two:
>>>>> -replacement of existing JLine with the new on in jdk.internal.le, no
>>>>> changes to JLine code:
>>>>> http://cr.openjdk.java.net/~jlahoda/8214491/webrev.00.replace/
>>>>>
>>>>> -tweaks to JLine (repackaging, eliminating references to j.u.l.Logger,
>>>>> adding hooks to wrap input streams with our stop-detecting input
>>>>> stream, adding unicode escapes to unicode characters, support for
>>>>> Windows without JNA), adjustments to JShell and jjs (unfortunately,
>>>>> 3.9.0 is not compatible with the JLine 2 branch, so the changes are
>>>>> substantial):
>>>>> http://cr.openjdk.java.net/~jlahoda/8214491/webrev.00.update/
>>>>>
>>>>> Any feedback is welcome!
>>>>>
>>>>> Thanks,
>>>>>     Jan


More information about the nashorn-dev mailing list