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