Subject: 24.3; Directory tracking in ansi-term broken

From: "Olsen, Stuart J" <[email-masked]>
Date: Tue, 7 May 2013 00:06:50 +0000

Using ansi-term's escape-code-based directory tracking causes extra data
to be displayed in local sessions.

To reproduce this bug, run emacs using the command `emacs -Q'. Issue the
command `M-x ansi-term' run a local bash session. Issue the command `echo
-e "\033AnSiTc" $(pwd)' to simulate setting the default-directory for
the ansi-term buffer. This will be successful, but the character
sequence `^Z/cwd', where cwd is the current working directory, will also
be printed. The same happens with the escape sequences to set the user
and hostname.

A possible candidate for this bug is the variable `handled-ansi-message'
in `term.el'. It appears as though this variable is set to true at line
2740 upon processing the directory-tracking escape sequence
(`^[AnSiT...'), which prevents the following escape sequence from being
processed at line 2902, causing this second escape sequence to be
printed to the terminal instead.

In GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.4.2)
of 2013-04-13 on trouble, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.11204000
System Description: Debian GNU/Linux 7.0 (wheezy)

Configured using:
`configure '--build' 'x86_64-linux-gnu' '--build' 'x86_64-linux-gnu'
'--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
'--localstatedir=/var/lib' '--infodir=/usr/share/info'
'--mandir=/usr/share/man' '--with-pop=yes'
'--enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.3/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.3/site-lisp:/usr/share/emacs/site-lisp'
'--with-crt-dir=/usr/lib/x86_64-linux-gnu' '--with-x=yes'
'--with-x-toolkit=gtk3' '--with-toolkit-scroll-bars'
'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fstack-protector
--param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall'
'LDFLAGS=-Wl,-z,relro' 'CPPFLAGS=-D_FORTIFY_SOURCE=2''

Important settings:
value of $LC_CTYPE: en_US.UTF-8
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
default enable-multibyte-characters: t

Major mode: Term

Minor modes in effect:
global-auto-complete-mode: t
goto-address-mode: t
tooltip-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t

Recent input:
M-x r e p <tab> o <tab> r <tab> <return>

Recent messages:
(lambda (dl) ...) quoted with ' rather than with #'
(lambda (mm) ...) quoted with ' rather than with #'
Loading /home/sjo/.emacs.d/powerline.el (source)...done
Loading /usr/share/emacs24/site-lisp/emacs-goodies-el/color-theme-library.el (source)...done
Loading /usr/share/emacs24/site-lisp/emacs-goodies-el/color-theme-library.elc...done
Loading /home/sjo/.emacs.d/visual-settings.el (source)...done
Loading /home/sjo/.emacs.d/term-settings.el (source)...done
Loading /home/sjo/.emacs.d/.mc-lists.el (source)...done
For information about GNU Emacs and the GNU system, type C-? C-a.
Making completion list... [2 times]

Load-path shadows:
/usr/share/emacs24/site-lisp/dictionaries-common/ispell hides /usr/share/emacs/24.3/lisp/textmodes/ispell
/usr/share/emacs24/site-lisp/dictionaries-common/flyspell hides /usr/share/emacs/24.3/lisp/textmodes/flyspell
/usr/share/emacs24/site-lisp/org-mode/org-freemind hides /usr/share/emacs/24.3/lisp/org/org-freemind
/usr/share/emacs24/site-lisp/org-mode/org-attach hides /usr/share/emacs/24.3/lisp/org/org-attach
/usr/share/emacs24/site-lisp/org-mode/org-agenda hides /usr/share/emacs/24.3/lisp/org/org-agenda
/usr/share/emacs24/site-lisp/org-mode/org-install hides /usr/share/emacs/24.3/lisp/org/org-install
/usr/share/emacs24/site-lisp/org-mode/ob-ref hides /usr/share/emacs/24.3/lisp/org/ob-ref
/usr/share/emacs24/site-lisp/org-mode/org-colview hides /usr/share/emacs/24.3/lisp/org/org-colview
/usr/share/emacs24/site-lisp/org-mode/org-datetree hides /usr/share/emacs/24.3/lisp/org/org-datetree
/usr/share/emacs24/site-lisp/org-mode/ob-lisp hides /usr/share/emacs/24.3/lisp/org/ob-lisp
/usr/share/emacs24/site-lisp/org-mode/org-capture hides /usr/share/emacs/24.3/lisp/org/org-capture
/usr/share/emacs24/site-lisp/org-mode/ob-scheme hides /usr/share/emacs/24.3/lisp/org/ob-scheme
/usr/share/emacs24/site-lisp/org-mode/org-wl hides /usr/share/emacs/24.3/lisp/org/org-wl
/usr/share/emacs24/site-lisp/org-mode/org-mobile hides /usr/share/emacs/24.3/lisp/org/org-mobile
/usr/share/emacs24/site-lisp/org-mode/org-inlinetask hides /usr/share/emacs/24.3/lisp/org/org-inlinetask
/usr/share/emacs24/site-lisp/org-mode/ob-eval hides /usr/share/emacs/24.3/lisp/org/ob-eval
/usr/share/emacs24/site-lisp/org-mode/ob-sh hides /usr/share/emacs/24.3/lisp/org/ob-sh
/usr/share/emacs24/site-lisp/org-mode/org-latex hides /usr/share/emacs/24.3/lisp/org/org-latex
/usr/share/emacs24/site-lisp/org-mode/org-pcomplete hides /usr/share/emacs/24.3/lisp/org/org-pcomplete
/usr/share/emacs24/site-lisp/org-mode/org-list hides /usr/share/emacs/24.3/lisp/org/org-list
/usr/share/emacs24/site-lisp/org-mode/ob-shen hides /usr/share/emacs/24.3/lisp/org/ob-shen
/usr/share/emacs24/site-lisp/org-mode/ob-emacs-lisp hides /usr/share/emacs/24.3/lisp/org/ob-emacs-lisp
/usr/share/emacs24/site-lisp/org-mode/ob-C hides /usr/share/emacs/24.3/lisp/org/ob-C
/usr/share/emacs24/site-lisp/org-mode/ob-picolisp hides /usr/share/emacs/24.3/lisp/org/ob-picolisp
/usr/share/emacs24/site-lisp/org-mode/ob-mscgen hides /usr/share/emacs/24.3/lisp/org/ob-mscgen
/usr/share/emacs24/site-lisp/org-mode/ob hides /usr/share/emacs/24.3/lisp/org/ob
/usr/share/emacs24/site-lisp/org-mode/org-table hides /usr/share/emacs/24.3/lisp/org/org-table
/usr/share/emacs24/site-lisp/org-mode/ob-maxima hides /usr/share/emacs/24.3/lisp/org/ob-maxima
/usr/share/emacs24/site-lisp/org-mode/ob-dot hides /usr/share/emacs/24.3/lisp/org/ob-dot
/usr/share/emacs24/site-lisp/org-mode/org-faces hides /usr/share/emacs/24.3/lisp/org/org-faces
/usr/share/emacs24/site-lisp/org-mode/org-habit hides /usr/share/emacs/24.3/lisp/org/org-habit
/usr/share/emacs24/site-lisp/org-mode/org-macs hides /usr/share/emacs/24.3/lisp/org/org-macs
/usr/share/emacs24/site-lisp/org-mode/ob-lob hides /usr/share/emacs/24.3/lisp/org/ob-lob
/usr/share/emacs24/site-lisp/org-mode/org-remember hides /usr/share/emacs/24.3/lisp/org/org-remember
/usr/share/emacs24/site-lisp/org-mode/org-lparse hides /usr/share/emacs/24.3/lisp/org/org-lparse
/usr/share/emacs24/site-lisp/org-mode/ob-matlab hides /usr/share/emacs/24.3/lisp/org/ob-matlab
/usr/share/emacs24/site-lisp/org-mode/org-eshell hides /usr/share/emacs/24.3/lisp/org/org-eshell
/usr/share/emacs24/site-lisp/org-mode/org-feed hides /usr/share/emacs/24.3/lisp/org/org-feed
/usr/share/emacs24/site-lisp/org-mode/ob-asymptote hides /usr/share/emacs/24.3/lisp/org/ob-asymptote
/usr/share/emacs24/site-lisp/org-mode/ob-perl hides /usr/share/emacs/24.3/lisp/org/ob-perl
/usr/share/emacs24/site-lisp/org-mode/org-odt hides /usr/share/emacs/24.3/lisp/org/org-odt
/usr/share/emacs24/site-lisp/org-mode/ob-tangle hides /usr/share/emacs/24.3/lisp/org/ob-tangle
/usr/share/emacs24/site-lisp/org-mode/org-vm hides /usr/share/emacs/24.3/lisp/org/org-vm
/usr/share/emacs24/site-lisp/org-mode/ob-R hides /usr/share/emacs/24.3/lisp/org/ob-R
/usr/share/emacs24/site-lisp/org-mode/org-jsinfo hides /usr/share/emacs/24.3/lisp/org/org-jsinfo
/usr/share/emacs24/site-lisp/org-mode/org-ascii hides /usr/share/emacs/24.3/lisp/org/org-ascii
/usr/share/emacs24/site-lisp/org-mode/ob-haskell hides /usr/share/emacs/24.3/lisp/org/ob-haskell
/usr/share/emacs24/site-lisp/org-mode/ob-keys hides /usr/share/emacs/24.3/lisp/org/ob-keys
/usr/share/emacs24/site-lisp/org-mode/ob-css hides /usr/share/emacs/24.3/lisp/org/ob-css
/usr/share/emacs24/site-lisp/org-mode/org-beamer hides /usr/share/emacs/24.3/lisp/org/org-beamer
/usr/share/emacs24/site-lisp/org-mode/ob-ledger hides /usr/share/emacs/24.3/lisp/org/ob-ledger
/usr/share/emacs24/site-lisp/org-mode/ob-octave hides /usr/share/emacs/24.3/lisp/org/ob-octave
/usr/share/emacs24/site-lisp/org-mode/ob-latex hides /usr/share/emacs/24.3/lisp/org/ob-latex
/usr/share/emacs24/site-lisp/org-mode/org-icalendar hides /usr/share/emacs/24.3/lisp/org/org-icalendar
/usr/share/emacs24/site-lisp/org-mode/org-w3m hides /usr/share/emacs/24.3/lisp/org/org-w3m
/usr/share/emacs24/site-lisp/org-mode/org-compat hides /usr/share/emacs/24.3/lisp/org/org-compat
/usr/share/emacs24/site-lisp/org-mode/ob-ditaa hides /usr/share/emacs/24.3/lisp/org/ob-ditaa
/usr/share/emacs24/site-lisp/org-mode/org-id hides /usr/share/emacs/24.3/lisp/org/org-id
/usr/share/emacs24/site-lisp/org-mode/org-bibtex hides /usr/share/emacs/24.3/lisp/org/org-bibtex
/usr/share/emacs24/site-lisp/org-mode/ob-awk hides /usr/share/emacs/24.3/lisp/org/ob-awk
/usr/share/emacs24/site-lisp/org-mode/org-info hides /usr/share/emacs/24.3/lisp/org/org-info
/usr/share/emacs24/site-lisp/org-mode/ob-fortran hides /usr/share/emacs/24.3/lisp/org/ob-fortran
/usr/share/emacs24/site-lisp/org-mode/org-clock hides /usr/share/emacs/24.3/lisp/org/org-clock
/usr/share/emacs24/site-lisp/org-mode/ob-sql hides /usr/share/emacs/24.3/lisp/org/ob-sql
/usr/share/emacs24/site-lisp/org-mode/ob-screen hides /usr/share/emacs/24.3/lisp/org/ob-screen
/usr/share/emacs24/site-lisp/org-mode/org-bbdb hides /usr/share/emacs/24.3/lisp/org/org-bbdb
/usr/share/emacs24/site-lisp/org-mode/org-src hides /usr/share/emacs/24.3/lisp/org/org-src
/usr/share/emacs24/site-lisp/org-mode/ob-ocaml hides /usr/share/emacs/24.3/lisp/org/ob-ocaml
/usr/share/emacs24/site-lisp/org-mode/org-publish hides /usr/share/emacs/24.3/lisp/org/org-publish
/usr/share/emacs24/site-lisp/org-mode/org-exp hides /usr/share/emacs/24.3/lisp/org/org-exp
/usr/share/emacs24/site-lisp/org-mode/ob-clojure hides /usr/share/emacs/24.3/lisp/org/ob-clojure
/usr/share/emacs24/site-lisp/org-mode/org-docbook hides /usr/share/emacs/24.3/lisp/org/org-docbook
/usr/share/emacs24/site-lisp/org-mode/ob-js hides /usr/share/emacs/24.3/lisp/org/ob-js
/usr/share/emacs24/site-lisp/org-mode/org-ctags hides /usr/share/emacs/24.3/lisp/org/org-ctags
/usr/share/emacs24/site-lisp/org-mode/org-html hides /usr/share/emacs/24.3/lisp/org/org-html
/usr/share/emacs24/site-lisp/org-mode/ob-table hides /usr/share/emacs/24.3/lisp/org/ob-table
/usr/share/emacs24/site-lisp/org-mode/ob-exp hides /usr/share/emacs/24.3/lisp/org/ob-exp
/usr/share/emacs24/site-lisp/org-mode/org-mac-message hides /usr/share/emacs/24.3/lisp/org/org-mac-message
/usr/share/emacs24/site-lisp/org-mode/org-special-blocks hides /usr/share/emacs/24.3/lisp/org/org-special-blocks
/usr/share/emacs24/site-lisp/org-mode/org-docview hides /usr/share/emacs/24.3/lisp/org/org-docview
/usr/share/emacs24/site-lisp/org-mode/ob-python hides /usr/share/emacs/24.3/lisp/org/ob-python
/usr/share/emacs24/site-lisp/org-mode/org-footnote hides /usr/share/emacs/24.3/lisp/org/org-footnote
/usr/share/emacs24/site-lisp/org-mode/org-taskjuggler hides /usr/share/emacs/24.3/lisp/org/org-taskjuggler
/usr/share/emacs24/site-lisp/org-mode/ob-sass hides /usr/share/emacs/24.3/lisp/org/ob-sass
/usr/share/emacs24/site-lisp/org-mode/org-xoxo hides /usr/share/emacs/24.3/lisp/org/org-xoxo
/usr/share/emacs24/site-lisp/org-mode/org-archive hides /usr/share/emacs/24.3/lisp/org/org-archive
/usr/share/emacs24/site-lisp/org-mode/ob-lilypond hides /usr/share/emacs/24.3/lisp/org/ob-lilypond
/usr/share/emacs24/site-lisp/org-mode/ob-java hides /usr/share/emacs/24.3/lisp/org/ob-java
/usr/share/emacs24/site-lisp/org-mode/org-protocol hides /usr/share/emacs/24.3/lisp/org/org-protocol
/usr/share/emacs24/site-lisp/org-mode/ob-gnuplot hides /usr/share/emacs/24.3/lisp/org/ob-gnuplot
/usr/share/emacs24/site-lisp/org-mode/ob-plantuml hides /usr/share/emacs/24.3/lisp/org/ob-plantuml
/usr/share/emacs24/site-lisp/org-mode/org-gnus hides /usr/share/emacs/24.3/lisp/org/org-gnus
/usr/share/emacs24/site-lisp/org-mode/ob-org hides /usr/share/emacs/24.3/lisp/org/ob-org
/usr/share/emacs24/site-lisp/org-mode/org-entities hides /usr/share/emacs/24.3/lisp/org/org-entities
/usr/share/emacs24/site-lisp/org-mode/ob-comint hides /usr/share/emacs/24.3/lisp/org/ob-comint
/usr/share/emacs24/site-lisp/org-mode/org-plot hides /usr/share/emacs/24.3/lisp/org/org-plot
/usr/share/emacs24/site-lisp/org-mode/org-mouse hides /usr/share/emacs/24.3/lisp/org/org-mouse
/usr/share/emacs24/site-lisp/org-mode/org-timer hides /usr/share/emacs/24.3/lisp/org/org-timer
/usr/share/emacs24/site-lisp/org-mode/org-irc hides /usr/share/emacs/24.3/lisp/org/org-irc
/usr/share/emacs24/site-lisp/org-mode/org-indent hides /usr/share/emacs/24.3/lisp/org/org-indent
/usr/share/emacs24/site-lisp/org-mode/org-mks hides /usr/share/emacs/24.3/lisp/org/org-mks
/usr/share/emacs24/site-lisp/org-mode/org-crypt hides /usr/share/emacs/24.3/lisp/org/org-crypt
/usr/share/emacs24/site-lisp/org-mode/org hides /usr/share/emacs/24.3/lisp/org/org
/usr/share/emacs24/site-lisp/org-mode/ob-sqlite hides /usr/share/emacs/24.3/lisp/org/ob-sqlite
/usr/share/emacs24/site-lisp/org-mode/org-exp-blocks hides /usr/share/emacs/24.3/lisp/org/org-exp-blocks
/usr/share/emacs24/site-lisp/org-mode/ob-ruby hides /usr/share/emacs/24.3/lisp/org/ob-ruby
/usr/share/emacs24/site-lisp/org-mode/ob-calc hides /usr/share/emacs/24.3/lisp/org/ob-calc
/usr/share/emacs24/site-lisp/org-mode/org-mhe hides /usr/share/emacs/24.3/lisp/org/org-mhe
/usr/share/emacs24/site-lisp/org-mode/org-mew hides /usr/share/emacs/24.3/lisp/org/org-mew
/usr/share/emacs24/site-lisp/org-mode/org-rmail hides /usr/share/emacs/24.3/lisp/org/org-rmail

Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils help-mode yasnippet-autoloads package
auto-complete-config auto-complete popup multiple-cursors
mc-separate-operations rectangular-region-mode mc-mark-more
mc-cycle-cursors mc-edit-lines multiple-cursors-core rect goto-addr
thingatpt term disp-table ehelp electric ring info color-theme easymenu
wid-edit powerline cl-macs gv cl advice help-fns cl-lib advice-preload
edmacro kmacro slime-autoloads org-install emacs-goodies-el
emacs-goodies-custom emacs-goodies-loaddefs easy-mmode time-date tooltip
ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list newcomment lisp-mode
register page menu-bar rfn-eshadow timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
minibuffer loaddefs button faces cus-face macroexp files text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process dbusbind
dynamic-setting system-font-setting font-render-setting move-toolbar gtk
x-toolkit x multi-tty emacs)