+(let ((tbl (standard-case-table))
+ (i 32))
+ (while (< i 128)
+ (set-case-syntax-pair (make-char 'vietnamese-viscii-upper i)
+ (make-char 'vietnamese-viscii-lower i)
+ tbl)
+ (setq i (1+ i))))
+
+;; Unicode (mule-unicode-0100-24ff)
+
+(let ((tbl (standard-case-table)) c)
+
+;; In some languages, U+0049 LATIN CAPITAL LETTER I and U+0131 LATIN
+;; SMALL LETTER DOTLESS I make a case pair, and so do U+0130 LATIN
+;; CAPITAL LETTER I WITH DOT ABOVE and U+0069 LATIN SMALL LETTER I.
+;; Thus we have to check language-environment to handle casing
+;; correctly. Currently only I<->i is available.
+
+ ;; Latin Extended-A, Latin Extended-B
+ (setq c #x0100)
+ (while (<= c #x0233)
+ (modify-category-entry (decode-char 'ucs c) ?l)
+ (and (or (<= c #x012e)
+ (and (>= c #x014a) (<= c #x0177)))
+ (zerop (% c 2))
+ (set-case-syntax-pair
+ (decode-char 'ucs c) (decode-char 'ucs (1+ c)) tbl))
+ (and (>= c #x013a)
+ (<= c #x0148)
+ (zerop (% c 2))
+ (set-case-syntax-pair
+ (decode-char 'ucs (1- c)) (decode-char 'ucs c) tbl))
+ (setq c (1+ c)))
+ ;;(set-downcase-syntax ?\e$,1 P\e(B ?i tbl)
+ ;;(set-upcase-syntax ?I ?\e$,1 Q\e(B tbl)
+ (set-case-syntax-pair ?\e$,1 R\e(B ?\e$,1 S\e(B tbl)
+ (set-case-syntax-pair ?\e$,1 T\e(B ?\e$,1 U\e(B tbl)
+ (set-case-syntax-pair ?\e$,1 V\e(B ?\e$,1 W\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!8\e(B ?\e,A\7f\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!9\e(B ?\e$,1!:\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!;\e(B ?\e$,1!<\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!=\e(B ?\e$,1!>\e(B tbl)
+
+ ;; Latin Extended-B
+ (set-case-syntax-pair ?\e$,1!A\e(B ?\e$,1#S\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!B\e(B ?\e$,1!C\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!D\e(B ?\e$,1!E\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!F\e(B ?\e$,1#T\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!G\e(B ?\e$,1!H\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!I\e(B ?\e$,1#V\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!J\e(B ?\e$,1#W\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!K\e(B ?\e$,1!L\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!N\e(B ?\e$,1"=\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!O\e(B ?\e$,1#Y\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!P\e(B ?\e$,1#[\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!Q\e(B ?\e$,1!R\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!S\e(B ?\e$,1#`\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!T\e(B ?\e$,1#c\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!V\e(B ?\e$,1#i\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!W\e(B ?\e$,1#h\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!X\e(B ?\e$,1!Y\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!\\e(B ?\e$,1#o\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!]\e(B ?\e$,1#r\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!_\e(B ?\e$,1#u\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!`\e(B ?\e$,1!a\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!b\e(B ?\e$,1!c\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!d\e(B ?\e$,1!e\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!f\e(B ?\e$,1$ \e(B tbl)
+ (set-case-syntax-pair ?\e$,1!g\e(B ?\e$,1!h\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!i\e(B ?\e$,1$#\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!l\e(B ?\e$,1!m\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!n\e(B ?\e$,1$(\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!o\e(B ?\e$,1!p\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!q\e(B ?\e$,1$*\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!r\e(B ?\e$,1$+\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!s\e(B ?\e$,1!t\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!u\e(B ?\e$,1!v\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!w\e(B ?\e$,1$2\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!x\e(B ?\e$,1!y\e(B tbl)
+ (set-case-syntax-pair ?\e$,1!|\e(B ?\e$,1!}\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"$\e(B ?\e$,1"&\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"%\e(B ?\e$,1"&\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"'\e(B ?\e$,1")\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"(\e(B ?\e$,1")\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"*\e(B ?\e$,1",\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"+\e(B ?\e$,1",\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"-\e(B ?\e$,1".\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"/\e(B ?\e$,1"0\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"1\e(B ?\e$,1"2\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"3\e(B ?\e$,1"4\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"5\e(B ?\e$,1"6\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"7\e(B ?\e$,1"8\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"9\e(B ?\e$,1":\e(B tbl)
+ (set-case-syntax-pair ?\e$,1";\e(B ?\e$,1"<\e(B tbl)
+ (set-case-syntax-pair ?\e$,1">\e(B ?\e$,1"?\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"@\e(B ?\e$,1"A\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"B\e(B ?\e$,1"C\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"D\e(B ?\e$,1"E\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"F\e(B ?\e$,1"G\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"H\e(B ?\e$,1"I\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"J\e(B ?\e$,1"K\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"L\e(B ?\e$,1"M\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"N\e(B ?\e$,1"O\e(B tbl)
+ ;; 01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON
+ (set-case-syntax-pair ?\e$,1"Q\e(B ?\e$,1"S\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"R\e(B ?\e$,1"S\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"T\e(B ?\e$,1"U\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"V\e(B ?\e$,1!U\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"W\e(B ?\e$,1!\7f\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"X\e(B ?\e$,1"Y\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"Z\e(B ?\e$,1"[\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"\\e(B ?\e$,1"]\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"^\e(B ?\e$,1"_\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"`\e(B ?\e$,1"a\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"b\e(B ?\e$,1"c\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"d\e(B ?\e$,1"e\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"f\e(B ?\e$,1"g\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"h\e(B ?\e$,1"i\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"j\e(B ?\e$,1"k\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"l\e(B ?\e$,1"m\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"n\e(B ?\e$,1"o\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"p\e(B ?\e$,1"q\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"r\e(B ?\e$,1"s\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"t\e(B ?\e$,1"u\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"v\e(B ?\e$,1"w\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"x\e(B ?\e$,1"y\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"z\e(B ?\e$,1"{\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"|\e(B ?\e$,1"}\e(B tbl)
+ (set-case-syntax-pair ?\e$,1"~\e(B ?\e$,1"\7f\e(B tbl)
+ (set-case-syntax-pair ?\e$,1#"\e(B ?\e$,1##\e(B tbl)
+ (set-case-syntax-pair ?\e$,1#$\e(B ?\e$,1#%\e(B tbl)
+ (set-case-syntax-pair ?\e$,1#&\e(B ?\e$,1#'\e(B tbl)
+ (set-case-syntax-pair ?\e$,1#(\e(B ?\e$,1#)\e(B tbl)
+ (set-case-syntax-pair ?\e$,1#*\e(B ?\e$,1#+\e(B tbl)
+ (set-case-syntax-pair ?\e$,1#,\e(B ?\e$,1#-\e(B tbl)
+ (set-case-syntax-pair ?\e$,1#.\e(B ?\e$,1#/\e(B tbl)
+ (set-case-syntax-pair ?\e$,1#0\e(B ?\e$,1#1\e(B tbl)
+ (set-case-syntax-pair ?\e$,1#2\e(B ?\e$,1#3\e(B tbl)
+
+ ;; Latin Extended Additional
+ (setq c #x1e00)
+ (while (<= c #x1ef9)
+ (modify-category-entry (decode-char 'ucs c) ?l)
+ (and (zerop (% c 2))
+ (or (<= c #x1e94) (>= c #x1ea0))
+ (set-case-syntax-pair
+ (decode-char 'ucs c) (decode-char 'ucs (1+ c)) tbl))
+ (setq c (1+ c)))
+
+ ;; Greek
+ (setq c #x0370)
+ (while (<= c #x03ff)
+ (modify-category-entry (decode-char 'ucs c) ?g)
+ (if (or (and (>= c #x0391) (<= c #x03a1))
+ (and (>= c #x03a3) (<= c #x03ab)))
+ (set-case-syntax-pair
+ (decode-char 'ucs c) (decode-char 'ucs (+ c 32)) tbl))
+ (and (>= c #x03da)
+ (<= c #x03ee)
+ (zerop (% c 2))
+ (set-case-syntax-pair
+ (decode-char 'ucs c) (decode-char 'ucs (1+ c)) tbl))
+ (setq c (1+ c)))
+ (set-case-syntax-pair ?\e$,1&f\e(B ?\e$,1',\e(B tbl)
+ (set-case-syntax-pair ?\e$,1&h\e(B ?\e$,1'-\e(B tbl)
+ (set-case-syntax-pair ?\e$,1&i\e(B ?\e$,1'.\e(B tbl)
+ (set-case-syntax-pair ?\e$,1&j\e(B ?\e$,1'/\e(B tbl)
+ (set-case-syntax-pair ?\e$,1&l\e(B ?\e$,1'L\e(B tbl)
+ (set-case-syntax-pair ?\e$,1&n\e(B ?\e$,1'M\e(B tbl)
+ (set-case-syntax-pair ?\e$,1&o\e(B ?\e$,1'N\e(B tbl)
+
+ ;; Armenian
+ (setq c #x531)
+ (while (<= c #x556)
+ (set-case-syntax-pair (decode-char 'ucs c)
+ (decode-char 'ucs (+ c #x30)) tbl)
+ (setq c (1+ c)))
+
+ ;; Greek Extended
+ (setq c #x1f00)
+ (while (<= c #x1fff)
+ (modify-category-entry (decode-char 'ucs c) ?g)
+ (and (<= (logand c #x000f) 7)
+ (<= c #x1fa7)
+ (not (memq c '(#x1f50 #x1f52 #x1f54 #x1f56)))
+ (/= (logand c #x00f0) 7)
+ (set-case-syntax-pair
+ (decode-char 'ucs (+ c 8)) (decode-char 'ucs c) tbl))
+ (setq c (1+ c)))
+ (set-case-syntax-pair ?\e$,1qx\e(B ?\e$,1qp\e(B tbl)
+ (set-case-syntax-pair ?\e$,1qy\e(B ?\e$,1qq\e(B tbl)
+ (set-case-syntax-pair ?\e$,1qz\e(B ?\e$,1q0\e(B tbl)
+ (set-case-syntax-pair ?\e$,1q{\e(B ?\e$,1q1\e(B tbl)
+ (set-case-syntax-pair ?\e$,1q|\e(B ?\e$,1qs\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r(\e(B ?\e$,1q2\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r)\e(B ?\e$,1q3\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r*\e(B ?\e$,1q4\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r+\e(B ?\e$,1q5\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r,\e(B ?\e$,1r#\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r8\e(B ?\e$,1r0\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r9\e(B ?\e$,1r1\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r:\e(B ?\e$,1q6\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r;\e(B ?\e$,1q7\e(B tbl)
+ (set-case-syntax-pair ?\e$,1rH\e(B ?\e$,1r@\e(B tbl)
+ (set-case-syntax-pair ?\e$,1rI\e(B ?\e$,1rA\e(B tbl)
+ (set-case-syntax-pair ?\e$,1rJ\e(B ?\e$,1q:\e(B tbl)
+ (set-case-syntax-pair ?\e$,1rK\e(B ?\e$,1q;\e(B tbl)
+ (set-case-syntax-pair ?\e$,1rL\e(B ?\e$,1rE\e(B tbl)
+ (set-case-syntax-pair ?\e$,1rX\e(B ?\e$,1q8\e(B tbl)
+ (set-case-syntax-pair ?\e$,1rY\e(B ?\e$,1q9\e(B tbl)
+ (set-case-syntax-pair ?\e$,1rZ\e(B ?\e$,1q<\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r[\e(B ?\e$,1q=\e(B tbl)
+ (set-case-syntax-pair ?\e$,1r\\e(B ?\e$,1rS\e(B tbl)
+
+ ;; cyrillic
+ (setq c #x0400)
+ (while (<= c #x04ff)
+ (modify-category-entry (decode-char 'ucs c) ?y)
+ (and (>= c #x0400)
+ (<= c #x040f)
+ (set-case-syntax-pair
+ (decode-char 'ucs c) (decode-char 'ucs (+ c 80)) tbl))
+ (and (>= c #x0410)
+ (<= c #x042f)
+ (set-case-syntax-pair
+ (decode-char 'ucs c) (decode-char 'ucs (+ c 32)) tbl))
+ (and (zerop (% c 2))
+ (or (and (>= c #x0460) (<= c #x0480))
+ (and (>= c #x048c) (<= c #x04be))
+ (and (>= c #x04d0) (<= c #x04f4)))
+ (set-case-syntax-pair
+ (decode-char 'ucs c) (decode-char 'ucs (1+ c)) tbl))
+ (setq c (1+ c)))
+ (set-case-syntax-pair ?\e$,1*!\e(B ?\e$,1*"\e(B tbl)
+ (set-case-syntax-pair ?\e$,1*#\e(B ?\e$,1*$\e(B tbl)
+ (set-case-syntax-pair ?\e$,1*'\e(B ?\e$,1*(\e(B tbl)
+ (set-case-syntax-pair ?\e$,1*+\e(B ?\e$,1*,\e(B tbl)
+ (set-case-syntax-pair ?\e$,1*X\e(B ?\e$,1*Y\e(B tbl)
+
+ ;; general punctuation
+ (setq c #x2000)
+ (while (<= c #x200b)
+ (set-case-syntax (decode-char 'ucs c) " " tbl)
+ (setq c (1+ c)))
+ (setq c #x2010)
+ (while (<= c #x2016)
+ (set-case-syntax (decode-char 'ucs c) "_" tbl)
+ (setq c (1+ c)))
+ ;; Punctuation syntax for quotation marks (like `)
+ (while (<= c #x201f)
+ (set-case-syntax (decode-char 'ucs c) "." tbl)
+ (setq c (1+ c)))
+ (while (<= c #x2027)
+ (set-case-syntax (decode-char 'ucs c) "_" tbl)
+ (setq c (1+ c)))
+
+ ;; Roman numerals
+ (setq c #x2160)
+ (while (<= c #x216f)
+ (set-case-syntax-pair (decode-char 'ucs c)
+ (decode-char 'ucs (+ c #x10)) tbl)
+ (setq c (1+ c)))
+
+ ;; Circled Latin
+ (setq c #x24b6)
+ (while (<= c #x24cf)
+ (set-case-syntax-pair (decode-char 'ucs c)
+ (decode-char 'ucs (+ c 26)) tbl)
+ (modify-category-entry (decode-char 'ucs c) ?l)
+ (modify-category-entry (decode-char 'ucs (+ c 26)) ?l)
+ (setq c (1+ c)))
+
+ ;; Fullwidth Latin
+ (setq c #xff21)
+ (while (<= c #xff3a)
+ (set-case-syntax-pair (decode-char 'ucs c)
+ (decode-char 'ucs (+ c #x20)) tbl)
+ (modify-category-entry (decode-char 'ucs c) ?l)
+ (modify-category-entry (decode-char 'ucs (+ c #x20)) ?l)
+ (setq c (1+ c)))
+
+ ;; Combining diacritics
+ (setq c #x300)
+ (while (<= c #x362)
+ (modify-category-entry (decode-char 'ucs c) ?^)
+ (setq c (1+ c)))
+
+ ;; Combining marks
+ (setq c #x20d0)
+ (while (<= c #x20e3)
+ (modify-category-entry (decode-char 'ucs c) ?^)
+ (setq c (1+ c)))
+
+ ;; Fixme: syntax for symbols &c
+ )
+
+(let ((pairs
+ '("\e$,1sEsF\e(B" ; U+2045 U+2046
+ "\e$,1s}s~\e(B" ; U+207D U+207E
+ "\e$,1t-t.\e(B" ; U+208D U+208E
+ "\e$,1{){*\e(B" ; U+2329 U+232A
+ "\e$,1|T|U\e(B" ; U+23B4 U+23B5
+ "\e$,2&H&I\e(B" ; U+2768 U+2769
+ "\e$,2&J&K\e(B" ; U+276A U+276B
+ "\e$,2&L&M\e(B" ; U+276C U+276D
+ "\e$,2&P&Q\e(B" ; U+2770 U+2771
+ "\e$,2&R&S\e(B" ; U+2772 U+2773
+ "\e$,2&T&U\e(B" ; U+2774 U+2775
+ "\e$,2'f'g\e(B" ; U+27E6 U+27E7
+ "\e$,2'h'i\e(B" ; U+27E8 U+27E9
+ "\e$,2'j'k\e(B" ; U+27EA U+27EB
+ "\e$,2,#,$\e(B" ; U+2983 U+2984
+ "\e$,2,%,&\e(B" ; U+2985 U+2986
+ "\e$,2,',(\e(B" ; U+2987 U+2988
+ "\e$,2,),*\e(B" ; U+2989 U+298A
+ "\e$,2,+,,\e(B" ; U+298B U+298C
+ "\e$,2,-,.\e(B" ; U+298D U+298E
+ "\e$,2,/,0\e(B" ; U+298F U+2990
+ "\e$,2,1,2\e(B" ; U+2991 U+2992
+ "\e$,2,3,4\e(B" ; U+2993 U+2994
+ "\e$,2,5,6\e(B" ; U+2995 U+2996
+ "\e$,2,7,8\e(B" ; U+2997 U+2998
+ "\e$,2-<-=\e(B" ; U+29FC U+29FD
+ "\e$,2=H=I\e(B" ; U+3008 U+3009
+ "\e$,2=J=K\e(B" ; U+300A U+300B
+ "\e$,2=L=M\e(B" ; U+300C U+300D
+ "\e$,2=N=O\e(B" ; U+300E U+300F
+ "\e$,2=P=Q\e(B" ; U+3010 U+3011
+ "\e$,2=T=U\e(B" ; U+3014 U+3015
+ "\e$,2=V=W\e(B" ; U+3016 U+3017
+ "\e$,2=X=Y\e(B" ; U+3018 U+3019
+ "\e$,2=Z=[\e(B" ; U+301A U+301B
+ "\e$,3m~m\7f\e(B" ; U+FD3E U+FD3F
+ "\e$,3pUpV\e(B" ; U+FE35 U+FE36
+ "\e$,3pWpX\e(B" ; U+FE37 U+FE38
+ "\e$,3pYpZ\e(B" ; U+FE39 U+FE3A
+ "\e$,3p[p\\e(B" ; U+FE3B U+FE3C
+ "\e$,3p]p^\e(B" ; U+FE3D U+FE3E
+ "\e$,3p_p`\e(B" ; U+FE3F U+FE40
+ "\e$,3papb\e(B" ; U+FE41 U+FE42
+ "\e$,3pcpd\e(B" ; U+FE43 U+FE44
+ "\e$,3pypz\e(B" ; U+FE59 U+FE5A
+ "\e$,3p{p|\e(B" ; U+FE5B U+FE5C
+ "\e$,3p}p~\e(B" ; U+FE5D U+FE5E
+ "\e$,3rhri\e(B" ; U+FF08 U+FF09
+ "\e$,3s;s=\e(B" ; U+FF3B U+FF3D
+ "\e$,3s[s]\e(B" ; U+FF5B U+FF5D
+ "\e$,3s_s`\e(B" ; U+FF5F U+FF60
+ "\e$,3sbsc\e(B" ; U+FF62 U+FF63
+ )))
+ (dolist (elt pairs)
+ (modify-syntax-entry (aref elt 0) (string ?\( (aref elt 1)))
+ (modify-syntax-entry (aref elt 1) (string ?\) (aref elt 0)))))
+