From 0902a04edd7a2e0ca5d73fd996e46f26d5228501 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Tue, 23 Aug 2011 20:48:07 +0900 Subject: [PATCH] Fix default values of character properties. --- admin/ChangeLog | 14 ++++ admin/unidata/unidata-gen.el | 103 +++++++++++++++++------- lisp/ChangeLog | 18 +++++ lisp/international/charprop.el | 26 ++++-- lisp/international/uni-bidi.el | Bin 8719 -> 7981 bytes lisp/international/uni-category.el | Bin 11396 -> 12759 bytes lisp/international/uni-combining.el | Bin 8369 -> 6251 bytes lisp/international/uni-comment.el | Bin 2386 -> 2407 bytes lisp/international/uni-decimal.el | Bin 1869 -> 2710 bytes lisp/international/uni-decomposition.el | Bin 28459 -> 28497 bytes lisp/international/uni-digit.el | Bin 2187 -> 3028 bytes lisp/international/uni-lowercase.el | Bin 5347 -> 6421 bytes lisp/international/uni-mirrored.el | Bin 10452 -> 9342 bytes lisp/international/uni-name.el | Bin 158765 -> 158786 bytes lisp/international/uni-numeric.el | Bin 3688 -> 4522 bytes lisp/international/uni-old-name.el | Bin 19692 -> 19713 bytes lisp/international/uni-titlecase.el | Bin 5434 -> 6462 bytes lisp/international/uni-uppercase.el | Bin 5430 -> 6458 bytes src/ChangeLog | 5 ++ src/chartab.c | 2 - 20 files changed, 129 insertions(+), 39 deletions(-) rewrite lisp/international/uni-bidi.el (63%) rewrite lisp/international/uni-category.el (82%) rewrite lisp/international/uni-combining.el (66%) rewrite lisp/international/uni-lowercase.el (82%) rewrite lisp/international/uni-mirrored.el (80%) rewrite lisp/international/uni-titlecase.el (87%) rewrite lisp/international/uni-uppercase.el (88%) diff --git a/admin/ChangeLog b/admin/ChangeLog index bc38edfc8d..f8eb071d96 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,17 @@ +2011-08-23 Kenichi Handa + + * unidata/unidata-gen.el (unidata-prop-alist): Provide default + values for name, general-category, canonical-combining-class, + mirrored, and bidi-class. Describe the meaning of value nil for + decimal-digit-value, digit-value, numeric-value, uppercase, + lowercase, titlecase, and mirroring. + (unidata-gen-table): Handle the case that default-value is a + list. Set default values of characters not listed in a table. + (unidata-get-name): Return an empty string if a value in a + char-table is nil. + (unidata-get-decomposition): Return a list of character itself if + a value in a char-table is nil. + 2011-08-15 Eli Zaretskii * unidata/bidimirror.awk: File removed. diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el index ab1dcd134a..03399eae21 100644 --- a/admin/unidata/unidata-gen.el +++ b/admin/unidata/unidata-gen.el @@ -146,7 +146,7 @@ (setq unidata-list (cdr table)))) ;; Alist of this form: -;; (PROP INDEX GENERATOR FILENAME DOCSTRING DESCRIBER VAL-LIST) +;; (PROP INDEX GENERATOR FILENAME DOCSTRING DESCRIBER DEFAULT VAL-LIST) ;; PROP: character property ;; INDEX: index to each element of unidata-list for PROP. ;; It may be a function that generates an alist of character codes @@ -155,14 +155,20 @@ ;; FILENAME: filename to store the char-table ;; DOCSTRING: docstring for the property ;; DESCRIBER: function to call to get a description string of property value -;; DEFAULT: the default value of the property +;; DEFAULT: the default value of the property. It may have the form +;; (VAL0 (FROM1 TO1 VAL1) ...) which indicates that the default +;; value is VAL0 except for characters in the ranges specified by +;; FROMn and TOn (incusive). The default value of characters +;; between FROMn and TOn is VALn. ;; VAL-LIST: list of specially ordered property values (defconst unidata-prop-alist '((name 1 unidata-gen-table-name "uni-name.el" "Unicode character name. -Property value is a string.") +Property value is a string." + nil + "") (general-category 2 unidata-gen-table-symbol "uni-category.el" "Unicode general category. @@ -170,7 +176,7 @@ Property value is one of the following symbols: Lu, Ll, Lt, Lm, Lo, Mn, Mc, Me, Nd, Nl, No, Pc, Pd, Ps, Pe, Pi, Pf, Po, Sm, Sc, Sk, So, Zs, Zl, Zp, Cc, Cf, Cs, Co, Cn" unidata-describe-general-category - nil + Cn ;; The order of elements must be in sync with unicode_category_t ;; in src/character.h. (Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd Ps Pe Pi Pf Po @@ -179,7 +185,8 @@ Property value is one of the following symbols: 3 unidata-gen-table-integer "uni-combining.el" "Unicode canonical combining class. Property value is an integer." - unidata-describe-canonical-combining-class) + unidata-describe-canonical-combining-class + 0) (bidi-class 4 unidata-gen-table-symbol "uni-bidi.el" "Unicode bidi class. @@ -187,7 +194,8 @@ Property value is one of the following symbols: L, LRE, LRO, R, AL, RLE, RLO, PDF, EN, ES, ET, AN, CS, NSM, BN, B, S, WS, ON" unidata-describe-bidi-class - L + (L (#x0600 #x06FF AL) (#x0590 #x05FF R) (#x07C0 #x08FF R) + (#xFB1D #xFB4F R) (#x10800 #x10FFF R) (#x1E800 #x1EFFF R)) ;; The order of elements must be in sync with bidi_type_t in ;; src/dispextern.h. (L R EN AN BN B AL LRE LRO RLE RLO PDF ES ET CS NSM S WS ON)) @@ -202,19 +210,24 @@ one of these symbols representing compatibility formatting tag: (decimal-digit-value 6 unidata-gen-table-integer "uni-decimal.el" "Unicode numeric value (decimal digit). -Property value is an integer.") +Property value is an integer 0..9, or nil. +The value nil stands for NaN \"Numeric_Value\".") (digit-value 7 unidata-gen-table-integer "uni-digit.el" "Unicode numeric value (digit). -Property value is an integer.") +Property value is an integer 0..9, or nil. +The value nil stands for NaN \"Numeric_Value\".") (numeric-value 8 unidata-gen-table-numeric "uni-numeric.el" "Unicode numeric value (numeric). -Property value is an integer or a floating point.") +Property value is an integer, a floating point, or nil. +The value nil stands for NaN \"Numeric_Value\".") (mirrored 9 unidata-gen-table-symbol "uni-mirrored.el" "Unicode bidi mirrored flag. -Property value is a symbol `Y' or `N'. See also the property `mirroring'.") +Property value is a symbol `Y' or `N'. See also the property `mirroring'." + nil + N) (old-name 10 unidata-gen-table-name "uni-old-name.el" "Unicode old names as published in Unicode 1.0. @@ -226,23 +239,30 @@ Property value is a string.") (uppercase 12 unidata-gen-table-character "uni-uppercase.el" "Unicode simple uppercase mapping. -Property value is a character." +Property value is a character or nil. +The value nil means that the actual property value of a character +is the character itself." string) (lowercase 13 unidata-gen-table-character "uni-lowercase.el" "Unicode simple lowercase mapping. -Property value is a character." +Property value is a character or nil. +The value nil means that the actual property value of a character +is the character itself." string) (titlecase 14 unidata-gen-table-character "uni-titlecase.el" "Unicode simple titlecase mapping. -Property value is a character." +Property value is a character or nil. +The value nil means that the actual property value of a character +is the character itself." string) (mirroring unidata-gen-mirroring-list unidata-gen-table-character "uni-mirrored.el" "Unicode bidi-mirroring characters. -Property value is a character that has the corresponding mirroring image, -or nil for non-mirrored character."))) +Property value is a character that has the corresponding mirroring image or nil. +The value nil means that the actual property value of a character +is the character itself."))) ;; Functions to access the above data. (defsubst unidata-prop-index (prop) (nth 1 (assq prop unidata-prop-alist))) @@ -393,9 +413,18 @@ or nil for non-mirrored character."))) (while tail (setcar tail (cons (car tail) val-code)) (setq tail (cdr tail) val-code (1+ val-code))) - (setq default-value (unidata-encode-val val-list default-value)) - (set-char-table-range table t default-value) - (set-char-table-range table nil default-value) + (if (consp default-value) + (setq default-value (copy-sequence default-value)) + (setq default-value (list default-value))) + (setcar default-value + (unidata-encode-val val-list (car default-value))) + (set-char-table-range table t (car default-value)) + (set-char-table-range table nil (car default-value)) + (dolist (elm (cdr default-value)) + (setcar (nthcdr 2 elm) + (unidata-encode-val val-list (nth 2 elm))) + (set-char-table-range table (cons (car elm) (nth 1 elm)) (nth 2 elm))) + (setq tail unidata-list) (while tail (setq elt (car tail) tail (cdr tail)) @@ -419,17 +448,27 @@ or nil for non-mirrored character."))) (setq prev-range-data (cons (cons from to) val-code))))) (let* ((start (lsh (lsh range -7) 7)) (limit (+ start 127)) - str count new-val) - (fillarray vec 0) - ;; See the comment above. - (when (and prev-range-data - (>= (cdr (car prev-range-data)) start)) - (let ((from (car (car prev-range-data))) - (to (cdr (car prev-range-data))) - (vcode (cdr prev-range-data))) + str count new-val from to vcode) + (fillarray vec (car default-value)) + (dolist (elm (cdr default-value)) + (setq from (car elm) to (nth 1 elm)) + (when (and (<= from limit) + (or (>= from start) (>= to start))) + (setq from (max from start) + to (min to limit) + vcode (nth 2 elm)) (while (<= from to) (aset vec (- from start) vcode) (setq from (1+ from))))) + ;; See the comment above. + (when (and prev-range-data + (>= (cdr (car prev-range-data)) start)) + (setq from (car (car prev-range-data)) + to (cdr (car prev-range-data)) + vcode (cdr prev-range-data)) + (while (<= from to) + (aset vec (- from start) vcode) + (setq from (1+ from)))) (setq prev-range-data nil) (if val-code (aset vec (- range start) val-code)) @@ -669,7 +708,7 @@ or nil for non-mirrored character."))) (aset table c name) (if (= c char) (setq val name)))) - val))) + (or val "")))) ((and (integerp val) (> val 0)) (let* ((symbol-table (aref (char-table-extra-slot table 4) 1)) @@ -695,7 +734,9 @@ or nil for non-mirrored character."))) ((eq sym 'CJK\ COMPATIBILITY\ IDEOGRAPH) (format "%s-%04X" sym char)) ((eq sym 'VARIATION\ SELECTOR) - (format "%s-%d" sym (+ (- char #xe0100) 17)))))))) + (format "%s-%d" sym (+ (- char #xe0100) 17)))))) + + (t ""))) ;; Store VAL as the name of CHAR in TABLE. @@ -707,6 +748,9 @@ or nil for non-mirrored character."))) (defun unidata-get-decomposition (char val table) (cond + ((not val) + (list char)) + ((consp val) val) @@ -747,7 +791,8 @@ or nil for non-mirrored character."))) (aset vec idx (nconc word-list tail-list))) (dotimes (i 128) (aset table (+ first-char i) (aref vec i))) - (aref vec (- char first-char))))) + (setq val (aref vec (- char first-char))) + (or val (list char))))) ;; Hangul syllable ((and (eq val 0) (>= char #xAC00) (<= char #xD7A3)) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 38c536af62..37fc5eb1a2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,21 @@ +2011-08-23 Kenichi Handa + + * international/charprop.el: + * international/uni-bidi.el: + * international/uni-category.el: + * international/uni-combining.el: + * international/uni-comment.el: + * international/uni-decimal.el: + * international/uni-decomposition.el: + * international/uni-digit.el: + * international/uni-lowercase.el: + * international/uni-mirrored.el: + * international/uni-name.el: + * international/uni-numeric.el: + * international/uni-old-name.el: + * international/uni-titlecase.el: + * international/uni-uppercase.el: Regenerate. + 2011-08-18 Chong Yidong * international/characters.el: Add L and R categories. diff --git a/lisp/international/charprop.el b/lisp/international/charprop.el index 919666010b..2424e87ae4 100644 --- a/lisp/international/charprop.el +++ b/lisp/international/charprop.el @@ -29,15 +29,18 @@ one of these symbols representing compatibility formatting tag: ;; FILE: uni-decimal.el (define-char-code-property 'decimal-digit-value "uni-decimal.el" "Unicode numeric value (decimal digit). -Property value is an integer.") +Property value is an integer 0..9, or nil. +The value nil stands for NaN \"Numeric_Value\".") ;; FILE: uni-digit.el (define-char-code-property 'digit-value "uni-digit.el" "Unicode numeric value (digit). -Property value is an integer.") +Property value is an integer 0..9, or nil. +The value nil stands for NaN \"Numeric_Value\".") ;; FILE: uni-numeric.el (define-char-code-property 'numeric-value "uni-numeric.el" "Unicode numeric value (numeric). -Property value is an integer or a floating point.") +Property value is an integer, a floating point, or nil. +The value nil stands for NaN \"Numeric_Value\".") ;; FILE: uni-mirrored.el (define-char-code-property 'mirrored "uni-mirrored.el" "Unicode bidi mirrored flag. @@ -53,20 +56,27 @@ Property value is a string.") ;; FILE: uni-uppercase.el (define-char-code-property 'uppercase "uni-uppercase.el" "Unicode simple uppercase mapping. -Property value is a character.") +Property value is a character or nil. +The value nil means that the actual property value of a character +is the character itself.") ;; FILE: uni-lowercase.el (define-char-code-property 'lowercase "uni-lowercase.el" "Unicode simple lowercase mapping. -Property value is a character.") +Property value is a character or nil. +The value nil means that the actual property value of a character +is the character itself.") ;; FILE: uni-titlecase.el (define-char-code-property 'titlecase "uni-titlecase.el" "Unicode simple titlecase mapping. -Property value is a character.") +Property value is a character or nil. +The value nil means that the actual property value of a character +is the character itself.") ;; FILE: uni-mirrored.el (define-char-code-property 'mirroring "uni-mirrored.el" "Unicode bidi-mirroring characters. -Property value is a character that has the corresponding mirroring image, -or nil for non-mirrored character.") +Property value is a character that has the corresponding mirroring image or nil. +The value nil means that the actual property value of a character +is the character itself.") ;; Local Variables: ;; coding: utf-8 ;; no-byte-compile: t diff --git a/lisp/international/uni-bidi.el b/lisp/international/uni-bidi.el dissimilarity index 63% index e7682c6d8ffca6a2c50a63bff9ecac7beea60f8f..9fa7b53b50873adcf2df6fb4b87cd0ce4770c52d 100644 GIT binary patch literal 7981 zcmeHM>u(d;71wo=^)@ZeDDw|onGa2*IPuttAMhzaR$3_}D9M%&JS4}SBvu_yWIK!a zM%Q_e2T7nj!}8cIutf{2u-ihR1*ALwSbyi-8RxxbVJlU%a^`XGdEWE7XL1i8mPehb z^QHXwL`Ak8ZI@O$ZAD_yXj*e?AC@B%`LZ0#7i@VhQNuum`?Q4l!ht3=`$>~pZ!tq^##A%H zG@DE_6l!QNg{i6yxXlW6!xZWsu8U#MW8r{MFHOwMn`%V>X+@}6Q!U`_au{3YIqfqd6cw}l9*pY-e_ z;waQgKz(nhg+Kt72xy9c0>c?7wScRNYnE}U0rem(V~~hhpGM0A}%)E-xT|%dq#T}S%4}nN1v%CauD_cZD zGW6FnN$%37PNdXpT+6r~nrbdY=4Vp%h6T^kovG)Eib=1UaG6H>7v@$8z=HKU-9Oc& zZJk{N);x0)>anJNW(e?}hw5Ylw%oI=kU3u05*#Vij~Z~3gxw}n8x*SQCj;&z5WK?J zP?6OK@U}Tf`E6gAdnO^CcDq5e%LKbkz{VqzUB&qutOaZ>e9A5ii+>sl$EA5Y*kB5z(eNVZ2jcZ z=HLD1w=E$mNvkcUT5m;_!z!B8TmuwsP;&dJwT={~^%)5Kam7cM9`-Ar{& znC@NAxF*@+7Q79Mn3|QTE;gvE!d)>HJYL(4iOmyG{+Y#@6ndC)mq08-y#$U3PY53W5cs9*iSJ6!o9#k6w;99s>qdfJUI?X_yv=aS(g@dhftoeg}?UQ z#}lhig{82mh5LdBx|AXAL3Pjc%%P3)E_Xk^tVBG8?&-aLdI_{hkN%AR;x#PsL@M#V z%zc%-mZv+KipOf~ec=Dt^NjB`s`$}8tO1WG6zmtYJ203gxVE_WP=63A7bz5V=x-MyFD_h(1;zk_}cWjLT7p{t{n2i>oPx*Swb!!n5< zCe#~B<24_SDvRdrId-KWyeGUSfOlfr$gsgIpmw&HEy6_oUkI6|F7oJX!Dc3if*sVY zRM34bL=&4EeJ>Tq*#j*HT3WC#fD&~Pbxq$#`3O`dXguMaWupjBrvt**D zC!X-_!SA$stP_&on7ZO|c}E3Y7VbB2RjoekvUH4l%m4~lz(pCRosOb~+GFg>)TLry zMl(8N1c)=k(V44xZ%FhW5BGkfx)&fE{QNvgq!XwbP!7@Z+)${b*lw?SD@9PLXZ}9# zqMq*W#<~z+U^1SJ{R#o6!!4Oi#XhurT3gd09kr|vE}}b&yk$ju(4*8f(a&RSCYfcW zlHQg?x&9qjkA)`G2Hj84Sa(_Y%9#-^DgbT$Utu00h<1>o(R6QcE521L;&vM-__Dz( z+7J53L!r?_YG-J;*idUO_Se{VH+KQ`D}oNveeavx66qv$^3?dCTDxn!GzwTW0IT{# z6j`~-mqNl&gSRByzx%OEq}1PWALk;mxzcjTgTq76p_N15b=mI$)mv_-P+5s|8I8~P zK*Gm|NB96EbT(+zZwhsjE#>~xYwQ48!&M~?%mr^$(1{*Jiyz!HaXDZ!o1_zW?56uS z-C^x-WDThm9xHA|lY7URP8TZ~i~ekn;I$G~GLE`XPwvMK-%R7JIkMxu7MaO}Rj01i zjGIiy>Sx3bIUk#`$+$Ixq%0)$N50^C>#GxOKG;j-bgbuB*r$A^J55hQESa{FJ<)Ej zk?{uD7Mk#HizeztKt-jP|J8>&ypzd0j`!2SBiH!_Wm55I-Okc8PPDtbJN2O%<_BlA zI|XjE6xwC@)6?;&bvhPL^q!7IlVN!Z)3U9tUv|oHzdcroRGi2Vo$H0$Wn2GH z->!MtH#utOa{1!8#u(g1`GB~$%G|I?cC?j;9h@(f1)64wznznF1%G{4Slan}h)IzuO9vD7O%mhIP(IWwWq$_=rQ2YK9O{4)c=Tfe;yXxw2UNs0jBBI=1ics?#R%GTKyO?f62p_Y z1_#3JblBYQWRVDe$dvMQfD190!wE1XACl9Ru}F$0icVzodr|v7} Y4mA@Pr_>QzS*Kl)b}?6$u%g}kZ}A#kng9R* literal 8719 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 diff --git a/lisp/international/uni-category.el b/lisp/international/uni-category.el dissimilarity index 82% index a4455decc5292b66a0f9ccb773dbb4227d7335a0..94b7c18b6e2f99a8be1aac32cd9f2eba9f187679 100644 GIT binary patch literal 12759 zcmeI3>u(!JlE6WRGxCa-m5}22?gR`5%7?Q7KSb*7d@|%L5Ww~dr}#eDaR6GPY$6h= zlc+WPZE>WihZ9@&`V}YZB%8-Nmw4^nOR{&ncL~t^$L?3vGZZDomgU%o{Sa_w*pKS! zs_Lrhs^;*u*MiaV?4`Nl`3sd`-{}4zJ2H|znCtBw2~L%Y6XnUmf#8kO#G&@rUJKs5 zP@E5@iqnPQVtzh2Unmvk@|D75Ff~`62`U!~(THF&U&$-re2}lm$P1Oq?2*HVFJ8QO zXu)DVRGvG3cx>U^baCSFsgrLUJNo9)!#c@$p%6?L=VuQWOO?W0DPJj;OZn-;|ML3L zV<%n@rpj|V(?pZzd}%V6EzHdn=jVY8O65v%qHw5v-(+E`SSlQxxR9SaC~O>@oht)Z zxfJ}frF{C}1k|4|&s_>$efvybZ%`^u2V21pR`TcIxc$|)0SbD9+~5no`hx6mc;$N6 z%h~=QJD}AOeMVp-!PZZR06=?Ld_i{SA0}n+K#*f>PM$n={1MV21nNhS-C4x__L(fA zl<3d9`rWGEhO2yQ)fwHMekA>7PnZ$x=A@0P0aZD}tQarpi zk+G>Ns1#DCl3GkDu%(?n&5|WfkO;})$NWiIGB=#K`5%-sugqTaV`e38J{8ifP@0oPliF{y7>lPV zT0lV-Gmqj%r`ZU(v8Ir5&ozs?c5Uo=>e@!Y$I!PCsI_J(Xl;3X**7aO^93SHnYtf0 zAIVsh*-v%&rtX>t9d63Cmv5FG^MP*`9fX_m&1C`YHZ|W*OG8&G<-zpjl<%ifj`=v@ zm{r%@{DoOfnVRFcj=3rWoW_lm*zVC#v5>+(%EV4(FpM_^Lsir+0G?zv3pJLW%i zr1=8$j&H6g@F%WWNhG|KsV1Pw0^9;uLfTzgSpY~eR~i34b;`c^q$gm5LR(C=%`xA( zZLZU1s;*gXGc~uZO$ZaR-Be2GhJ`w#mjt;_H|1r>afGB>(&0mm7>w_ScqjqJ?b5T{ zhV}ssW3KD_LbcP?l{9s)iw=v_6{K|ww~m!Ddiky|-#$Vu8( zTM(|uoEy-IEJ7L=eV17w5jK2tm8G%7`A~J`39Jeu77Jn%oS%OiSvA)i-Sx%ZI&k`A~?`A|IHn$CoLKLKl_=UVBA)lJ8tD=4HN6>r; z?ZN`nN8CVwD8_PgunMZ`A)pon*M$Ld2Ub{1(YGZUn7XFeUX}7M*wl4pRz0lQbN6)a>BN?FQ9gqh*Ia3nAs8gSgvG&(LHU{Qp*f88J*;@qGd1xl zpZD0fCKvSgjtt5~<}0KQ;}C)LWd+1r;I80NYcfMs#O(0EG(_Bvbx&|2AZ@rZr;Sk} zJ7bO|(q?Z9J$b+4+n z$oW$|;Wwc*JLXFigI%Ce51o!<-S>bN4qS*rsVsKKd;u0=PmooG;AP|_gB~!!>t( zL$LGSE)-~&*dF_)hF3T@9BIt+G`Q6VEgoqK4z?bn%mS~L zv(|3Z@8NV}@pe;7Vpo9R?9*w`1ErT)qV^F@RJA1j#-_?Wah!V^jOK<6S=!U-HLg)m zBlFA$Y4g5k?x%@`%=OSsd7|dDUPjrIcK)RK&}&>tnp-_VPQ>b&zkp+f`@6J_Exg7< zYHMM??=}7)yU+Ru!CCp;@XXh+u%{EE{4^o!opqpeh=4huz9+7tUhiHnrOgjgNt=&( zq+5A?lr}dJ1Ntcb3vcvA7-`1LLsaDWTYa*KAP{dcoVnX1HH=S4<@zrG>^~y_V zVAA@ec(@&Y$0m|sC%K|NRe~wmRM_X9aJzP)M9oF1t32d;r6ZNxEy%J1RGUD zV@wYX_8RZ&(%YqN-15y`PXoZFHDz3@!68;cmyf3 zp`u@+d>>(ytEg#G;vO}SmiiAk7dYXPaAF6aDBj5q_6_&%WMB)daLMwmdX3*i(Zs;n zX1_fj>Khy$d{+DsJK+gafA4VLj`?ho6Crz1-(+}yuh-dVu_d^bMAR`i6Henlnv2#H zl5~ly$K|OR-VZ|v5t{V9D*+suDe(p2*o~bz5Jz?mOnsSDS2vi)4VOfvQE%6rSe%kwxV$<0Is=CIw2xuoLIZYZ68VsML>R=m{|h8%akS7 z6#$6=HL?tYMN-WaE0)m6Pg9vNb@);e7l|A-IK-n0sgg2lc+Cj~$;z4>HLyE6Orq0k zGRG8>CBh~T3A*n%j<`_kd+={WKh4LwuWo4m;5U9l;LfCar6k=~(#SG58J=|%)=3QX z<@$#=18k~``dPoo4gv9hQkr*Ya%Y3wNO*8PnC7n$Ii#*CH|sS zW0;2YtlHI;&Ujs2KG6$j-E1P=cpc#_bXM75aA2TsFj_1vs|RBIUGCqi9N9Z5U-6C2 z-5P&m`xMGK6@;mzd7!>*rQLk18?2@`?6X9c?6O3!-+1N$DjG&j*34A39$LxE-iraV z8DDG1eA<2Ut?jty!z}8EA}*)eWu5V+1XSjJT$U+ZI1*3M{sxicRz($VL@+S$wVrU` z1t{P4Q%N~w!HyXtK)38!4HKeXi^MYQwzf-RDi?>s*#?Bjv5Fi=5kuHKz2+(=5=IhD z(!Sp%lca+oR`dy-p!JqS{T#CX7CaOp0L~@MU$kOLmn`z*Bn!IU7HunoBZF+rJ#nnw zG2go8DtJ}=H`MmkHtj_yZfWT$@CXGGsn-%xI&dqJ#?hge<6 zYMe5+MF=NJ5g7e32AFn{a-(J$){bWnGV%J8JtR zR(Iv+9!?0jAxE`kvW5f;3jM}H>`W9M>E^` z^|VPMn01oqP=kw^)wuakaKF#*gmTwyQFr>dxw+ob(y2q^B)d&;+sV&czc7E^UMn^z z#l}U-4UP=S(JCo1&cSQwRAlP7S5N%7hacxbHpFd%jijXIclh6e$5&dC)Hjiqq!q5nBj%@CIarJE__~NF1D$FA1rfh~0J34BZ+3@6H(}bg8tF|o+czSS`_7MGejf5%B+%5G7T@y> z&h0r5+471nZ_);@p4s>7{Pg~yXV+VOz1g>NeS=5e%JmNQ1ZQXt_U)4wfDZ*dr`{=* zFP3`t2m6jMNd0)B!kfqkf>X1+KRl72FKCy7MqS6t7hAe2t)t#7R;CNhQ8TSwC(4t> zsbXPH@s(S9e#P6=+I*rU%_s76?;HqDmP_-q`H5obybL%ovEDOon|YIa=3KE90Tk8& zUN22dm*>NdlatbMa$)A2aCNLOQJjJOW5x5uiXc9zoJHN1Lv2?IqxL3+V@k)^LTRG1 zpf775fQ(Y9Fi|Nh2V*+hhW=yu`3r(^Y+eZ2(Dkd?f=Yf&iQmvQ3I{6svEr6tZ9bK54E0iWK z2_xh0$ZSzh>#~mPEKyH$g44?Rcwsir8}wyXK~_)+KdsVl={e3@>@vscS)F5j$QWbK z&*f*8wo#=`@vHnRbLD9nHL7w5+kaV}o5|}MkLvtk^EjN8&+{(44p4%_p0T;&uW1iX zS;3F0GKPI8%a!0L@7$j+6()Q3@8?|nY;Z;_2%|a9vl1Mi367ToG#FJqQ3y~wRO@6p zKx0q}7N13CEyt#Uv2uXOkuQQoVn_!uz%X3F0K|@#gV7RuQ&0Gxgz(P?yssa=!hfiJ zEPA~kTV5yx{8OP^Dg@;z{kyE^!_%|9_5Doh83(&T)A=P0!QA3l71MgRZ+ literal 11396 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 O?H5WDb3P(RA^E>cXb33) diff --git a/lisp/international/uni-combining.el b/lisp/international/uni-combining.el dissimilarity index 66% index 227b9d0af79bdce4a97728e4838bed5d69fcd978..1437ff9acbd88a1036df3dc0de61b0f21a503785 100644 GIT binary patch delta 1308 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 A_W%F@ diff --git a/lisp/international/uni-comment.el b/lisp/international/uni-comment.el index c9743064bd4751703bdd5e1a27e84305743e0f5f..21ccfe3ffe796615789e624a8dff14f3d24e2dd0 100644 GIT binary patch delta 358 zcmZ{eO-{ow5QSBXmQ)B!RALb!Ws%S>5Fp!QJ8IJ`y2AU4F2Y;|^$=MiaR#K`gd4Ep z8oUXu#DFM1zfwWAZeT98S>9Hr?Kfnk&78V~*$6a;|LhRxhX3pM)C{nfk{j ku|s~cbB}gR2_2ruT;0L0(QEpr$(t(6{%f*1%+DXx56HJqSO5S3 delta 322 zcmZ`!L2AP=5X7Q!5<&zGxToTSlVfP4T}iIv7y`NI9@;}#N*+?kBYfzsZz$v^{Y3uI zQ+FK z(87c-q=FD_%-3U{a3HYukr5I&FO-15)AfXakk|PpZ)RiP>bv2&fIH3E`gSsQ5$Uf`k Uc9&-DG5u=)(rr?lUxzF84@JU9w*UYD diff --git a/lisp/international/uni-decimal.el b/lisp/international/uni-decimal.el index 2c424ffb5ded901d92b381119a6f1ad3386c9617..096257add209bbb8d16621e3f7451b12fb2865d7 100644 GIT binary patch literal 2710 zcmeHJ%TC)s6s7d-uedUcf`ng5FmbX%zyhg_Pz!7VsRnzJjO2`?@q~z7S6x>9gs!^o zH_#vJTu;(uYy#~9i3N(H*!OwvV{{(MoD5kGeU?&~k{kw_`Tb?(aPTh%)>Ski# z9ZxP(7JH|iql3MZJ+DaeiBd>eKK2-wRB$3$#!2dZJls3@a0vZO6q(|`mLhHyq;o~m35AVb*9Xp0s5&^3 zT&kL_jb5)?2mir80o0%l4cLJYcA*Io1R5H`d-@tZxKM-ZbptgM{H>|qr!hUk6}eb( zXzca1-#?zMKY#J^)$2EJEgMkqYgynIqA#XM3x6&P(eW_|G_>z!Xl22TQMIqvxCRYB z3abUH+HQ;htM8!O8d~;6o3D2Q#3B|3Yd3dWBRpefm|$sQC4U2abusig#zq*1#sXnR zvw<@;W;QytT!-GSlDcG%IWdS)PYK8Zv&I?*jYi4DKzqLq>oIWo7xRlP+}Wvzv&&6C zSHrDrN7b|N% zT7}O<`%rJUu@E1E;vc??cR0S3n1EUfdq&HEPexR*7&L!Te5W8aP>`A}*E*il9j#Z) zjc`CtHJ}1~*NwJ8aVeF@wN4au(^i-^mx@v;o~N`O(t&fkqZ55TL!xwUyY?1Ry7yU3 zQaB@mAv?-jC{sL(@j(kFvhOrez%%FaS}GQnjmC;MwxD2xhdgOns8(Finc;S63Ka7W Hsi4*$&EjGK delta 63 zcmbOxdX{g47NeRH6T_hmj7-cdtZeKYoLou@%5ibgh6)B?+6YL46-++Ep)~nCtH|a_ LEXk~sjkr<(%cBp> diff --git a/lisp/international/uni-decomposition.el b/lisp/international/uni-decomposition.el index b0bf07bbe857c03aa47b689fbf30596df437d15c..b9660cdab0aa2724492461cbf7414e9e80e5d24f 100644 GIT binary patch delta 355 zcmY*UJ5B>J5VfO7tOGkhq@{?I4G2YofMEUEwFpX;6s8FUA3-z+*xeIQM9L8;dC1NVY@a+P7%5_ML_&q|ueEEF RQE@nhlSx2y?B`eQnm_1dPvrmr delta 284 zcmcb3k8$-q#tr%zDpoN@2FC0R96-vP!y3fVXXJ=6HZb!55n&(!vB?P;HJWC|3>>^3 zF-C@lVzM#DMh4*^sTgBJBL+S>Ak!q7flnSJR5+P6(_GY@flonBnGdMa&?FSB(#Y6w za$u$k!r5;e5VvNmAp_Xw>=FU=ORGn;?C1u3NsKqD6$ra_H#|u<#4)%mCkY!rM$O&|? hQ6z$G906ueo}87!Q^Lrn$*1806fmmX%$e=M0sxkZKz0BC diff --git a/lisp/international/uni-digit.el b/lisp/international/uni-digit.el index fc52fd8c28cdaceb2ffc58a845b9606b588ac12d..efb78b0e43dd04993b15f2adfb604bf732ca2249 100644 GIT binary patch delta 740 zcmeAcydu6qiII&c4qmW+&N`QJ?AsML(Wr;bZso?ZjT#}fVQml{$l=VyWQ;1RWE6q(U%1n+A11X77 Jnykr@1OR>n^I-r0 delta 66 zcmca2-YvL6iP2DriQ&)&MkZz!RyKAHPA(+{<+!+LLj?mcZ3Lvz6>N@YxyClRh&u@Y D#orC3 diff --git a/lisp/international/uni-lowercase.el b/lisp/international/uni-lowercase.el dissimilarity index 82% index 41890018204a9776df7cb6551c78bf4f88f98004..7afd9503cb3e84cab181fbb14bcb908460f46049 100644 GIT binary patch delta 403 zcmd7MKMKMy7>8lHh;$I8E;@bapImH~}Z%g!n%AtWVnuD!;+xzGs2?FaBjMZmCssR+MVm#Yx|u zMT!nG$yK?et&+QpOe75kMRIL&nb2ORd!^0s1JjTsts|*%th61M7u0WqVw0&PEKbev E1sw`$2mk;8 delta 94 zcmbPg^jLF)5~HsYqhn%Ha!P7idPZhec1~_yenDYTaY<=ec|~QFl7ezvT(qHr0hl%d R()g8cwrAxNp1fWn4FDJPAngDE diff --git a/lisp/international/uni-mirrored.el b/lisp/international/uni-mirrored.el dissimilarity index 80% index 006cf575591a146a5b0ce5121703c445e3979644..e650166c24c23f60a327a9d0462d5b44a9a56fd0 100644 GIT binary patch delta 1011 zcmbVK&ubGw6lON$$8KT?ZJHX>#z|_hAhkQ2WRs=RdJ??|0dJDZTDB$_o02Aq7ZIs7 z6jbb^qSiy99t2Mk@F0S8_vk_EkDG}47wARsBEFgYJcx*d&Aj>E``-7xnR%c8b$p8u z286_X%J|&e=@eCASIN6Hs=*gI>DDO2Xjd`1(e${$5N8F-DU7OO)o}gS9+AEt35nQG z@VhM$XC=Y4_HpRBWUmnCTB0MP(X?vl@IA2KyD4Gmb^;9^fPrBjyz>mjo*|Z?oOqLG zpNiPIiu;$?0uFjNrqFTU4@;fLl6{NVYu#GHHIYt`whAuaYkwaDX65LFa~HeyX2&r! zEteCz4ar_ZrrjXUBR<9qdXr&PnTBt&4Cj@f@L4$rul#XbC*fm2MLZ5Odvdr2Bizn? z$zCP)bu?f<;4+BW4ak#WKSCUR$VVv+MB%M6%O`j1hMwZrb5xweNN^B7DJc=xf??E| zLY;uyP#F_d;X?NS_|2hvre+M03i4D3%w=vmd&W?wvX0^i?n*+ zT%Klq?-k<08)*KB+#ntd3fN#*IRjs#Z+cI7Cuzaf*b#S{;j4k2H)M=TeivzP?@lP170X4 AZ2$lO literal 10452 zcmdT~X-^wjx~}4WX+^rfV7`<*AG%w2lGs34(pOh%_4J34?rn``lUl8e+5soAMC=IY zX|+aIGGU3UiX{*r1Tanl*rqD!?1>?eNaa7$^Y{nw7v_1-sWOJpWa*hqkD->cy!&$A zs#BkQVttmq^j&}Y{Dnd5qt8CJ65ZX2GlHtn;Z%sy{iH>b1`GXD?cV7g7;~)tekls)++ua!?>I3=Up8ee&eD-+p`I z8;$iuw*UOe-+ptpFWqzUk6--e*Ps63)02wG?^7wOFFkPSWI8jL>dzzx)7eb2@8s`3 z|Mb`Y_qla0+pj3~G0nW5C*}-&A>cp{+dQ<1pnbh%~3(5ZDBF6Dc z{aMZ%{LcFDV!FRS+fT-S`RA|VRwmtNy*lgoVDc;ljkTCTrG=-N7L(^?buP%+j1m0L zUnQ)#y0-Fq;k!s~UzGjK&CW1S4i}#W2~PHOyK;&r^7fz&3-D z%;b1bl-XvGH%!wA#?0WE5#-Ha$p}V6OlB}5bLV-g-4--5eUd%f()~z-KQw|#GkC5W z-^;)hk7eG(v^Zpq^b}`iFwFZr$4r?xF9T#W7!E1f(a4CfB7%q%qiSvwf-ya^hk>)y zzY==1F*+=mjo^x4*Vn5}SZu-zJ0TYhN>126OtMBW6|%}wDjHllDv>qo4t zOzJ38=bIRcChwsjbfhBkC>VHRXNW+Ym(HfeiJ&*cR8fOmh!N>i3goJi<4P0MjOtm? zgaq=6bSR<6L?Of!%ut3<(k(SYeQ!QGht}9$Gbap2-Iji#|-W^0;?u^QZnkWQ@1xYvc}M@ zL*@vDik>$e4%ZaFA@HI|R->h(NY^2_)WRSiHfz%wRHUTlTr;??0({m8#>qK*sS7P? zZAFVN4&Z1gp-nd+{srCPOW@bWbfch5qa9G4Rohd#)HCiVl_?GbSB)}7h*l-^YeU3d z;EnE5bTqYKQgzidYU)rxNLsr)*?X)#Mh{fgz?3?xd}GwEn!#$Ai)v*fn4{(!hESn<7{1%mTJ$)CfpGy5*7X-?c6OmG%GD$a7%4rGK*g*}p1Qn$; zj*%@{>J&I>>o(!ERXx6ywaa~cUWl5EU@KmBtC1=gDjz(E&k2*9y zEsnT@Fg>Zb7n~|Zi))#+8*(ruSNxGM#{^ZI)gJF^Yi*#927fNsINk6){GEvmC(B*@5N(K2bY!qxWTIkP z6BS7}SA^LE`FlZ?$GrQmqGpqTWU(}vJp)0D`Ij+K%3B>g7~W7WbiRp>IGX?HyVS8skv1_sTMI= zZ`fdgs4CUQ05dh4tSd~!u031VSNm-(up$y?-%*aw+LrfHVUxCARhE_D>X|F*Vj;^QAx}{q%~3L~ zS+`Yn#4{HkCTNX>cH+7#=zwsp4d4;LYHFXC<0U=0(nczY{C4dk6&t*<72QMn@U7C6r+26O~=#}f&8 z3P1WUibtWg`6K*mtb#{lP9)-|bVBn0S^P8ODxO%Ie8R{8IXtRfkS4;(*e}2#S`2 zlKA5zs%TBqm=kUB2s4ZwHdR6W@U=Q=lDf5{yR$<@rdl~_I`#2ohlHpOdLb>PO<3jV z7?(KSQdum7STbr{Qo@wU_@X=NT1ds0vXhwjmU;_7@uP<$O=+Fzm|CXsIxVGWYrTEM~Tih=8ACTiTwZPetoT;Ua!ghGxn;_BSeofRHCyZ zaUlO4glZ_av%B@p7yg4--oAafV%{FlKNLcg+fYaswfB>}?QjwQt$O#CkVDyyhQmPa zZawvuOBa`i!x2ZA4~`0@gw>tsJQZ&bm!PmA`OFAb)I*~UVf)AEhu}KE z$VgXP{I&IRsGWFwdwbVU4Y9~O{pe@fuo!g-|^4 z(_(usPb3m;-S7N<;osc`n*Y!eZx~wd7?O?ME(syo?D|ShUszw#2V&tKpLI6fo3~(`C)roF%VTjYTM*p7>Sv`_}k+0 z-xm4I{Vw2#z(g$Rcl%~Ha$Cr4?&%LhV;JIQ?g1v!+r+)DeO(yRoKsAZ^7Pyy$$;%YT!u3WX9Ug_IAd^ZIC(fO91#!BRX9^{X5dUKu2AA0b@+p`3g%;Zn-i3QdFg<{KAMO_1=Ww^# z-hs>aZEzpLeFXP0+^2A#iC#XyxQ+2V#$Aj@=4~*$?*`)@#y9pHZ}t0+yOG>Os#N;4=;qcn@sHI(L2nnP&;C2mR_`Gd0%j-xz; za*o`VM^WYrh(`BSl&4UhL3x^Eb12jKQNDrl0?JD$FGdqzxgt+RpuCAP9TMdol$o-a zOHsLlijT_osN7XRs60XCv4%%w2NfNFuOK|wfsJ)+tR3uS8yj2LV8+453vBGbK^`!T#n0wed^@Seka0dEI>4&F=nm*Ee=AAvs%e++(@ z65&t6pMZZA{uKNf_|x!b;a`J44?lD*hA&_H5UaBRrvk^92Alp}_zb7;2fqsc8T>8y ze0|pJS*R4=1CimDhMRR>j@mkCtIBV_uDY5`U5JfnIG)tjiUqIw(EbyU|- zEu&gObpusywKoxnmV1C9v+KEhJ?GYQPCYkK&yCk}Q}x_rJvUv?F|pKhbM@S8 zJ$JpHo3H0?)N>2<+)_Qq_eV`w-}n8Qw<4%(aJ|p)zL}1hU+!)$?rz@L-CW+?T-x1S z+1->ZWEi`f>${tLODG&Mk?wBWyW7plOPko(-Cp5ABmekscYB9Z4%S5b=kM+mjNP3j z9yfP)ioC4u?(owE5@#{{zLoNGqSq+4l@|0zZK9R^75?$PY4XKevWH*T4IEzRH^y1j zCkL$y{NPW%@axI;_ooIfWi!1}uJ55sUre4){puK>2}CRMm0l*B3CX2;)%SIZnmh{d zd%*wA_9XkPKPCIq@|E4dY3bufdc=9!`eyLl@h<7eWRIWyZjhhwWiMXhM~9~^^(o=! cncmaKWSAckHVB+Z^;xM*?|^k7)t@@{cOXG?hX4Qo diff --git a/lisp/international/uni-name.el b/lisp/international/uni-name.el index 7fac18b278d1c25b3c88f1581417355d3ad52fd0..8b6816310672556fb0205b845f2f71fc6edbcd7e 100644 GIT binary patch delta 365 zcmZ`zJxc>Y5M>v^JH!R;f^fy1ScuB*&h8z_JYfe*hdRMCpu%Y z_3eQB%cZL3u9FW_vUF9O6QRSjiQ+R3frFv%5#`a$vb-K(q++6(Uwb{EI6LYCgbDNN?#E zsq7>(b4fYGjT%=sd1vN%`Nx6% ohmNv;WKuay26^n|xl9QwDUrFn=pNqTr90iiHB5KQE&P1{0!zJ7RR910 diff --git a/lisp/international/uni-numeric.el b/lisp/international/uni-numeric.el index d16e8c00870fdfae6023e3fd220ccd50152b2287..a1865f1fb233ddfcf21848c56a60edfb5cb6d8a2 100644 GIT binary patch delta 745 zcmaDMvr2h`3L_hra$H=r@#KlDYLgYXZR-scj1-I&OcYEN%oNNOEEFsi3=I_WGIQvJ z>*-|?4tv~4^J%OCDD(^!48XJzkRA zJvX|rjm_L|&N=tz>$!M(Dc%P<5bxY}q&IT`N{@vwyPIQhSBj4gz-OiucIjc}>6_aP zjmpB&Ay57Y4@-kqpX=2EmDl2lPC!9?h$<;0)VLEAQr*`>JwjHivnySc?U*qi3ekLz z$`rC4vh6jnx&K|yJlptq;lPFFaDwgc^7*x@m9a}W?(f`A&(%$V>~hiWCH$Ny%|AA) j9jl#P1+-&IT;oY1?G@|}y>7aUucm3Hk9fO1OrNJePm@wk delta 338 zcmZ`!v1-FG5Je_KLWv+lGL+&W&J;?K?sPJV?ch;+Xoqm05(xPQPi>*!P{{9e@6wOx zor57u2Hicq_jLDk{xE;<=DYUhcxnAt_VhAkaOIeRoBV@4O>dfbgdadM4dWDLPD zdU%k6yktb5^6f-A92mTx2||WIN-2oa!$2sAd6n0BBQ(j0cB_k$ZIa9vvm=?0rP4km zTPIto;q-c44`naQ1=MELClPG5PpfBT=b7C|${}vlxVkBLyO|U>4(LBL%I?UhGR+5h b7Ua21p@WpjT&%kteRe<8n&ss&{x1Fjb5~5F diff --git a/lisp/international/uni-titlecase.el b/lisp/international/uni-titlecase.el dissimilarity index 87% index b8098c818763cc523766c49600b26ea951afdc67..517edb20445e18a87ab8186e98a7e932295f9b41 100644 GIT binary patch delta 337 zcmchQKT5k*}I9)^RG)=U@ca#iY*a?q)3M3 z$O0)4iwL4fi5fITGc-pRXn|T(P(@2h6Tc6RPo|d?!^GLh|8x7+&+g}UbOYnyN9Qjw~w!%e?VYRa7buactm8Bl7ezvT(qHr0hl%d R()g8c7GzBoo_s?h4FLBz8vp$|P<;qbTERan-w^~2ctxET-Je?SvnyN9Qjw~w!%e?VYRa7buactm8Bl7ezvT(qHr0hl%d R()g8c7GzBno_s|j4FL2k8t?!B diff --git a/src/ChangeLog b/src/ChangeLog index 85a55b2b7c..5b4e0023ac 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2011-08-22 Kenichi Handa + + * chartab.c (Fset_char_table_extra_slot): Do not inhibit setting a + extra slot even if the purpose is char-code-property-table. + 2011-08-19 Eli Zaretskii * xfaces.c (face_at_buffer_position): Avoid repeated evaluation of diff --git a/src/chartab.c b/src/chartab.c index 0cabaac4cf..1d4ac04312 100644 --- a/src/chartab.c +++ b/src/chartab.c @@ -589,8 +589,6 @@ DEFUN ("set-char-table-extra-slot", Fset_char_table_extra_slot, (Lisp_Object char_table, Lisp_Object n, Lisp_Object value) { CHECK_CHAR_TABLE (char_table); - if (EQ (XCHAR_TABLE (char_table)->purpose, Qchar_code_property_table)) - error ("Can't change extra-slot of char-code-property-table"); CHECK_NUMBER (n); if (XINT (n) < 0 || XINT (n) >= CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (char_table))) -- 2.20.1