[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-bash] `read -e -p`, colors, and invisible chars
From: |
Chet Ramey |
Subject: |
Re: [Help-bash] `read -e -p`, colors, and invisible chars |
Date: |
Wed, 26 Aug 2015 22:19:03 -0400 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 |
On 8/26/15 10:06 PM, Mike Frysinger wrote:
> On 26 Aug 2015 20:42, Dennis Williamson wrote:
>> On Aug 26, 2015 8:06 PM, "Mike Frysinger" wrote:
>>> now i hit the classic invisible char problem when readline tries to
>>> redraw the prompt (just hold up on the arrow key to draw many lines
>>> from your history). normally i'd leverage \[ and \], but bash does
>>> not seem to support that w/the read builtin -- they get rendered in
>>> the output directly instead of being consumed.
>>> $ prompt=$(printf '%bfoo>%b ' '\[\033[1;33m\]' '\[\033[0m\]')
>>> $ read -e -p "${prompt}"
>>> \[\]foo>\[\]
>>> (yes, moving the \[ and \] to the printf string yields same behavior)
>>
>> Use \001 and \002 instead of \[ and \].
>
> thanks ... didn't realize bash was changing \[ and \] into SOH and STX
> and those are the magic bytes readline uses to mark things
$ grep PROMPT readline.h
/* Read a line of input. Prompt with PROMPT. A NULL PROMPT means none. */
#define RL_PROMPT_START_IGNORE '\001'
#define RL_PROMPT_END_IGNORE '\002'
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU address@hidden http://cnswww.cns.cwru.edu/~chet/