RFR: JDK-8178821: jshell tool: ctrl-down does nothing in current context
Robert Field
robert.field at oracle.com
Wed Apr 19 20:50:56 UTC 2017
Looks good.
-Robert
On 04/19/17 13:08, Jan Lahoda wrote:
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8178821
>
> Webrev:
> http://cr.openjdk.java.net/~jlahoda/8178821/webrev.00/
>
> The problem here is as follows: for JShell and jjs, we wrap the class
> that provides input history (jline's MemoryHistory) with our own
> custom version, that has an extra feature to simplify editing of code
> snippets (code snippet may be a multi-line method, for example).
>
> For this feature, there are two actions: go to the previous/next code
> snippet. These actions are implemented using MemoryHistory.index()
> [which returns the index of the currently selected history entry] and
> .size() [which returns the number of history entries].
>
> The MemoryHistory has a limit on number of entries in it (500 by
> default). So, the .size() will be 500 at most. But, when the oldest
> entries are removed, the index() of the retained entries will not
> change, and so index() may go beyond 500. Also, as a consequence, the
> first retained entry does not necessarily have index() == 0.
>
> The two effects this has are:
> -Ctrl-down sometimes does not work as the current nextSnippet method
> won't work if index() [of the current entry] >= size()
> -Ctrl-up may crash with an exception if inspecting entries that have
> been removed, as Ctrl-up currently runs as long as index() >= 0
>
> The proposed patch is to reuse existing previous()/next() methods,
> which select previous/next history entry, and check the entry index
> against size correctly.
>
> Thanks,
> Jan
More information about the kulla-dev
mailing list