Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Command line editor doesn't work well



Hello Maintainers.

A user in my site found a problem of command line editor. Since I'm
not a subscriber, please ask directly to me if you have any question.

Version of zsh
==============

3.0.1

Description
===========

Command line editor doesn't work well when PS1 variable includes
Newline (^J) character.

Example
=======

Testsuite:

1. Type 'echo $PS1[RET]'
2. Type 'echo foo[RET]'
3. Type '^P', '^A' and 'a'

When PS1='%n@%m[%h]%# ' (Not include Newline), this produces following
result.

yasu@siva[1]% echo $PS1
%n@%m[%h]%# 
yasu@siva[2]% echo foo 
foo
yasu@siva[3]% aecho foo  (Cursor is on the 'e' character.)


When PS1='%n@%m[%h]%#^J' (Include Newline), the result should be

yasu@siva[4]%
 echo $PS1
%n@%m[%h]%#

yasu@siva[5]%
 echo foo
foo
yasu@siva[6]%
 aecho foo  (Cursor is on the 'e' character.)


But the result is

yasu@siva[4]%
 echo $PS1
%n@%m[%h]%#

yasu@siva[5]%
 echo foo
foo
yasu@siva[6]%
 aacho foo  (Cursor is on the 'c' character.)

Environment
===========

This problem happens on following environment.

SunOS 4.1.{3,3C,3U1,4} with JLE (Japanese Language Environment)

And it DOESN'T happen on following one.

Japanese Solaris 2.{3,4,5,5.1} for Sparc
FreeBSD 2.1.5-RELEASE

Output of 'reporter'
====================

As I reported before (and mabey many other people repoted prior to me
:-)), 

% source reporter

cause core dump on this environment (i.e. zsh 3.0.1 on SunOS
4.1.x). So I applied following patch to original 'reporter' script and 
created the reporter log below.

*** zsh-3.0.1/Util/reporter.dist	Mon May  6 23:09:00 1996
--- zsh-3.0.1/Util/reporter	Mon Dec  2 15:18:28 1996
***************
*** 326,340 ****
  		echo "TERM='$TERM'"
  		unset TERMCAP
  
! 		set | grep '=' | grep -v 'prompt=' |
! 			grep -v 'reporter_do' |
! 			grep -v '^[!#$*0?@_-]=' |
! 			grep -v '=(' | sed -e "s/'/\\\'/g" |
!                         sed -e 's/`/\\`/g' |
! 			sed -e 's/=/="/' -e 's/$/"/' |
! 			grep -v '^IFS=' |
! 			grep -v '^TERMCAP=' |
! 			grep -v '^TERM='
  
  		echo "prompt='test%'"
  	)
--- 326,344 ----
  		echo "TERM='$TERM'"
  		unset TERMCAP
  
! 		set |
! 		sed	-e '/^[^=]*$/d' \
! 			-e '/prompt=/d' \
! 			-e '/reporter_do/d' \
! 			-e '/^[!#$*0?@_-]=/d' \
! 			-e '/=(/d' \
! 			-e "s/'/\\\'/g" \
!                         -e 's/`/\\`/g' \
! 			-e 's/=/="/' \
! 			-e 's/$/"/' \
! 			-e '/^IFS=/d' \
! 			-e '/^TERMCAP=/d' \
! 			-e '/^TERM=/d'
  
  		echo "prompt='test%'"
  	)

----------------------------------------------------------------------
# START zsh saveset
# uname:  SunOS siva 4.1.3-JL 1 sun4m

# Aliases.

alias dir='ls -AFgl'
alias la='ls -AF'
alias lg='ls -Fgl'
alias ll='ls -Fl'
alias ls='ls -F'
alias ne='mule -nw'
alias po=popd
alias pu=pushd
alias run-help=man
alias which-command=whence

# Key bindings.

