* char-table-range
@ 2004-02-16 0:43 Kenichi Handa
2004-02-16 1:30 ` char-table-range Luc Teirlinck
` (2 more replies)
0 siblings, 3 replies; 16+ messages in thread
From: Kenichi Handa @ 2004-02-16 0:43 UTC (permalink / raw)
Cc: teirllm
Luc pointed out the current odd behaviour of
char-table-range. What should we do if values of characters
in the specified range are different?
For the moment, I don't have a good idea. Possible
behaviours are:
(1) return nil
(2) return the first non-nil value in the range.
(3) return the default value of the range (but ascii,
eight-bit-XXXX doesn't have a default value).
(4) signal an error
By the way, I don't know why this function is necessary, in
what situation it is intended to use this function.
Currently, it is used only in cc-vars.el as below.
(defconst c-emacs-features
[...]
;; before and including Emacs 19.34
((and (fboundp 'char-table-p)
(char-table-p table))
(setq entry (car (char-table-range table [?a]))))
but this is equivalent to
(setq entry (car (aref table ?a))))
---
Ken'ichi HANDA
handa@m17n.org
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-16 0:43 char-table-range Kenichi Handa
@ 2004-02-16 1:30 ` Luc Teirlinck
2004-02-18 23:38 ` char-table-range Richard Stallman
2004-02-16 2:12 ` char-table-range Luc Teirlinck
2004-02-18 17:55 ` char-table-range Richard Stallman
2 siblings, 1 reply; 16+ messages in thread
From: Luc Teirlinck @ 2004-02-16 1:30 UTC (permalink / raw)
Cc: emacs-devel
Ken'ichi Handa wrote:
Luc pointed out the current odd behaviour of
char-table-range. What should we do if values of characters
in the specified range are different?
Maybe it should be clarified that this was pointed out in private
email while discussing a fix to another bug (so people do not start
searching the archives for a non-existing report).
The current behavior for ascii and eight-bit-{graphic,contol} is so
odd that it probably can be safely called a bug. Note that in the
ielm run below (char-table-range cc 'ascii) actually returns the value
specified for eight-bit-control. For other charsets (I took ipa as
example), things would seem to be OK.
My own opinion would be to have char-table-range return the default
value, except for ascii and eight-bit-{control,graphic} which do not
have a default value. For those it would seem to me that the best
thing to do would be to throw an error.
===File ~/char-table-ielm===================================
*** Welcome to IELM *** Type (describe-mode) for help.
ELISP> (put 'five-slots 'char-table-extra-slots 5)
5
ELISP> (setq cc (make-char-table 'five-slots))
;; long output deleted.
ELISP> (set-char-table-range cc 'ascii 1)
1
ELISP> (set-char-table-range cc 'eight-bit-control 2)
2
ELISP> (set-char-table-range cc 'eight-bit-graphic 3)
3
ELISP> (set-char-table-range cc 'ipa 4)
4
ELISP> (char-table-range cc 'ascii)
2
ELISP> (char-table-range cc 'eight-bit-graphic)
nil
ELISP> (char-table-range cc 'eight-bit-control)
nil
ELISP> (char-table-range cc 'ipa)
4
ELISP>
============================================================
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-16 0:43 char-table-range Kenichi Handa
2004-02-16 1:30 ` char-table-range Luc Teirlinck
@ 2004-02-16 2:12 ` Luc Teirlinck
2004-02-16 4:08 ` char-table-range Kenichi Handa
2004-02-18 17:55 ` char-table-range Richard Stallman
2 siblings, 1 reply; 16+ messages in thread
From: Luc Teirlinck @ 2004-02-16 2:12 UTC (permalink / raw)
Cc: emacs-devel
Ken'ichi Handa wrote:
What should we do if values of characters
in the specified range are different?
For the moment, I don't have a good idea. Possible
behaviours are:
(1) return nil
(2) return the first non-nil value in the range.
(3) return the default value of the range (but ascii,
eight-bit-XXXX doesn't have a default value).
(4) signal an error
I did not realize that currently, for charsets different from ascii and
eight-bit-{control,graphic}, char-table-range actually returns the
entire range of values if the value is not uniform. So this could be
a fifth possibility, since it appears to be the current situation:
===File ~/char-table-ielm-b=================================
*** Welcome to IELM *** Type (describe-mode) for help.
ELISP> (put 'five-slots 'char-table-extra-slots 5)
5
ELISP> (setq cc (make-char-table 'five-slots))
ELISP> (make-char 'ipa)
6272
ELISP> (set-char-table-default cc 6272 1)
1
ELISP> (char-table-range cc 'ipa)
1
ELISP> (split-char 6320)
(ipa 48)
ELISP> (aset cc 6320 2)
2
ELISP> (char-table-range cc 'ipa)
#^^[nil 1 nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil 2 nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil]
ELISP> (aset cc 32 1)
1
ELISP> (aset cc 33 2)
2
ELISP> (char-table-range cc 'ascii)
nil
ELISP> (aset cc 128 3)
3
ELISP> (char-table-range cc 'ascii)
3
ELISP>
============================================================
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-16 2:12 ` char-table-range Luc Teirlinck
@ 2004-02-16 4:08 ` Kenichi Handa
0 siblings, 0 replies; 16+ messages in thread
From: Kenichi Handa @ 2004-02-16 4:08 UTC (permalink / raw)
Cc: emacs-devel
In article <200402160212.i1G2Cbq04302@raven.dms.auburn.edu>, Luc Teirlinck <teirllm@dms.auburn.edu> writes:
> I did not realize that currently, for charsets different from ascii and
> eight-bit-{control,graphic}, char-table-range actually returns the
> entire range of values if the value is not uniform. So this could be
> a fifth possibility, since it appears to be the current situation:
No. I think it is a serious bug because that returned value
is a sub-char-table which should not be exposed to Lisp.
> My own opinion would be to have char-table-range return the default
> value, except for ascii and eight-bit-{control,graphic} which do not
> have a default value. For those it would seem to me that the best
> thing to do would be to throw an error.
Actually, we can think that a char-table has a default value
for ascii and eight-bit-xxx. It is the default value of the
char-table itself. So, I now think that your idea of
returning the default value is good.
---
Ken'ichi HANDA
handa@m17n.org
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-16 0:43 char-table-range Kenichi Handa
2004-02-16 1:30 ` char-table-range Luc Teirlinck
2004-02-16 2:12 ` char-table-range Luc Teirlinck
@ 2004-02-18 17:55 ` Richard Stallman
2 siblings, 0 replies; 16+ messages in thread
From: Richard Stallman @ 2004-02-18 17:55 UTC (permalink / raw)
Cc: teirllm, emacs-devel
Luc pointed out the current odd behaviour of
char-table-range. What should we do if values of characters
in the specified range are different?
For the moment, I don't have a good idea. Possible
behaviours are:
(1) return nil
(2) return the first non-nil value in the range.
(3) return the default value of the range (but ascii,
eight-bit-XXXX doesn't have a default value).
(4) signal an error
I think signaling an error is the cleanest behavior.
By the way, I don't know why this function is necessary, in
what situation it is intended to use this function.
I think it may be included for completeness of access
to the data in a char table.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-16 1:30 ` char-table-range Luc Teirlinck
@ 2004-02-18 23:38 ` Richard Stallman
2004-02-19 1:28 ` char-table-range Luc Teirlinck
2004-02-19 1:52 ` char-table-range Luc Teirlinck
0 siblings, 2 replies; 16+ messages in thread
From: Richard Stallman @ 2004-02-18 23:38 UTC (permalink / raw)
Cc: emacs-devel, handa
My own opinion would be to have char-table-range return the default
value, except for ascii and eight-bit-{control,graphic} which do not
have a default value.
Is there any other convenient way to get the default value and always
the default value? For instance, by using a generic character?
If so, it would be better for char-table-range to signal an error
than to return the default value.
I did not realize that currently, for charsets different from ascii and
eight-bit-{control,graphic}, char-table-range actually returns the
entire range of values if the value is not uniform.
That seems like a good thing for it to to.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-18 23:38 ` char-table-range Richard Stallman
@ 2004-02-19 1:28 ` Luc Teirlinck
2004-02-19 15:40 ` char-table-range Luc Teirlinck
2004-02-20 13:42 ` char-table-range Richard Stallman
2004-02-19 1:52 ` char-table-range Luc Teirlinck
1 sibling, 2 replies; 16+ messages in thread
From: Luc Teirlinck @ 2004-02-19 1:28 UTC (permalink / raw)
Cc: handa, emacs-devel
Richard Stallman wrote:
Is there any other convenient way to get the default value and always
the default value? For instance, by using a generic character?
That seems to work.
I did not realize that currently, for charsets different from ascii and
eight-bit-{control,graphic}, char-table-range actually returns the
entire range of values if the value is not uniform.
That seems like a good thing for it to to.
Yes, but Handa remarked that the return value is given in a form
(sub-char-table) which is not supposed to be exported to Lisp.
I am currently reading the Elisp chapter on sequences. In the section
on chartables several things are wrongly, incompletely or ambiguously
documented. I will take care of that, but I do not want to "document"
bugs.
Apart from the problem we are discussing right now, there are two
other things that seem surprising to me about chartables. I am not
necessarily claiming that they are bugs or misfeatures, I just want to
make sure that they are not before documenting them.
One seems very closely related to what we are currently discussing:
While it does seem possible to get the default value by specifying a
generic character, there is a strange subtle asymmetry between
_setting_ the default value for, say, ipa, and setting the
corresponding generic character (6272 in this case).
Setting the default value using `set-char-table-default' does _not_
override non-nil pre-existing values in the charset _except_ for the
generic character itself. Setting the generic character itself
overrides the entire charset. Is this intentional? If yes, I will
clearly document it (because it is confusing).
The second thing that looks _somewhat_ strange (but maybe it is OK) is
that (make-char-table subtype init) will also set extra slots to INIT.
This is somewhat unexpected because a logical default for characters
would seldom seem to make sense for extra slots as well. Maybe this
is intentional anyway. In that case I will document it.
ielm run illustrating all of the above:
===File ~/chartable-ielm====================================
*** Welcome to IELM *** Type (describe-mode) for help.
ELISP> (put 'five-slots 'char-table-extra-slots 5)
5
ELISP> (setq cc (make-char-table 'five-slots 2))
#^[t 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 nil five-slots 2 2 2 2 2]
ELISP> (char-table-extra-slot cc 3)
2
ELISP> (make-char 'ipa)
6272
ELISP> (split-char 6320)
(ipa 48)
ELISP> (aset cc 6320 7)
7
ELISP> (aset cc 6272 1)
1
ELISP> (aref cc 6320)
1
ELISP> (aset cc 6320 7)
7
ELISP> (set-char-table-default cc 6272 8)
8
ELISP> (aref cc 6272)
8
ELISP> (aref cc 6320)
7
ELISP> (char-table-range cc 'ipa)
#^^[nil 8 nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil 7 nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil]
ELISP>
============================================================
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-18 23:38 ` char-table-range Richard Stallman
2004-02-19 1:28 ` char-table-range Luc Teirlinck
@ 2004-02-19 1:52 ` Luc Teirlinck
2004-02-20 13:42 ` char-table-range Richard Stallman
1 sibling, 1 reply; 16+ messages in thread
From: Luc Teirlinck @ 2004-02-19 1:52 UTC (permalink / raw)
Cc: emacs-devel, handa
Actually, there is still something else that I find somewhat
counter-intuitive about chartables and that is the identification of
invalid characters with generic characters. Note how in the ielm run
below, the "real" generic character for ipa, 6272, and the invalid
character 6300 seem to be treated as identical. Is this intentional?
===File ~/new-chartable-ielm================================
*** Welcome to IELM *** Type (describe-mode) for help.
ELISP> (put 'five-slots 'char-table-extra-slots 5)
5
ELISP> (setq cc (make-char-table 'five-slots 2))
ELISP> (make-char 'ipa)
6272
ELISP> (split-char 6320)
(ipa 48)
ELISP> (char-valid-p 6300)
nil
ELISP> (aset cc 6320 3)
3
ELISP> (aref cc 6272)
2
ELISP> (aref cc 6320)
3
ELISP> (aset cc 6300 "invalid char")
"invalid char"
ELISP> (aref cc 6272)
"invalid char"
ELISP> (aref cc 6320)
"invalid char"
ELISP>
============================================================
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-19 1:28 ` char-table-range Luc Teirlinck
@ 2004-02-19 15:40 ` Luc Teirlinck
2004-02-20 13:42 ` char-table-range Richard Stallman
1 sibling, 0 replies; 16+ messages in thread
From: Luc Teirlinck @ 2004-02-19 15:40 UTC (permalink / raw)
Cc: emacs-devel, rms, handa
>From my previous message:
While it does seem possible to get the default value by specifying a
generic character, there is a strange subtle asymmetry between
_setting_ the default value for, say, ipa, and setting the
corresponding generic character (6272 in this case).
Setting the default value using `set-char-table-default' does _not_
override non-nil pre-existing values in the charset _except_ for the
generic character itself. Setting the generic character itself
overrides the entire charset. Is this intentional? If yes, I will
clearly document it (because it is confusing).
On second thought, this _must_ be intentional, otherwise the function
set-char-table-default would be completely unnecessary. I will just
document the fact.
Sincerely,
Luc.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-19 1:28 ` char-table-range Luc Teirlinck
2004-02-19 15:40 ` char-table-range Luc Teirlinck
@ 2004-02-20 13:42 ` Richard Stallman
2004-02-21 0:03 ` char-table-range Luc Teirlinck
1 sibling, 1 reply; 16+ messages in thread
From: Richard Stallman @ 2004-02-20 13:42 UTC (permalink / raw)
Cc: handa, emacs-devel
I did not realize that currently, for charsets different from ascii and
eight-bit-{control,graphic}, char-table-range actually returns the
entire range of values if the value is not uniform.
That seems like a good thing for it to to.
Yes, but Handa remarked that the return value is given in a form
(sub-char-table) which is not supposed to be exported to Lisp.
That is unfortunate. The distinction between char-tables and
sub-char-tables is one that "sort of grew", and is sill being
clarified.
I am currently reading the Elisp chapter on sequences. In the section
on chartables several things are wrongly, incompletely or ambiguously
documented. I will take care of that, but I do not want to "document"
bugs.
Thank you.
Setting the default value using `set-char-table-default' does _not_
override non-nil pre-existing values in the charset _except_ for the
generic character itself. Setting the generic character itself
overrides the entire charset. Is this intentional?
I don't know. But it is not very clean, so it would be nice to change it,
if that does not cause some other problem.
Handa, do you know if anything depends on this?
The second thing that looks _somewhat_ strange (but maybe it is OK) is
that (make-char-table subtype init) will also set extra slots to INIT.
This is somewhat unexpected because a logical default for characters
would seldom seem to make sense for extra slots as well. Maybe this
is intentional anyway.
It looks like a misfeature to me. But before changing it, we had
better see if anything depends on it. I think that means looking at
all the calls to make-char-table and checking each one.
Can you do that?
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-19 1:52 ` char-table-range Luc Teirlinck
@ 2004-02-20 13:42 ` Richard Stallman
0 siblings, 0 replies; 16+ messages in thread
From: Richard Stallman @ 2004-02-20 13:42 UTC (permalink / raw)
Cc: emacs-devel, handa
Note how in the ielm run
below, the "real" generic character for ipa, 6272, and the invalid
character 6300 seem to be treated as identical. Is this intentional?
It is a little ugly, but it isn't very bad.
If nothing depends on this behavior, then it might be nicer
to get an error for an invalid character code, if that is not
hard to implement.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-02-20 13:42 ` char-table-range Richard Stallman
@ 2004-02-21 0:03 ` Luc Teirlinck
[not found] ` <200403020247.LAA16492@etlken.m17n.org>
0 siblings, 1 reply; 16+ messages in thread
From: Luc Teirlinck @ 2004-02-21 0:03 UTC (permalink / raw)
Cc: emacs-devel, handa
Richard Stallman wrote:
The second thing that looks _somewhat_ strange (but maybe it is OK) is
that (make-char-table subtype init) will also set extra slots to INIT.
This is somewhat unexpected because a logical default for characters
would seldom seem to make sense for extra slots as well. Maybe this
is intentional anyway.
It looks like a misfeature to me. But before changing it, we had
better see if anything depends on it. I think that means looking at
all the calls to make-char-table and checking each one.
Can you do that?
It seems to be used (?) in exactly one place in the Emacs source code
(if I did not overlook anything): china-util.el
There we find the function `expand-euc-big5-alist' which is defined
inside an eval-when-compile and it is normally not defined at runtime.
It contains the line:
(let ((chartable (make-char-table 'translation-table #xFF))
`chartable' is used in the return value. This sets all values,
including extra slots to #xFF = 255. `expand-euc-big5-alist' is used
to put a translation-table property on the symbol `big5-to-cns' (whose
actual value as a variable is another translation table). The value
of that translation-table property has its two extra slots set to 255.
Ielm run illustrating the above:
===File ~/china-util-ielm===================================
*** Welcome to IELM *** Type (describe-mode) for help.
ELISP> (load "china-util")
t
ELISP> (setq tt (get 'big5-to-cns 'translation-table))
;; Long ouput omitted
ELISP> (char-table-extra-slot tt 0)
255
ELISP> (char-table-extra-slot tt 1)
255
ELISP> (expand-euc-big5-alist nil)
*** Eval error *** Symbol's function definition is void: expand-euc-big5-alist
ELISP> (load "china-util.el")
t
ELISP> (expand-euc-big5-alist nil)
#^[t 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 !
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 nil translation-table 255 255]
ELISP>
============================================================
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
[not found] ` <200403020247.LAA16492@etlken.m17n.org>
@ 2004-03-03 3:39 ` Luc Teirlinck
2004-03-03 4:50 ` char-table-range Kenichi Handa
2004-03-03 4:51 ` char-table-range Kenichi Handa
0 siblings, 2 replies; 16+ messages in thread
From: Luc Teirlinck @ 2004-03-03 3:39 UTC (permalink / raw)
Cc: handa, rms, emacs-devel
Ken 'ichi Handa wrote:
(set-char-table-default TABLE IDX VAL)
(1) If IDX is a symbol `ascii', set the default value for all
characters to VAL.
(2) If IDX is GENERIC-CHAR, set the value for characters in
GENERIC-CHAR to nil, and set the default value for them to VAL.
(3) If IDX is an individual character, set IDX to a generic
character that represents the smallest group of characters
containing IDX, and perform (2).
I think (1) is a misfeature. The default value for all characters
should be set by specifying IDX nil. (3) is also very questionable. I
think we don't need it.
I do not know whether (2) is intended as description of the current
behavior of set-char-table-default or as a proposed new behavior. As
a description of the current behavior it is not completely accurate.
Indeed, aset and set-char-table-range both behave exactly as described
in (2) for a generic character, but currently, set-char-table-default
for a generic character just sets the default value to VAL, _without_
first setting the value for characters in GENERIC-CHAR to nil (as aset
and set-char-table-range indeed both do). See the ielm run below.
===File ~/chartable-stuff===================================
*** Welcome to IELM *** Type (describe-mode) for help.
ELISP> (setq cc (make-char-table 'translation-table))
ELISP> (aset cc (make-char 'ipa 48) 2)
2
ELISP> (aset cc (make-char 'ipa) 1)
1
ELISP> (aref cc (make-char 'ipa 48))
1
ELISP> (aset cc (make-char 'ipa 48) 2)
2
ELISP> (set-char-table-range cc (make-char 'ipa) 1)
1
ELISP> (aref cc (make-char 'ipa 48))
1
ELISP> (aset cc (make-char 'ipa 48) 2)
2
ELISP> (set-char-table-default cc (make-char 'ipa) 1)
1
ELISP> (aref cc (make-char 'ipa 48))
2
ELISP>
============================================================
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-03-03 3:39 ` char-table-range Luc Teirlinck
@ 2004-03-03 4:50 ` Kenichi Handa
2004-03-04 16:41 ` char-table-range Richard Stallman
2004-03-03 4:51 ` char-table-range Kenichi Handa
1 sibling, 1 reply; 16+ messages in thread
From: Kenichi Handa @ 2004-03-03 4:50 UTC (permalink / raw)
Cc: rms, emacs-devel
In article <200403030339.i233dJs02566@raven.dms.auburn.edu>, Luc Teirlinck <teirllm@dms.auburn.edu> writes:
> Ken 'ichi Handa wrote:
> (set-char-table-default TABLE IDX VAL)
> (1) If IDX is a symbol `ascii', set the default value for all
> characters to VAL.
> (2) If IDX is GENERIC-CHAR, set the value for characters in
> GENERIC-CHAR to nil, and set the default value for them to VAL.
> (3) If IDX is an individual character, set IDX to a generic
> character that represents the smallest group of characters
> containing IDX, and perform (2).
> I think (1) is a misfeature. The default value for all characters
> should be set by specifying IDX nil. (3) is also very questionable. I
> think we don't need it.
> I do not know whether (2) is intended as description of the current
> behavior of set-char-table-default or as a proposed new behavior. As
> a description of the current behavior it is not completely accurate.
> Indeed, aset and set-char-table-range both behave exactly as described
> in (2) for a generic character, but currently, set-char-table-default
> for a generic character just sets the default value to VAL, _without_
> first setting the value for characters in GENERIC-CHAR to nil (as aset
> and set-char-table-range indeed both do). See the ielm run below.
Oops, you are right. I myself was confused. I wrote above
as description of the currently behavior, and should be
written as this:
(2) If IDX is GENERIC-CHAR, set the default value for
characters in GENERIC-CHAR to VAL.
My opininons/proposals were written without indentation.
---
Ken'ichi HANDA
handa@m17n.org
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-03-03 3:39 ` char-table-range Luc Teirlinck
2004-03-03 4:50 ` char-table-range Kenichi Handa
@ 2004-03-03 4:51 ` Kenichi Handa
1 sibling, 0 replies; 16+ messages in thread
From: Kenichi Handa @ 2004-03-03 4:51 UTC (permalink / raw)
Cc: rms, emacs-devel
In article <200403030339.i233dJs02566@raven.dms.auburn.edu>, Luc Teirlinck <teirllm@dms.auburn.edu> writes:
> Ken 'ichi Handa wrote:
> (set-char-table-default TABLE IDX VAL)
> (1) If IDX is a symbol `ascii', set the default value for all
> characters to VAL.
> (2) If IDX is GENERIC-CHAR, set the value for characters in
> GENERIC-CHAR to nil, and set the default value for them to VAL.
> (3) If IDX is an individual character, set IDX to a generic
> character that represents the smallest group of characters
> containing IDX, and perform (2).
> I think (1) is a misfeature. The default value for all characters
> should be set by specifying IDX nil. (3) is also very questionable. I
> think we don't need it.
> I do not know whether (2) is intended as description of the current
> behavior of set-char-table-default or as a proposed new behavior. As
> a description of the current behavior it is not completely accurate.
> Indeed, aset and set-char-table-range both behave exactly as described
> in (2) for a generic character, but currently, set-char-table-default
> for a generic character just sets the default value to VAL, _without_
> first setting the value for characters in GENERIC-CHAR to nil (as aset
> and set-char-table-range indeed both do). See the ielm run below.
Oops, you are right. I myself was confused. I wrote above
as description of the currently behavior, and should be
written as this:
(2) If IDX is GENERIC-CHAR, set the default value for characters in
GENERIC-CHAR to VAL.
My opininons/proposals were written without indentation.
---
Ken'ichi HANDA
handa@m17n.org
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: char-table-range
2004-03-03 4:50 ` char-table-range Kenichi Handa
@ 2004-03-04 16:41 ` Richard Stallman
0 siblings, 0 replies; 16+ messages in thread
From: Richard Stallman @ 2004-03-04 16:41 UTC (permalink / raw)
Cc: teirllm, emacs-devel
> in (2) for a generic character, but currently, set-char-table-default
> for a generic character just sets the default value to VAL, _without_
> first setting the value for characters in GENERIC-CHAR to nil
That seems correct to me, for set-char-table-default.
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2004-03-04 16:41 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-02-16 0:43 char-table-range Kenichi Handa
2004-02-16 1:30 ` char-table-range Luc Teirlinck
2004-02-18 23:38 ` char-table-range Richard Stallman
2004-02-19 1:28 ` char-table-range Luc Teirlinck
2004-02-19 15:40 ` char-table-range Luc Teirlinck
2004-02-20 13:42 ` char-table-range Richard Stallman
2004-02-21 0:03 ` char-table-range Luc Teirlinck
[not found] ` <200403020247.LAA16492@etlken.m17n.org>
2004-03-03 3:39 ` char-table-range Luc Teirlinck
2004-03-03 4:50 ` char-table-range Kenichi Handa
2004-03-04 16:41 ` char-table-range Richard Stallman
2004-03-03 4:51 ` char-table-range Kenichi Handa
2004-02-19 1:52 ` char-table-range Luc Teirlinck
2004-02-20 13:42 ` char-table-range Richard Stallman
2004-02-16 2:12 ` char-table-range Luc Teirlinck
2004-02-16 4:08 ` char-table-range Kenichi Handa
2004-02-18 17:55 ` char-table-range Richard Stallman
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).