Subject: bug#12228: 24.2.50; xml-escape-string doesn't escape < and &

From: Marco Minutoli <[email-masked]>
Date: Sat, 18 Aug 2012 19:45:19 +0200

(xml-escape-string "<>&\"")
  -> "<&gt;&&quot;"

while it should be:
  -> "&lt;&gt;&amp;&quot;"

In GNU Emacs 24.2.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.4.2)
 of 2012-08-15 on dex, modified by Debian
 (emacs-snapshot package, version 2:20120815-1)
Windowing system distributor `The X.Org Foundation', version 11.0.11203000
Configured using:
 `configure '--build' 'x86_64-linux-gnu' '--host' 'x86_64-linux-gnu'
 '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
 '--localstatedir=/var' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-pop=yes'
 '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.2.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.2.50/site-lisp:/usr/share/emacs/site-lisp'
 '--without-compress-info' '--with-crt-dir=/usr/lib/x86_64-linux-gnu/'
 '--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes'
 'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu'
 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g
 -Wl,--as-needed -znocombreloc' 'CPPFLAGS=-D_FORTIFY_SOURCE=2''

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

Major mode: Lisp Interaction

Minor modes in effect:
  whitespace-mode: t
  override-global-mode: t
  show-paren-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t

Recent input:
<backspace> " ) C-x C-e <down-mouse-1> <mouse-1> <down-mouse-1> 
<mouse-1> <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
s u b s t i t u t e - s p e c x a l <backspace> <backspace> 
<backspace> i a l C-e C-x C-e C-b C-b C-b C-b C-b C-b 
C-b C-b C-b <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> <backspace> e s 
c a k e <backspace> <backspace> p e - s c t <backspace> 
<backspace> t r i n g C-e C-x C-e <down-mouse-1> <mouse-1> 
<return> * <backspace> ( x m l - e s c <backspace> 
<backspace> <backspace> s u b s t i t u s e <backspace> 
<backspace> t e - s p e c x a l <backspace> <backspace> 
<backspace> u i <backspace> <backspace> i a l SPC " 
* <backspace> ^ <backspace> * <backspace> & g t ; " 
) C-x C-e C-b C-b & a m p ; C-e C-x C-e C-b C-b # 3 
8 ; C-b C-b C-b C-b & C-e C-x C-e C-b C-b & # 6 0 ; 
C-e C-x C-e RET RET C-p C-p C-p C-s C-e C-s C-e C-s 
C-n C-e C-b C-b * <backspace> & l t ; C-e C-x C-e M-x 
r e p o r <tab> <return> x m l - e c <backspace> s 
c a p e - s t r i n g C-g e <backspace> M-x e m a <tab> 
<tab> u <backspace> b u <tab> <tab> g <tab> <backspace> 
<backspace> <backspace> <tab> <backspace> <tab> <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
C-g <down-mouse-1> <mouse-1> M-x r e p o r t <tab> 
<return>

Recent messages:
Back to top level.
"<>&\"" [2 times]
"<&gt;&&quot;"
">"
">&"
">&&"
">&&<"
">&&<<"
Quit
Making completion list... [2 times]
Quit

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

Features:
(shadow sort mail-extr emacsbug sendmail debug misearch multi-isearch
time help-mode apropos sgml-mode tabify parse-time network-stream
starttls url-cache org2blog metaweblog xml-rpc timezone url-http tls url
url-proxy url-privacy url-expand url-methods url-history mailcap
url-auth url-cookie url-domsuf url-util url-parse auth-source eieio
password-cache url-gw url-vars xml vc-git org-wl org-w3m org-vm
org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs org-html org-exp
ob-exp org-exp-blocks org-agenda org-info org-gnus org-docview
org-bibtex bibtex org-bbdb org derived ob-tangle ob-ref ob-lob ob-table
org-footnote org-src ob-keys org-pcomplete pcomplete org-list org-faces
org-entities noutline outline org-fixup autoload ob-emacs-lisp ob-comint
comint ansi-color ring ob org-compat org-macs ob-eval cal-menu calendar
cal-loaddefs gnus-sum nnoo gnus-group gnus-undo nnmail mail-source
gnus-start gnus-spec gnus-int gnus-range message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mailabbrev gmm-utils mailheader gnus-win disp-table
whitespace edmacro kmacro gnus gnus-ems nnheader gnus-util mail-utils
mm-util mail-prsvr initsplit byte-opt warnings advice help-fns
advice-preload cus-edit easymenu wid-edit find-func cl-macs gv
use-package cl cl-lib bytecomp byte-compile cconv macroexp bind-key
easy-mmode paren cus-start cus-load load-path 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 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)