bindkey -r "^@"
bindkey -r "^A"
bindkey -r "^B"
bindkey -r "^C"
bindkey -r "^D"
bindkey -r "^E"
bindkey -r "^F"
bindkey -r "^G"
bindkey -r "^H"
bindkey -r "^I"
bindkey -r "^J"
bindkey -r "^K"
bindkey -r "^L"
bindkey -r "^M"
bindkey -r "^N"
bindkey -r "^O"
bindkey -r "^P"
bindkey -r "^Q"
bindkey -r "^R"
bindkey -r "^S"
bindkey -r "^T"
bindkey -r "^U"
bindkey -r "^V"
bindkey -r "^W"
bindkey -r "^X"
bindkey -r "^Y"
bindkey -r "^Z"
bindkey -r "\e"
bindkey -r "^_"
bindkey -r "^?"
bindkey -r "^X^B"
bindkey -r "^X^F"
bindkey -r "^X^J"
bindkey -r "^X^K"
bindkey -r "^X^N"
bindkey -r "^X^O"
bindkey -r "^X^U"
bindkey -r "^X^V"
bindkey -r "^X^X"
bindkey -r "^X*"
bindkey -r "^XG"
bindkey -r "^Xg"
bindkey -r "^Xr"
bindkey -r "^Xs"
bindkey -r "^Xu"
bindkey -r "\e^D"
bindkey -r "\e^G"
bindkey -r "\e^H"
bindkey -r "\e^I"
bindkey -r "\e^J"
bindkey -r "\e^L"
bindkey -r "\e^M"
bindkey -r "\e^_"
bindkey -r "\e "
bindkey -r "\e!"
bindkey -r "\e\\""
bindkey -r "\e$"
bindkey -r "\e'"
bindkey -r "\e-"
bindkey -r "\e."
bindkey -r "\e0"
bindkey -r "\e1"
bindkey -r "\e2"
bindkey -r "\e3"
bindkey -r "\e4"
bindkey -r "\e5"
bindkey -r "\e6"
bindkey -r "\e7"
bindkey -r "\e8"
bindkey -r "\e9"
bindkey -r "\e<"
bindkey -r "\e>"
bindkey -r "\e?"
bindkey -r "\eA"
bindkey -r "\eB"
bindkey -r "\eC"
bindkey -r "\eD"
bindkey -r "\eF"
bindkey -r "\eG"
bindkey -r "\eH"
bindkey -r "\eL"
bindkey -r "\eN"
bindkey -r "\eP"
bindkey -r "\eQ"
bindkey -r "\eS"
bindkey -r "\eT"
bindkey -r "\eU"
bindkey -r "\eW"
bindkey -r "\e[A"
bindkey -r "\e[B"
bindkey -r "\e[C"
bindkey -r "\e[D"
bindkey -r "\e_"
bindkey -r "\ea"
bindkey -r "\eb"
bindkey -r "\ec"
bindkey -r "\ed"
bindkey -r "\ef"
bindkey -r "\eg"
bindkey -r "\eh"
bindkey -r "\el"
bindkey -r "\en"
bindkey -r "\ep"
bindkey -r "\eq"
bindkey -r "\es"
bindkey -r "\et"
bindkey -r "\eu"
bindkey -r "\ew"
bindkey -r "\ex"
bindkey -r "\ey"
bindkey -r "\ez"
bindkey -r "\e|"
bindkey -r "\e^?"

