Commit 5a0fd72f authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(set_case_table): Handle nil for EQV with non-nil CANON.

(Fcase_table_p): Accept nil for EQV with non-nil CANON.
parent 762f2b92
......@@ -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.")
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);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment