[forge-dev] New shell feedback

Ståle W Pedersen spederse at redhat.com
Thu Jan 16 19:00:21 EST 2014


hi, thanks for the feedback.
i see that there is indeed a bug in how TerminalCharacter is displayed. 
- there is a TerminalCharacter.toString(TerminalCharacter tc) that tries 
   to compare with the previous to reduce the data written to stream, but 
   it has a bug and do not display it correctly.

By design it was planned that TerminalCharacter should not "reset" so if 
you set a TerminalCharacter with color green that color should be for 
all upcoming characters unless a new one is set.

TerminalString however do in fact reset at its end (by design).

I do not know if the ordering matter, afaik it shouldnt, but it might be 
that that is why jansi has bleeding of colors on windows??

ståle

On 16.01.14 23:52, Ivan St. Ivanov wrote:
>Hey George, Stale,
>
>I did some debugging in Forge, Aesh and even Jansi sources. Before that, I
>tried to change the color of the current folder name when creating the
>prompt:
>
>// in org.jboss.forge.addon.shell.ShellImpl::createPrompt()
>
>         for (char c : currentResource.getName().toCharArray())
>         {
>            prompt.add(new TerminalCharacter(c, new
>TerminalColor(Color.GREEN, Color.DEFAULT)));
>         }
>
>So I expect that as a result of that, all of the characters of the current
>directory name would be green. However it is only the first character.
>After some more debugging, I found that for a directory called *forge* the
>ANSI string passed to the Jansi library
>is: [forge]$ (there is an ESC symbol
>character before each [). As far as I got it, those constants 39, 32, etc.
>denote the foreground (i.e. character) color. So, the question now is:
>
>Do you have to set the foreground color once and then it is valid for all
>the next characters before you set it again, or you have to set it for
>every character in the ANSI string. I think that Aesh's logic follows the
>first approach, so is this correct? I'm afraid
>Jansi's AnsiOutputStream.write(int) method is a too complex FSM for me in
>this late hour, so I stopped there :)
>
>What else bothers me is the ordering of the style and color constants for
>the first character of the prompt. Shouldn't it be the other way round
>(first the style and then the color)?
>
>Cheers,
>Ivan
>
>
>On Wed, Jan 15, 2014 at 10:35 PM, George Gastaldi <ggastald at redhat.com>wrote:
>
>> That's right. We expect a PR from you asap :)
>>
>> Em 15/01/2014, às 18:28, "Ivan St. Ivanov" <ivan.st.ivanov at gmail.com>
>> escreveu:
>>
>> Ah, so the coloring is in Forge, not in Aesh? Good, at least I will try to
>> get acquainted with the code if not fix it ;)
>>
>>
>> On Wed, Jan 15, 2014 at 10:24 PM, George Gastaldi <ggastald at redhat.com>wrote:
>>
>>> Hey Ivan,
>>>
>>> We had to remove the colors because the colors were "bleeding" to the
>>> next character. If you could have a look at it, the code is in
>>> ShellImpl.createPrompt().
>>>
>>> Pull requests are always more than welcomed. :)
>>>
>>> Em 15/01/2014, às 18:21, "Ivan St. Ivanov" <ivan.st.ivanov at gmail.com>
>>> escreveu:
>>>
>>> Hi Stale, folks!
>>>
>>> I just tried the new Forge 2.0 and it works perfectly :)
>>>
>>> I just miss the prompt coloring. In Forge 1 we had different color for
>>> the current directory name if it is inside a project.
>>>
>>> BTW, I see that the new-project command was changed to project-new.
>>>
>>> Cheers,
>>> Ivan
>>>
>>>
>>> On Mon, Jan 13, 2014 at 3:39 AM, George Gastaldi <ggastald at redhat.com>wrote:
>>>
>>>> Excellent Stale! Thanks for your help on this.
>>>>
>>>> > Em 12/01/2014, às 23:06, Ståle W Pedersen <spederse at redhat.com>
>>>> escreveu:
>>>> >
>>>> > hi, ive deployed a new version of 0.46-SNAPSHOT that hopefully should
>>>> > have most of the arrow-key + line redraw bugs fixed.
>>>> > - please let me know if it works better other places as well.
>>>> >
>>>> > these issues were introduced back in oct/nov i think (during our
>>>> meeting
>>>> > in raleigh lincoln :) when we optimized the input and line draw in æsh.
>>>> > - i think its time i get a working windows setup....
>>>> >
>>>> > i havent looked at the path issue so that still needs to be fixed.
>>>> > - but ill prioritize the close issue atm.
>>>> >
>>>> > ståle
>>>> >
>>>> >> On 11.01.14 17:10, Lincoln Baxter, III wrote:
>>>> >> You can find in maven under:
>>>> >>
>>>> >> org.jboss.aesh:aesh:0.46-SNAPSHOT
>>>> >>
>>>> >> The github repo/org is here: https://github.com/aeshell/aesh
>>>> >>
>>>> >> ~Lincoln
>>>> >>
>>>> >>
>>>> >> On Sat, Jan 11, 2014 at 3:58 PM, Ståle W Pedersen <
>>>> spederse at redhat.com>wrote:
>>>> >>
>>>> >>> hi, ivan it is most likely an æsh bug (which forge uses for shell
>>>> >>> interaction). to quickly debug æsh you could just start a simple
>>>> example
>>>> >>> program like: java -cp aesh-0.46-SNAPSHOT.jar AeshExample
>>>> >>> - you should have the aesh jar in your local mvn cache.
>>>> >>>
>>>> >>> AeshExample should log to TMP/aesh.log and there is a log line
>>>> starting
>>>> >>> with "GOT:" for each input. that input should match whatever is
>>>> >>> specified in Key.java (in æsh).
>>>> >>> from what you've described above it seems that ive introduced a bug
>>>> in a
>>>> >>> later release with this or it might also be the parsing. whatever you
>>>> >>> find out will no matter help.
>>>> >>>
>>>> >>> regards, ståle
>>>> >>>
>>>> >>>> On 11.01.14 21:18, Ivan St. Ivanov wrote:
>>>> >>>> Hi folks,
>>>> >>>>
>>>> >>>> I just created this JIRA:
>>>> https://issues.jboss.org/browse/FORGE-1425
>>>> >>>>
>>>> >>>> As I wrote in the first email, I would like to help resolving it. I
>>>> just
>>>> >>>> need some guidance on where to look. George asked me to run the
>>>> unit tests
>>>> >>>> and I tried. However, the addon-manager tests failed and I couldn't
>>>> find
>>>> >>>> the reason. :(
>>>> >>>>
>>>> >>>> Cheers,
>>>> >>>> Ivan
>>>> >>>>
>>>> >>>>
>>>> >>>> On Sat, Jan 11, 2014 at 7:54 PM, Lincoln Baxter, III <
>>>> >>>> lincolnbaxter at gmail.com> wrote:
>>>> >>>>
>>>> >>>>> Yes, thank you for finding these issues! Looks like we know what
>>>> we will
>>>> >>>>> be working on next few days :)
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> On Sat, Jan 11, 2014 at 12:40 PM, George Gastaldi <
>>>> ggastald at redhat.com
>>>> >>>> wrote:
>>>> >>>>>
>>>> >>>>>> Ivan,
>>>> >>>>>>
>>>> >>>>>> Could you open a JIRA with these issues and mark it as Blocker? We
>>>> >>> can't
>>>> >>>>>> release 2.0.0.Final unless this is fixed.
>>>> >>>>>>
>>>> >>>>>> Em 08/01/2014, às 11:18, "Ivan St. Ivanov" <
>>>> ivan.st.ivanov at gmail.com>
>>>> >>>>>> escreveu:
>>>> >>>>>>
>>>> >>>>>> Sorry, forgot to mention that this is with snapshot from December,
>>>> >>> 29th.
>>>> >>>>>> The situation was the same with all the previous betas and alphas.
>>>> >>>>>>
>>>> >>>>>>
>>>> >>>>>> On Wed, Jan 8, 2014 at 3:13 PM, George Gastaldi <
>>>> ggastald at redhat.com
>>>> >>>> wrote:
>>>> >>>>>>
>>>> >>>>>>> Thanks for the feedback ivan.
>>>> >>>>>>> Are you testing against the latest snapshot?
>>>> >>>>>>>
>>>> >>>>>>> Best Regards,
>>>> >>>>>>> George
>>>> >>>>>>>
>>>> >>>>>>> Em 08/01/2014, às 11:10, "Ivan St. Ivanov" <
>>>> ivan.st.ivanov at gmail.com>
>>>> >>>>>>> escreveu:
>>>> >>>>>>>
>>>> >>>>>>> Hi folks,
>>>> >>>>>>>
>>>> >>>>>>> As I promised, here is a [intended-to-be] short feedback about
>>>> the new
>>>> >>>>>>> Forge 2 shell. As some of you know, I use Windows (Really?
>>>> OK...). So
>>>> >>> I
>>>> >>>>>>> will be very happy to help you solve the issues besides merely
>>>> >>> reporting
>>>> >>>>>>> them:
>>>> >>>>>>>
>>>> >>>>>>> * The history doesn't work. That is, when you press up and down
>>>> arrows
>>>> >>>>>>> instead of the previous commands, you get this: αH
>>>> >>>>>>>
>>>> >>>>>>> * Backspace doesn't work. When I press it, the cursor just comes
>>>> back
>>>> >>> to
>>>> >>>>>>> the previous position without deleting the character there. If I
>>>> just
>>>> >>> write
>>>> >>>>>>> something there, the old symbol is overwritten by the new one,
>>>> but at
>>>> >>> the
>>>> >>>>>>> end after pressing enter it looks like you never entered anything
>>>> >>> after
>>>> >>>>>>> pressing backspace. For example:
>>>> >>>>>>>  1) I write *new-project --namek*
>>>> >>>>>>>  2) I notice the typo and press backspace
>>>> >>>>>>>  3) k doesn't get deleted, but I overwrite it with d
>>>> >>>>>>>  4) Then I complete my command to look like this: *new-project
>>>> >>> --named
>>>> >>>>>>> test*
>>>> >>>>>>>  5) Forge's output is: *Project name must be specified.*
>>>> >>>>>>>
>>>> >>>>>>> * As you know on windows the full path to a file or directory is
>>>> >>>>>>> <drive-letter>:\<dir1>\<dir2>
>>>> >>>>>>>  1) If I try to do *cd c:\temp\forge*, Forge blows with
>>>> exception:
>>>> >>>>>>> org.jboss.forge.addon.resource.ResourceException:
>>>> [FileResourceImpl]
>>>> >>> can
>>>> >>>>>>> have no
>>>> >>>>>>> children
>>>> >>>>>>>        at
>>>> >>>>>>>
>>>> org.jboss.forge.addon.resource.AbstractFileResource.getChild(Abstract
>>>> >>>>>>> FileResource.java:78)
>>>> >>>>>>>        at
>>>> >>>>>>>
>>>> org.jboss.forge.addon.shell.util.PathspecParser.resolve(PathspecParse
>>>> >>>>>>> r.java:232)
>>>> >>>>>>>        at
>>>> >>>>>>>
>>>> org.jboss.forge.addon.shell.commands.CdCommand.execute(CdCommand.java
>>>> >>>>>>> :71)
>>>> >>>>>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>>> Method)
>>>> >>>>>>>        at
>>>> >>>>>>>
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>>>> >>>>>>> java:57)
>>>> >>>>>>>        at
>>>> >>>>>>>
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>>>> >>>>>>> sorImpl.java:43)
>>>> >>>>>>>        at java.lang.reflect.Method.invoke(Method.java:606)
>>>> >>>>>>>  2) Somehow I noticed that I may use the paths without the drive
>>>> >>>>>>> letter, e.g. just \<dir1>\<dir2>. It is legal to do it in
>>>> Windows,
>>>> >>> but thus
>>>> >>>>>>> you can't change to a directory located on a different drive. For
>>>> >>> example
>>>> >>>>>>> cd \temp\forge will change to c:\temp\forge if you are currently
>>>> in
>>>> >>> c:. So
>>>> >>>>>>> I tried *cd \temp\forge*, but the result was the same
>>>> [exception].
>>>> >>>>>>>  3) If I am in the root directory (c:\) and I run *cd
>>>> temp\forge*, I
>>>> >>>>>>> don't get exception, but ****ERROR*** tempforge\: No such file or
>>>> >>>>>>> directory*. The interesting thing is that I ran that command by
>>>> >>>>>>> pressing tab, i.e. counting on the command completion of the
>>>> shell,
>>>> >>> which
>>>> >>>>>>> obviously works fine.
>>>> >>>>>>>
>>>> >>>>>>>  I made the cd command work by just running *cd /temp/forge*
>>>> (notice
>>>> >>>>>>> the forward slashes)
>>>> >>>>>>>
>>>> >>>>>>>
>>>> >>>>>>> If you wish, I may add these observations as JIRA items,
>>>> probably as
>>>> >>>>>>> children to this one: https://issues.jboss.org/browse/FORGE-1387
>>>> .
>>>> >>> Bear
>>>> >>>>>>> in mind that all the reported features work in Forge 1 even on
>>>> >>> Windows ;)
>>>> >>>>>>>
>>>> >>>>>>> We can discuss these in today's meeting.
>>>> >>>>>>>
>>>> >>>>>>> Cheers,
>>>> >>>>>>> Ivan
>>>> >>>>>>>
>>>> >>>>>>> _______________________________________________
>>>> >>>>>>> forge-dev mailing list
>>>> >>>>>>> forge-dev at lists.jboss.org
>>>> >>>>>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>> >>>>>>>
>>>> >>>>>>>
>>>> >>>>>>> _______________________________________________
>>>> >>>>>>> forge-dev mailing list
>>>> >>>>>>> forge-dev at lists.jboss.org
>>>> >>>>>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>> >>>>>>>
>>>> >>>>>>
>>>> >>>>>> _______________________________________________
>>>> >>>>>> forge-dev mailing list
>>>> >>>>>> forge-dev at lists.jboss.org
>>>> >>>>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>> >>>>>>
>>>> >>>>>>
>>>> >>>>>> _______________________________________________
>>>> >>>>>> forge-dev mailing list
>>>> >>>>>> forge-dev at lists.jboss.org
>>>> >>>>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>> >>>>>>
>>>> >>>>>
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> --
>>>> >>>>> Lincoln Baxter, III
>>>> >>>>> http://ocpsoft.org
>>>> >>>>> "Simpler is better."
>>>> >>>>>
>>>> >>>>> _______________________________________________
>>>> >>>>> forge-dev mailing list
>>>> >>>>> forge-dev at lists.jboss.org
>>>> >>>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>> >>>>>
>>>> >>>
>>>> >>>> _______________________________________________
>>>> >>>> forge-dev mailing list
>>>> >>>> forge-dev at lists.jboss.org
>>>> >>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>> >>>
>>>> >>> _______________________________________________
>>>> >>> forge-dev mailing list
>>>> >>> forge-dev at lists.jboss.org
>>>> >>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>> >>>
>>>> >>
>>>> >>
>>>> >>
>>>> >> --
>>>> >> Lincoln Baxter, III
>>>> >> http://ocpsoft.org
>>>> >> "Simpler is better."
>>>> >
>>>> >> _______________________________________________
>>>> >> forge-dev mailing list
>>>> >> forge-dev at lists.jboss.org
>>>> >> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>> >
>>>> > _______________________________________________
>>>> > forge-dev mailing list
>>>> > forge-dev at lists.jboss.org
>>>> > https://lists.jboss.org/mailman/listinfo/forge-dev
>>>>
>>>> _______________________________________________
>>>> forge-dev mailing list
>>>> forge-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>>
>>>
>>> _______________________________________________
>>> forge-dev mailing list
>>> forge-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>
>>>
>>> _______________________________________________
>>> forge-dev mailing list
>>> forge-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>
>>
>> _______________________________________________
>> forge-dev mailing list
>> forge-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>
>>
>> _______________________________________________
>> forge-dev mailing list
>> forge-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>

>_______________________________________________
>forge-dev mailing list
>forge-dev at lists.jboss.org
>https://lists.jboss.org/mailman/listinfo/forge-dev




More information about the forge-dev mailing list