bindkey "^@"	set-mark-command
bindkey "^A"	beginning-of-line
bindkey "^B"	backward-char
bindkey "^C"	undefined-key
bindkey "^D"	delete-char-or-list
bindkey "^E"	end-of-line
bindkey "^F"	forward-char
bindkey "^G"	send-break
bindkey "^H"	backward-delete-char
bindkey "^I"	expand-or-complete
bindkey "^J"	accept-line
bindkey "^K"	kill-line
bindkey "^L"	clear-screen
bindkey "^M"	accept-line
bindkey "^N"	down-line-or-history
bindkey "^O"	accept-line-and-down-history
bindkey "^P"	up-line-or-history
bindkey "^Q"	push-line
bindkey "^R"	history-incremental-search-backward
bindkey "^S"	history-incremental-search-forward
bindkey "^T"	transpose-chars
bindkey "^U"	kill-whole-line
bindkey "^V"	quoted-insert
bindkey "^W"	backward-kill-word
bindkey "^X"	prefix
bindkey "^Y"	yank
bindkey "^Z"	undefined-key
bindkey "\e"	prefix
bindkey "^_"	undo
bindkey "^?"	backward-delete-char
bindkey "^X^B"	vi-match-bracket
bindkey "^X^F"	vi-find-next-char
bindkey "^X^J"	vi-join
bindkey "^X^K"	kill-buffer
bindkey "^X^N"	infer-next-history
bindkey "^X^O"	overwrite-mode
bindkey "^X^U"	undo
bindkey "^X^V"	vi-cmd-mode
bindkey "^X^X"	exchange-point-and-mark
bindkey "^X*"	expand-word
bindkey "^XG"	list-expand
bindkey "^Xg"	list-expand
bindkey "^Xr"	history-incremental-search-backward
bindkey "^Xs"	history-incremental-search-forward
bindkey "^Xu"	undo
bindkey "\e^D"	list-choices
bindkey "\e^G"	send-break
bindkey "\e^H"	backward-kill-word
bindkey "\e^I"	self-insert-unmeta
bindkey "\e^J"	self-insert-unmeta
bindkey "\e^L"	clear-screen
bindkey "\e^M"	self-insert-unmeta
bindkey "\e^_"	copy-prev-word
bindkey "\e "	expand-history
bindkey "\e!"	expand-history
bindkey "\e\\""	quote-region
bindkey "\e$"	spell-word
bindkey "\e'"	quote-line
bindkey "\e-"	neg-argument
bindkey "\e."	insert-last-word
bindkey "\e0"	digit-argument
bindkey "\e1"	digit-argument
bindkey "\e2"	digit-argument
bindkey "\e3"	digit-argument
bindkey "\e4"	digit-argument
bindkey "\e5"	digit-argument
bindkey "\e6"	digit-argument
bindkey "\e7"	digit-argument
bindkey "\e8"	digit-argument
bindkey "\e9"	digit-argument
bindkey "\e<"	beginning-of-buffer-or-history
bindkey "\e>"	end-of-buffer-or-history
bindkey "\e?"	which-command
bindkey "\eA"	accept-and-hold
bindkey "\eB"	backward-word
bindkey "\eC"	capitalize-word
bindkey "\eD"	kill-word
bindkey "\eF"	forward-word
bindkey "\eG"	get-line
bindkey "\eH"	run-help
bindkey "\eL"	down-case-word
bindkey "\eN"	history-search-forward
bindkey "\eP"	history-search-backward
bindkey "\eQ"	push-line
bindkey "\eS"	spell-word
bindkey "\eT"	transpose-words
bindkey "\eU"	up-case-word
bindkey "\eW"	copy-region-as-kill
bindkey "\e[A"	up-line-or-history
bindkey "\e[B"	down-line-or-history
bindkey "\e[C"	forward-char
bindkey "\e[D"	backward-char
bindkey "\e_"	insert-last-word
bindkey "\ea"	accept-and-hold
bindkey "\eb"	backward-word
bindkey "\ec"	capitalize-word
bindkey "\ed"	kill-word
bindkey "\ef"	forward-word
bindkey "\eg"	get-line
bindkey "\eh"	run-help
bindkey "\el"	down-case-word
bindkey "\en"	history-search-forward
bindkey "\ep"	history-search-backward
bindkey "\eq"	push-line
bindkey "\es"	spell-word
bindkey "\et"	transpose-words
bindkey "\eu"	up-case-word
bindkey "\ew"	copy-region-as-kill
bindkey "\ex"	execute-named-cmd
bindkey "\ey"	yank-pop
bindkey "\ez"	execute-last-named-cmd
bindkey "\e|"	vi-goto-column
bindkey "\e^?"	backward-kill-word

