consoleui icon indicating copy to clipboard operation
consoleui copied to clipboard

Upgrade JLine to 3.19.0

Open mattirn opened this issue 4 years ago • 7 comments

Removed ConsoleReaderImpl, CUIRenderer and *Prompt classes. New implementation removed also compile dependency of Jansi jar. PromptBuilder works as before.

Two new modules:

  1. Rewritten ConsolePrompt In addition to the prompt() method it includes also class UiConfig for ConsoleUI configurations.
  2. Rewritten AbstractPrompt Contains classes for all prompt implementations and methods for rendering. Implementation uses JLine BindingReader to read terminal input and Display to write output. Highlighting is done using AttributedStringBuilder class.

Features that are not available in this pull request: ~~1. tab completion. This require implementation in consoleui.~~ 2. not possible to set page sizes for long lists. ~~If the list does not fit to the terminal a broken list will be created. This should be relatively easy to resolve.~~

New features:

  1. color configuration using UI_COLORS environment variable. Details see class UiConfig and JLine wiki. JLine extended format with true color support will be available in JLine version 3.19.1.
  2. cursor pointer and checkbox configuration, see details in UiConfig class.

I have tested a new implementation in Linux, Windows 10 CMD and gitbash.

mattirn avatar Feb 03 '21 18:02 mattirn

Wow. It looks like a big step forward for ConsoleUI. I started a jline3 port months ago but didn't finish it. I think I mainly struggled because of some classes only poorly documented that are important to use in ConsoleUI. Let me review and test again (a bit) before the merge. What was the intention to update ConsoleUI for you? Looks like you are a jline3 contributor?

awegmann avatar Feb 03 '21 20:02 awegmann

Initially I was going to implement a fix for https://github.com/jline/jline3/issues/592 in JLine. Then looking around I found ConsoleUI and ended up to write this pull request. In future I might use ConsoleUI also in my JLine powered CLI.

mattirn avatar Feb 04 '21 16:02 mattirn

Hi. Sorry, for the late reply to your pull request. I merged your pull request to a new branch to test a little bit. With the completers I have problems with cursor navigation on my Mac (iTerm). It looks like that up and down keys are not recognized correctly. Interresting - cursor keys when navigating in the ConsoleUI lists work as expected. There are some other minor things in cursor movement to fix. I will dig a little deeper into this...

awegmann avatar Feb 16 '21 20:02 awegmann

OK, what can I do to help out here, this is a great project. I want to see it keep going.

MTyson avatar Apr 22 '23 23:04 MTyson

Sorry, for not releasing a new version with the jline3 support. I promise, I will resume work on this in the coming days. For the question about menus: do you think about a simple one-menu-as-input, or a full-fledged hierarchical menu system?

awegmann avatar Apr 24 '23 05:04 awegmann

Sorry, for not releasing a new version with the jline3 support. I promise, I will resume work on this in the coming days. For the question about menus: do you think about a simple one-menu-as-input, or a full-fledged hierarchical menu system?

Hey @awegmann, i found this great library and I wanna use it for some cli projects but I need a jline 3 support

Are you going to release a new version?

roniel-rhack avatar Mar 23 '24 22:03 roniel-rhack

Sorry, for not releasing a new version with the jline3 support. I promise, I will resume work on this in the coming days. For the question about menus: do you think about a simple one-menu-as-input, or a full-fledged hierarchical menu system?

Hey @awegmann, i found this great library and I wanna use it for some cli projects but I need a jline 3 support

Are you going to release a new version?

Hi Roniel.

ConsoleUI will be part of jline3 starting with the next release. https://github.com/jline/jline3/milestone/52

But I don't know when this will be released.

Regards, Andreas

awegmann avatar Mar 24 '24 14:03 awegmann