From xemacs-m  Sun Mar 23 18:40:32 1997
Received: from crystal.WonderWorks.COM (crystal.WonderWorks.com [192.203.206.1])
	by xemacs.org (8.8.5/8.8.5) with ESMTP id SAA09665
	for <xemacs-beta@xemacs.org>; Sun, 23 Mar 1997 18:40:30 -0600 (CST)
Received: by crystal.WonderWorks.COM 
	id QQciek24962; Sun, 23 Mar 1997 19:40:27 -0500 (EST)
Date: Sun, 23 Mar 1997 19:40:27 -0500 (EST)
Message-Id: <QQciek24962.199703240040@crystal.WonderWorks.COM>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
From: Kyle Jones <kyle_jones@wonderworks.com>
To: xemacs-beta@xemacs.org
Subject: Re: Buffer-specific display-tables
In-Reply-To: <kigvi6icfsp.fsf@jagor.srce.hr>
References: <199703232320.RAA09285@xemacs.org>
	<kig2096dw5l.fsf@jagor.srce.hr>
	<QQcieh24204.199703232353@crystal.WonderWorks.COM>
	<kigvi6icfsp.fsf@jagor.srce.hr>
X-Mailer: VM 6.22 under 19.15 XEmacs Lucid (beta103)
X-Face: /cA45WHG7jWq>(O3&Z57Y<"WsX5ddc,4c#w0F*zrV#=M
        0@~@,s;b,aMtR5Sqs"+nU.z^CSFQ9t`z2>W,S,]:[+2^
        Nbf6v4g>!&,7R4Ot4Wg{&tm=WX7P["9%a)_da48-^tGy
        ,qz]Z,Zz\{E.,]'EO+F)@$KtF&V

Hrvoje Niksic writes:
 > Kyle Jones <kyle_jones@wonderworks.com> writes:
 > > Your original code failed, not because a bug in the display code
 > > but rather because you can't use locales and set-specifier with
 > > generic specifiers because of an type ambiguity.
 > 
 > I'm not sure I understand you here.  The documentation of
 > `set-specifier' seems to imply that
 > 
 > (set-specifier specifier value (current-buffer))
 > 
 > is correct.  As `current-display-table' is a specifier, I thought my
 > usage was right.

set-specifier tries to munge all kind of abominable things into
the form add-spec-list-to-specifier wants to see.  For all types
of specifier except generic it can rely on valid-instantiator-p
returning nil for all the tagged lists, lists of instantiators
and all the other things that it is willing to munge.  But for
generic specifiers, everything is valid.  So some
canonicalization function several layers down leaves the
partially canonicalized list alone instead of converting it into
a full rock-n-roll, tagged instantiator list.

To see the difference, eval these two expressions.  They should
produce the same result, but don't because of the ambiguity
between values and tagged lists of values (or whatever they're
called).

(canonicalize-spec-list (cons (current-buffer) 2) 'integer)

(canonicalize-spec-list (cons (current-buffer) 2) 'generic)

