zsh-workers
 help / color / mirror / code / Atom feed
From: Jordan Breeding <jordan.breeding@mac.com>
To: Peter Stephenson <pws@csr.com>
Cc: zsh-workers@sunsite.dk
Subject: Re: problems with 4.3.4 and Tru64
Date: Fri, 11 May 2007 11:42:18 -0700	[thread overview]
Message-ID: <2DF07A7A-0112-1000-89C4-08869130C191-Webmail-10013@mac.com> (raw)
In-Reply-To: <20070511185602.f76af8ed.pws@csr.com>

On Friday, May 11, 2007, at 12:56PM, "Peter Stephenson" <pws@csr.com> wrote:
>Jordan Breeding <jordan.breeding@mac.com> wrote:
>> Sorry to reply to myself, but I just paid a little bit more attention
>> and I figured out something else interesting.  The extra characters
>> that appear in the Terminal itself just before the output from echo
>> are the multibyte characters only, which are missing from the ${1}
>> being inserted into the Terminal title.  This part seems to be OS X
>> (Terminal.app) specific, as if I use zsh through a remote Terminal
>> the behaviour will differ (putty will display
>> h<character><character>lp in the title which I am assuming are just
>> the bytes that it is seeing).  Anyway, I will probably just not use
>> preexec() anymore for now.  Is there are way to display multibyte
>> characters as the base singlebyte character for the preexec string?
>> Or possible just replace multibyte characters with "?" or something,
>> just so my preexec would at least partially work?
>
>I'm glad things are working better... I'd be happy to put any generic
>workarounds in the shell itself, but it's probably too difficult for
>a terminal-specific problem, if that's what this is.
>
>As for detecting multibyte characters:  presumably all characters with
>codes over 127 are going to be multibyte, so it is possible to detect
>such a string:
>
>% foo="ä"
>% print $(( #foo ))
>
>228
>
>However, this just tests the first character; you'd have to loop over the
>entire string to do it which is a bit of a nuisance:
>
>  local line=${(%):-'\e]2;%n@%m %0~ (%30>...>'${1}'%>>%)\a'} char
>  local -a arr
>  arr=(${(s..)line})
>  integer i
>  for (( i = 1; i <= ${#arr}; i++)); do
>    char=${arr[i]}
>    (( #char > 127 )) && arr[i]="?"
>  done
>  print -n ${(j..)arr}
>
>(I did test this.)  I wonder if the shell is misinterpreting codes within
>the ${1} in
>
>  print -Pn "\e]2;%n@%m %0~ (%30>...>${1}%>>%)\a"
>
>?  If you just do print -P "<string>" from the command line with
>what was in ${1} does everything look OK?  (This is rather a long shot;
>I don't see how the shell could misplace characters like that, but
>it might be getting the handling of characters sufficiently wrong
>that the terminal driver is getting confused.)
>

Hmm, while it is kind of annoying to have to loop over the whole string, it isn't horrible, and it fixes the problems in both of my common terminals.  Also, I did your other test, ${1} is intact, so it definitely isn't the shell, it is the terminal programs.  Thanks for the help!

Jordan


      reply	other threads:[~2007-05-11 18:43 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-10  8:25 Timo Aaltonen
2007-05-10  9:55 ` Peter Stephenson
2007-05-10 10:05   ` Peter Stephenson
2007-05-10 10:06   ` Timo Aaltonen
2007-05-10 10:15     ` Timo Aaltonen
2007-05-10 10:30       ` Peter Stephenson
2007-05-10 11:03         ` Timo Aaltonen
2007-05-10 11:30           ` Peter Stephenson
2007-05-10 11:43             ` Timo Aaltonen
2007-05-10 11:55               ` Peter Stephenson
2007-05-10 13:05                 ` Timo Aaltonen
2007-05-10 13:35                   ` Peter Stephenson
2007-05-13 20:12             ` Peter Stephenson
2007-05-13 23:43               ` Wayne Davison
2007-05-10 17:55 ` Phil Pennock
2007-05-10 19:24   ` Timo Aaltonen
2007-05-10 22:26     ` Phil Pennock
2007-05-11  9:28       ` Peter Stephenson
2007-05-11 16:23         ` Jordan Breeding
2007-05-11 17:25           ` Jordan Breeding
2007-05-11 17:56             ` Peter Stephenson
2007-05-11 18:42               ` Jordan Breeding [this message]

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

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

  git send-email \
    --in-reply-to=2DF07A7A-0112-1000-89C4-08869130C191-Webmail-10013@mac.com \
    --to=jordan.breeding@mac.com \
    --cc=pws@csr.com \
    --cc=zsh-workers@sunsite.dk \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

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 NNTP newsgroup(s).