(set_case_table): Handle nil for EQV with non-nil CANON.
(Fcase_table_p): Accept nil for EQV with non-nil CANON.
This commit is contained in:
parent
762f2b928d
commit
5a0fd72f90
1 changed files with 11 additions and 6 deletions
|
@ -47,7 +47,8 @@ See `set-case-table' for more information on these data structures.")
|
|||
return (STRING256_P (down)
|
||||
&& (NILP (up) || STRING256_P (up))
|
||||
&& ((NILP (canon) && NILP (eqv))
|
||||
|| (STRING256_P (canon) && STRING256_P (eqv)))
|
||||
|| (STRING256_P (canon)
|
||||
&& (NILP (eqv) || STRING256_P (eqv))))
|
||||
? Qt : Qnil);
|
||||
}
|
||||
|
||||
|
@ -99,11 +100,11 @@ UPCASE maps each character to its upper-case equivalent;\n\
|
|||
you may use nil and the upcase table will be deduced from DOWNCASE.\n\
|
||||
CANONICALIZE maps each character to a canonical equivalent;\n\
|
||||
any two characters that are related by case-conversion have the same\n\
|
||||
canonical equivalent character.\n\
|
||||
canonical equivalent character; it may be nil, in which case it is\n\
|
||||
deduced from DOWNCASE and UPCASE.\n\
|
||||
EQUIVALENCES is a map that cyclicly permutes each equivalence class\n\
|
||||
(of characters with the same canonical equivalent).\n\
|
||||
Both CANONICALIZE and EQUIVALENCES may be nil, in which case\n\
|
||||
both are deduced from DOWNCASE and UPCASE.")
|
||||
(of characters with the same canonical equivalent); it may be nil,\n\
|
||||
in which case it is deduced from CANONICALIZE.")
|
||||
(table)
|
||||
Lisp_Object table;
|
||||
{
|
||||
|
@ -146,13 +147,17 @@ set_case_table (table, standard)
|
|||
unsigned char *downvec = XSTRING (down)->data;
|
||||
|
||||
canon = Fmake_string (make_number (256), make_number (0));
|
||||
eqv = Fmake_string (make_number (256), make_number (0));
|
||||
|
||||
/* Set up the CANON vector; for each character,
|
||||
this sequence of upcasing and downcasing ought to
|
||||
get the "preferred" lowercase equivalent. */
|
||||
for (i = 0; i < 256; i++)
|
||||
XSTRING (canon)->data[i] = downvec[upvec[downvec[i]]];
|
||||
}
|
||||
|
||||
if (NILP (eqv))
|
||||
{
|
||||
eqv = Fmake_string (make_number (256), make_number (0));
|
||||
|
||||
compute_trt_inverse (XSTRING (canon)->data, XSTRING (eqv)->data);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue