RFR: JDK-8214491: Upgrade to JLine 3.9.0
Robert Field
robert.field at oracle.com
Sat Dec 8 19:39:04 UTC 2018
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.
(3) In jshell tool online docs the tool is spelled "jshell tool"
I'd be happy to write up suggested text.
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.
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 kulla-dev
mailing list