On Wed, 26 Mar 2025 07:54:48 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

> The `java.io.Console` has several backends: a simple on in `java.base`, a 
> more convenient one in `jdk.internal.le` (with line-reading based on JLine) 
> and one for JShell.
> 
> The backend based on JLine is proving to be a somewhat problematic - JLine is 
> very powerful, possibly too powerful and complex for the simple task of 
> editing a line with no completion, no history, no variables, no commands, 
> etc. As a consequence, there are inevitable sharp edges in this backend.
> 
> The idea in this PR is to replace the use of JLine in the `jdk.internal.le` 
> backend with a simple escape code interpreter, that only handles a handful of 
> keys/codes (left/right arrow, home, end, delete, backspace, enter), and 
> ignores the rest. The goal is to have something simple with less surprising 
> behavior.

src/jdk.internal.le/share/classes/jdk/internal/console/SimpleConsoleReader.java 
line 75:

> 73:                     }
> 74:                     continue READ;
> 75:                 case '\033':

If this is meant to be platform-agnostic, is it really safe to make these 
assumptions about the ability to produce or interpret escape codes and to make 
assumptions about their behavior on the user's terminal? I don't think it would 
even be safe to assume a single terminal type or interpretation on POSIX-type 
OSes; that's what things like `terminfo`/`termcap` are supposed to be for, 
right?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/24242#discussion_r2021436018

Reply via email to