unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Matthew Keeter <matt.j.keeter@gmail.com>
To: Mike Gran <spk121@yahoo.com>
Cc: "guile-user@gnu.org" <guile-user@gnu.org>
Subject: Re: Readline behavior with colored custom prompt
Date: Thu, 25 Feb 2016 17:09:56 -0500	[thread overview]
Message-ID: <2CEABA33-AC5F-44D4-9BC4-4B9FD163BDD7@gmail.com> (raw)
In-Reply-To: <DD37CD65-0288-40DF-8807-2D9DD2B430DE@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2018 bytes --]

Figured it out, after a bit more searching – it’s purely due to readline's behavior.

readline obeys the magic characters \x01 and \x02, ignoring anything in between then
when calculating prompt length.  Wrapping the escape sequences makes everything
behave correctly.

(similar bug: https://bugs.python.org/issue17337)

-Matt

On Feb 25, 2016, at 1:53 PM, Matthew Keeter <matt.j.keeter@gmail.com> wrote:

> I think the fundamental issue is incorrect prompt length calculation, since it’s not just bounce-parens:
> even with that turned off, scrolling through history ends up printing weird mismatched lines.
> 
> Here’s a similar issue discussed in nodejs:
> https://github.com/nodejs/node-v0.x-archive/issues/3860
> 
> Any suggestions where to look for prompt length calculations?
> I flipped through guile-readline/readline.c but didn’t see any obvious places to apply a fix.
> 
> Thanks,
> Matt
> 
> On Feb 25, 2016, at 1:05 PM, Mike Gran <spk121@yahoo.com> wrote:
> 
>> 
>> 
>> 
>> On Thursday, February 25, 2016 9:21 AM, Matthew Keeter <matt.j.keeter@gmail.com> wrote:
>> 
>>> 
>>> Run this and you’ll get a Guile shell.  Into that shell, type
>>> 
>>>   '(1 2 3 4 5 6 7 8 9 10)
>>> 
>>> The final parenthesis will highlight a character midway through the string
>>> (instead of the first parenthesis).
>>> 
>>> The same issues happen if you try to scroll through history: lines end up
>>> overlapping in strange ways.
>>> 
>>> Removing the ANSI codes from custom-prompt resolves the issue, but I’d really
>>> like to have a colored prompt and correct readline behavior.
>>> 
>>> Does anyone have any ideas?
>> 
>> The conflict is likely between your codes and the bounce-parens functionality
>> of the readline prompt.
>> 
>> (readline-set! bounce-parens 0)  should disable that functionality and make the
>> colored prompt work.
>> 
>> To get your escape sequences and bounce-parens working would probably require
>> more thinking...
>> 
>> -Mike
> 


[-- Attachment #2: Type: text/html, Size: 3091 bytes --]

  reply	other threads:[~2016-02-25 22:09 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-25 17:20 Readline behavior with colored custom prompt Matthew Keeter
2016-02-25 18:05 ` Mike Gran
2016-02-25 18:53   ` Matthew Keeter
2016-02-25 22:09     ` Matthew Keeter [this message]
2016-02-26  5:09 ` Nala Ginrut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2CEABA33-AC5F-44D4-9BC4-4B9FD163BDD7@gmail.com \
    --to=matt.j.keeter@gmail.com \
    --cc=guile-user@gnu.org \
    --cc=spk121@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).