# Completions.

compctl -b bindkey
compctl -c builtin
compctl -v export
compctl -o setopt
compctl -v typeset
compctl -v unset
compctl -o unsetopt
compctl -v vared
compctl -c which
compctl -C -c
compctl -D -f
compctl -T

# Undefined functions.


# Defined functions.


# Limits.

limit stacksize       8MB
limit descriptors     64

# Non-array variables.

TERMCAP='vk|kterm|kanji version of xterm (X window system):li#24:co#80:  :	:KJ:sc=\E7:rc=\E8:cs=\E[%i%d;%dr:TY=ascii:li#24:co#80:  :	:co#80:li#24:li#24:co#80:  :	:cr=^M:do=^J:nl=^J:bl=^G:le=^H:ho=\E[H:	:co#80:li#65:cl=\E[H\E[2J:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:	:ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:	:md=\E[1m:mr=\E[7m:me=\E[m:	:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:	:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:pt:sf=
:sr=\EM:	:al=\E[L:dl=\E[M:ic=\E[@:dc=\E[P:	:MT:ks=\E[?1h\E=:ke=\E[?1l\E>:	:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l:	:rs=\E[r\E<\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l:xn:	:AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:	:ti=\E7\E[?47h:te=\E[2J\E[?47l\E8:	:hs:ts=\E[?E\E[?%i%dT:fs=\E[?F:es:ds=\E[?E:'
TERM='kterm'
\'#\'="0"
\'$\'="1970"
\'?\'="0"
ARGC="0"
AWK="awk"
BAUD="9600"
BBSEDITOR="\'mule -nw\'"
BBSPAGER="more"
BBSREADER="less"
CC_DEF_PATH="/isl/home/yasu/lib/X11/ccdef"
CDPATH="\'\'"
COLUMNS="80"
CPP="/lib/cpp"
DISPLAY="siva:0.0"
EGID="600"
ERRNO="0"
EUID="382"
FCEDIT="vi"
FIGNORE="\'\'"
FPATH="\'\'"
GID="600"
HISTCHARS="\'!^#\'"
HISTSIZE="30"
HOME="/isl/home/yasu"
HOST="siva"
HOSTDISPLAY="siva:0.0"
JTEX="ASCII"
KEYTIMEOUT="40"
LANG="japanese"
LESSCHARSET="japanese-ujis"
LINENO="329"
LINES="24"
LISTMAX="100"
LOGCHECK="60"
LOGNAME="yasu"
MACHTYPE="sparc"
MAILCHECK="60"
MAILPATH="\'\'"
MANPATH="/usr/man:/usr/X11R6/man:/usr/X11R5/man:/usr/local/man:/usr/local/gnu/man:/isl/man"
NNTPSERVER="monaco.csl.rdc.toshiba.co.jp"
NULLCMD="cat"
OLDPWD="/isl/home/yasu"
ONEW_ROMKAND="/usr/local/lib/wnn/ja_JP/rk"
OPTARG="\'\'"
OPTIND="1"
OSTYPE="sunos4"
PAGER="less"
PATH="/isl/home/yasu/bin:/isl/home/yasu/bin/sunos4:/usr/local/gnu/bin:/usr/local/bin:/usr/ucb:/usr/bin:/isl/bin:/usr/X11R6/bin:/usr/X11R5/bin:/usr/local/image/bin:/usr/bin/X11:/usr/local/TeX/bin:/usr/local/bin/mh:/usr/local/bin/rcs:/usr/local/bin/mtools:/isl/proj/k-mail/bin:/usr/local/etc:/usr/etc"
POSTEDIT="\'\'"
PPID="1965"
PRINTER="ml.aag"
PROMPT="\'%n@%m[%h]%# \'"
PROMPT2="\'%_> \'"
PROMPT3="\'?# \'"
PROMPT4="\'+ \'"
PS1="\'%n@%m[%h]%# \'"
PS2="\'%_> \'"
PS3="\'?# \'"
PS4="\'+ \'"
PSPRINTER="ml.aag"
PSVAR="\'\'"
PWD="/tmp"
RANDOM="26734"
READNULLCMD="more"
RPROMPT="\'\'"
RPS1="\'\'"
SECONDS="52"
SHELL="/bin/zsh"
SHLVL="2"
SPROMPT="\'zsh: correct \'\\'\'%R\'\\'\' to \'\\'\'%r\'\\'\' [nyae]? \'"
TIMEFMT="\'%J  %U user %S system %P cpu %*E total\'"
TMPPREFIX="/tmp/zsh"
TTY="/dev/ttyp2"
TTYIDLE="-1"
UID="382"
USER="yasu"
USERNAME="yasu"
VENDOR="sun"
WATCH="\'\'"
WATCHFMT="\'%n has %a %l from %m.\'"
WINDOWID="58720269"
WORDCHARS="\'*?_-.[]~=/&;!#$%^(){}<>\'"
XAUTHORITY="/isl/home/yasu/.Xauthority.siva"
XINITRC="/isl/home/yasu/.Xinitrc"
XRSH_AUTH_TYPE="none"
XRSH_ENVS_TO_PASS="\'XAUTHORITY XRSH_AUTH_TYPE\'"
ZSH_NAME="zsh"
ZSH_VERSION="3.0.1"
each="/usr/bin"
histchars="\'!^#\'"
reporter_OSVersion="SunOS_4.1.3-JL"
reporter_junkiequotes="no"
status="0"
str="\'SunOS siva 4.1.3-JL 1 sun4m\'"
prompt='test%'

# Array variables.

argv=()
'*'=()
cdpath=()
fignore=()
fpath=()
mailpath=()
manpath=(/usr/man /usr/X11R6/man /usr/X11R5/man /usr/local/man /usr/local/gnu/man /isl/man)
path=(/isl/home/yasu/bin /isl/home/yasu/bin/sunos4 /usr/local/gnu/bin /usr/local/bin /usr/ucb /usr/bin /isl/bin /usr/X11R6/bin /usr/X11R5/bin /usr/local/image/bin /usr/bin/X11 /usr/local/TeX/bin /usr/local/bin/mh /usr/local/bin/rcs /usr/local/bin/mtools /isl/proj/k-mail/bin /usr/local/etc /usr/etc)
psvar=()
signals=(EXIT HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH LOST USR1 USR2 ZERR DEBUG)
watch=()

# Exported variables.

export TERMCAP
export TERM
export BBSEDITOR
export BBSPAGER
export BBSREADER
export CC_DEF_PATH
export DISPLAY
export HOME
export HOSTDISPLAY
export JTEX
export LANG
export LESSCHARSET
export LOGNAME
export MANPATH
export NNTPSERVER
export ONEW_ROMKAND
export PAGER
export PATH
export PRINTER
export PSPRINTER
export PWD
export SHELL
export SHLVL
export TERM
export USER
export WINDOWID
export XAUTHORITY
export XINITRC
export XRSH_AUTH_TYPE
export XRSH_ENVS_TO_PASS

# Setopt.

setopt histignoredups
setopt ignoreeof
setopt listtypes
setopt pushdignoredups

# END zsh saveset
----------------------------------------------------------------------

---
KIMURA Yasuhiro // yasu@xxxxxxxxxxxxxxxxxxxxx
Reserch Lab. III    Communication and Information System Labs.
Research and Developement Center    TOSHIBA CORPORATION



Messages sorted by: Reverse Date, Date, Thread, Author