Using saved parent location: http://bzr.savannah.gnu.org/r/emacs/trunk/ Now on revision 100601. ------------------------------------------------------------ revno: 100601 author: Bob Rogers committer: Glenn Morris branch nick: trunk timestamp: Mon 2010-06-14 20:34:12 -0700 message: * lisp/progmodes/sql.el (sql-connect-mysql): Fix typo. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-06-14 16:03:04 +0000 +++ lisp/ChangeLog 2010-06-15 03:34:12 +0000 @@ -1,3 +1,7 @@ +2010-06-15 Bob Rogers (tiny change) + + * progmodes/sql.el (sql-connect-mysql): Fix typo. + 2010-06-14 Juri Linkov Add sort option `list-colors-sort'. (Bug#6332) === modified file 'lisp/progmodes/sql.el' --- lisp/progmodes/sql.el 2010-05-14 13:31:36 +0000 +++ lisp/progmodes/sql.el 2010-06-15 03:34:12 +0000 @@ -3119,7 +3119,7 @@ (setq params (append (list sql-database) params))) (if (not (string= "" sql-server)) (setq params (append (list (concat "--host=" sql-server)) params))) - (if (not (and sql-port (numberp sql-port))) + (if (and sql-port (numberp sql-port)) (setq params (append (list (concat "--port=" (number-to-string sql-port))) params))) (if (not (string= "" sql-password)) (setq params (append (list (concat "--password=" sql-password)) params))) ------------------------------------------------------------ revno: 100600 committer: Juri Linkov branch nick: trunk timestamp: Mon 2010-06-14 19:03:04 +0300 message: Add sort option `list-colors-sort'. (Bug#6332) * lisp/facemenu.el (color-rgb-to-hsv): New function. (list-colors-sort): New defcustom. (list-colors-sort-key): New function. (list-colors-display): Doc fix. Sort list according to the option `list-colors-sort'. (list-colors-print): Add HSV values to `help-echo' property of RGB strings. diff: === modified file 'etc/NEWS' --- etc/NEWS 2010-06-11 03:35:40 +0000 +++ etc/NEWS 2010-06-14 16:03:04 +0000 @@ -125,6 +125,9 @@ *** Calling `delete-file' or `delete-directory' with a prefix argument now forces true deletion, regardless of `delete-by-moving-to-trash'. +** New option `list-colors-sort' defines the color sort order +for `list-colors-display'. + * Editing Changes in Emacs 24.1 === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-06-14 15:48:52 +0000 +++ lisp/ChangeLog 2010-06-14 16:03:04 +0000 @@ -1,5 +1,16 @@ 2010-06-14 Juri Linkov + Add sort option `list-colors-sort'. (Bug#6332) + * facemenu.el (color-rgb-to-hsv): New function. + (list-colors-sort): New defcustom. + (list-colors-sort-key): New function. + (list-colors-display): Doc fix. Sort list according to the option + `list-colors-sort'. + (list-colors-print): Add HSV values to `help-echo' property of + RGB strings. + +2010-06-14 Juri Linkov + * compare-w.el: Move to the "vc" subdirectory. 2010-06-14 Stefan Monnier === modified file 'lisp/facemenu.el' --- lisp/facemenu.el 2010-06-12 17:12:15 +0000 +++ lisp/facemenu.el 2010-06-14 16:03:04 +0000 @@ -479,6 +479,73 @@ nil col))) +(defun color-rgb-to-hsv (r g b) + "For R, G, B color components return a list of hue, saturation, value. +R, G, B input values should be in [0..65535] range. +Output values for hue are integers in [0..360] range. +Output values for saturation and value are integers in [0..100] range." + (let* ((r (/ r 65535.0)) + (g (/ g 65535.0)) + (b (/ b 65535.0)) + (max (max r g b)) + (min (min r g b)) + (h (cond ((= max min) 0) + ((= max r) (mod (+ (* 60 (/ (- g b) (- max min))) 360) 360)) + ((= max g) (+ (* 60 (/ (- b r) (- max min))) 120)) + ((= max b) (+ (* 60 (/ (- r g) (- max min))) 240)))) + (s (cond ((= max 0) 0) + (t (- 1 (/ min max))))) + (v max)) + (list (round h) (round s 0.01) (round v 0.01)))) + +(defcustom list-colors-sort nil + "Color sort order for `list-colors-display'. +`nil' means default implementation-dependent order (defined in `x-colors'). +`name' sorts by color name. +`rgb' sorts by red, green, blue components. +`rgb-dist' sorts by the RGB distance to the specified color. +`hsv' sorts by hue, saturation, value. +`hsv-dist' sorts by the HVS distance to the specified color +and excludes grayscale colors." + :type '(choice (const :tag "Unsorted" nil) + (const :tag "Color Name" name) + (const :tag "Red-Green-Blue" rgb) + (cons :tag "Distance on RGB cube" + (const :tag "Distance from Color" rgb-dist) + (color :tag "Source Color Name")) + (const :tag "Hue-Saturation-Value" hsv) + (cons :tag "Distance on HSV cylinder" + (const :tag "Distance from Color" hsv-dist) + (color :tag "Source Color Name"))) + :group 'facemenu + :version "24.1") + +(defun list-colors-sort-key (color) + "Return a list of keys for sorting colors depending on `list-colors-sort'. +COLOR is the name of the color. When return value is nil, +filter out the color from the output." + (cond + ((null list-colors-sort) color) + ((eq list-colors-sort 'name) + (downcase color)) + ((eq list-colors-sort 'rgb) + (color-values color)) + ((eq (car-safe list-colors-sort) 'rgb-dist) + (color-distance color (cdr list-colors-sort))) + ((eq list-colors-sort 'hsv) + (apply 'color-rgb-to-hsv (color-values color))) + ((eq (car-safe list-colors-sort) 'hsv-dist) + (let* ((c-rgb (color-values color)) + (c-hsv (apply 'color-rgb-to-hsv c-rgb)) + (o-hsv (apply 'color-rgb-to-hsv + (color-values (cdr list-colors-sort))))) + (unless (and (eq (nth 0 c-rgb) (nth 1 c-rgb)) ; exclude grayscale + (eq (nth 1 c-rgb) (nth 2 c-rgb))) + ;; 3D Euclidean distance (sqrt is not needed for sorting) + (+ (expt (- 180 (abs (- 180 (abs (- (nth 0 c-hsv) ; wrap hue + (nth 0 o-hsv)))))) 2) + (expt (- (nth 1 c-hsv) (nth 1 o-hsv)) 2) + (expt (- (nth 2 c-hsv) (nth 2 o-hsv)) 2))))))) (defun list-colors-display (&optional list buffer-name callback) "Display names of defined colors, and show what they look like. @@ -492,10 +559,38 @@ If the optional argument CALLBACK is non-nil, it should be a function to call each time the user types RET or clicks on a color. The function should accept a single argument, the color -name." +name. + +You can change the color sort order by customizing `list-colors-sort'." (interactive) (when (and (null list) (> (display-color-cells) 0)) (setq list (list-colors-duplicates (defined-colors))) + (when list-colors-sort + ;; Schwartzian transform with `(color key1 key2 key3 ...)'. + (setq list (mapcar + 'car + (sort (delq nil (mapcar + (lambda (c) + (let ((key (list-colors-sort-key + (car c)))) + (when key + (cons c (if (consp key) key + (list key)))))) + list)) + (lambda (a b) + (let* ((a-keys (cdr a)) + (b-keys (cdr b)) + (a-key (car a-keys)) + (b-key (car b-keys))) + ;; Skip common keys at the beginning of key lists. + (while (and a-key b-key (equal a-key b-key)) + (setq a-keys (cdr a-keys) a-key (car a-keys) + b-keys (cdr b-keys) b-key (car b-keys))) + (cond + ((and (numberp a-key) (numberp b-key)) + (< a-key b-key)) + ((and (stringp a-key) (stringp b-key)) + (string< a-key b-key))))))))) (when (memq (display-visual-class) '(gray-scale pseudo-color direct-color)) ;; Don't show more than what the display can handle. (let ((lc (nthcdr (1- (display-color-cells)) list))) @@ -550,9 +645,16 @@ (point) 'face (list :foreground (car color))) (indent-to (max (- (window-width) 8) 44)) - (insert (apply 'format "#%02x%02x%02x" - (mapcar (lambda (c) (lsh c -8)) - color-values))) + (insert (propertize + (apply 'format "#%02x%02x%02x" + (mapcar (lambda (c) (lsh c -8)) + color-values)) + 'mouse-face 'highlight + 'help-echo + (let ((hsv (apply 'color-rgb-to-hsv + (color-values (car color))))) + (format "H:%d S:%d V:%d" + (nth 0 hsv) (nth 1 hsv) (nth 2 hsv))))) (when callback (make-text-button opoint (point) ------------------------------------------------------------ revno: 100599 committer: Juri Linkov branch nick: trunk timestamp: Mon 2010-06-14 18:48:52 +0300 message: * compare-w.el: Move to the "vc" subdirectory. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-06-14 03:19:46 +0000 +++ lisp/ChangeLog 2010-06-14 15:48:52 +0000 @@ -1,3 +1,7 @@ +2010-06-14 Juri Linkov + + * compare-w.el: Move to the "vc" subdirectory. + 2010-06-14 Stefan Monnier * image-mode.el (image-mode-map): Remap left-char and right-char. === renamed file 'lisp/compare-w.el' => 'lisp/vc/compare-w.el' --- lisp/compare-w.el 2010-01-13 08:35:10 +0000 +++ lisp/vc/compare-w.el 2010-06-14 15:48:52 +0000 @@ -4,7 +4,7 @@ ;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ;; Maintainer: FSF -;; Keywords: convenience files +;; Keywords: convenience files vc ;; This file is part of GNU Emacs. ------------------------------------------------------------ revno: 100598 committer: Stefan Monnier branch nick: trunk timestamp: Sun 2010-06-13 23:19:46 -0400 message: * lisp/image-mode.el (image-mode-map): Remap left-char and right-char. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-06-14 01:43:11 +0000 +++ lisp/ChangeLog 2010-06-14 03:19:46 +0000 @@ -1,5 +1,7 @@ 2010-06-14 Stefan Monnier + * image-mode.el (image-mode-map): Remap left-char and right-char. + * nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior. 2010-06-12 Chong Yidong === modified file 'lisp/image-mode.el' --- lisp/image-mode.el 2010-05-25 16:03:53 +0000 +++ lisp/image-mode.el 2010-06-14 03:19:46 +0000 @@ -298,6 +298,8 @@ (define-key map (kbd "DEL") 'image-scroll-down) (define-key map [remap forward-char] 'image-forward-hscroll) (define-key map [remap backward-char] 'image-backward-hscroll) + (define-key map [remap right-char] 'image-forward-hscroll) + (define-key map [remap left-char] 'image-backward-hscroll) (define-key map [remap previous-line] 'image-previous-line) (define-key map [remap next-line] 'image-next-line) (define-key map [remap scroll-up] 'image-scroll-up) ------------------------------------------------------------ revno: 100597 committer: Stefan Monnier branch nick: trunk timestamp: Sun 2010-06-13 21:43:11 -0400 message: * lisp/nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-06-12 17:14:43 +0000 +++ lisp/ChangeLog 2010-06-14 01:43:11 +0000 @@ -1,3 +1,7 @@ +2010-06-14 Stefan Monnier + + * nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior. + 2010-06-12 Chong Yidong * term/common-win.el (x-colors): Add all the color names defined === modified file 'lisp/nxml/nxml-mode.el' --- lisp/nxml/nxml-mode.el 2010-05-20 15:12:20 +0000 +++ lisp/nxml/nxml-mode.el 2010-06-14 01:43:11 +0000 @@ -1370,17 +1370,21 @@ (defun nxml-indent-line () "Indent current line as XML." - (let ((indent (nxml-compute-indent)) - (from-end (- (point-max) (point)))) - (when (and indent - (/= indent (current-indentation))) - (beginning-of-line) - (let ((bol (point))) - (skip-chars-forward " \t") - (delete-region bol (point))) - (indent-to indent) - (when (> (- (point-max) from-end) (point)) - (goto-char (- (point-max) from-end)))))) + (let* ((savep (point)) + (indent (condition-case nil + (save-excursion + (forward-line 0) + (skip-chars-forward " \t") + (if (>= (point) savep) (setq savep nil)) + (or (nxml-compute-indent) 0)) + (error 0)))) + (if (not (numberp indent)) + ;; If something funny is used (e.g. `noindent'), return it. + indent + (if (< indent 0) (setq indent 0)) ;Just in case. + (if savep + (save-excursion (indent-line-to indent)) + (indent-line-to indent))))) (defun nxml-compute-indent () "Return the indent for the line containing point." ------------------------------------------------------------ revno: 100596 committer: Juanma Barranquero branch nick: trunk timestamp: Mon 2010-06-14 01:33:06 +0200 message: * src/makefile.w32-in ($(BLD)/bidi.$(O)): Keep dependencies sorted. diff: === modified file 'src/makefile.w32-in' --- src/makefile.w32-in 2010-06-12 15:52:43 +0000 +++ src/makefile.w32-in 2010-06-13 23:33:06 +0000 @@ -341,11 +341,11 @@ $(SRC)/bidi.c \ $(CONFIG_H) \ $(SRC)/lisp.h \ - $(SRC)/buffer.h \ - $(SRC)/character.h \ - $(SRC)/dispextern.h \ + $(SRC)/bidimirror.h \ $(SRC)/biditype.h \ - $(SRC)/bidimirror.h \ + $(SRC)/buffer.h \ + $(SRC)/character.h \ + $(SRC)/dispextern.h \ $(SRC)/w32gui.h $(BLD)/buffer.$(O) : \ ------------------------------------------------------------ revno: 100595 committer: Eli Zaretskii branch nick: trunk timestamp: Sun 2010-06-13 21:15:45 +0300 message: bidi.c (bidi_mirror_char): Fix commentary. diff: === modified file 'src/bidi.c' --- src/bidi.c 2010-06-12 15:52:43 +0000 +++ src/bidi.c 2010-06-13 18:15:45 +0000 @@ -230,10 +230,10 @@ } } -/* Return the mirrored character of C, if any. - - Note: The conditions in UAX#9 clause L4 must be tested by the - caller. */ +/* Return the mirrored character of C, if it has one. If C has no + mirrored counterpart, return C. + Note: The conditions in UAX#9 clause L4 regarding the surrounding + context must be tested by the caller. */ int bidi_mirror_char (int c) { ------------------------------------------------------------ revno: 100594 [merge] committer: Eli Zaretskii branch nick: trunk timestamp: Sun 2010-06-13 20:40:25 +0300 message: Use Unicode database for attribute tables in bidi.c. admin/unidata/bidimirror.awk: New file. admin/unidata/BidiMirroring.txt: New file from http://www.unicode.org/Public/6.0.0/ucd/BidiMirroring-6.0.0d1.txt. admin/unidata/Makefile.in: (../../src/bidimirror.h): New target. (all): Depend on ../../src/biditype.h and ../../src/bidimirror.h. admin/unidata/makefile.w32-in (../../src/bidimirror.h): New target. (all): Depend on ../../src/biditype.h and ../../src/bidimirror.h. admin/unidata/biditype.awk: New file. admin/unidata/Makefile.in (../../src/biditype.h): New target. admin/unidata/makefile.w32-in (../../src/biditype.h): New target. src/makefile.w32-in ($(BLD)/bidi.$(O)): Depend on biditype.h and bidimirror.h. src/deps.mk (bidi.o): Depend on biditype.h and bidimirror.h. src/bidi.c (bidi_initialize): Remove explicit initialization of bidi_type_table; include biditype.h instead. Don't support entries whose second codepoint is zero. Initialize bidi_mirror_table. (bidi_mirror_char): Use bidi_mirror_table. src/biditype.h: New file. src/bidimirror.h: New file. diff: === modified file 'admin/ChangeLog' --- admin/ChangeLog 2010-06-09 15:46:41 +0000 +++ admin/ChangeLog 2010-06-12 15:52:43 +0000 @@ -1,3 +1,22 @@ +2010-06-12 Eli Zaretskii + + * unidata/bidimirror.awk: New file. + + * unidata/BidiMirroring.txt: New file from + http://www.unicode.org/Public/6.0.0/ucd/BidiMirroring-6.0.0d1.txt. + + * unidata/Makefile.in: (../../src/bidimirror.h): New target. + (all): Depend on ../../src/biditype.h and ../../src/bidimirror.h. + + * unidata/makefile.w32-in (../../src/bidimirror.h): New target. + (all): Depend on ../../src/biditype.h and ../../src/bidimirror.h. + + * unidata/biditype.awk: New file. + + * unidata/Makefile.in (../../src/biditype.h): New target. + + * unidata/makefile.w32-in (../../src/biditype.h): New target. + 2010-06-09 Juanma Barranquero * unidata/UnicodeData.txt: Update from === added file 'admin/unidata/BidiMirroring.txt' --- admin/unidata/BidiMirroring.txt 1970-01-01 00:00:00 +0000 +++ admin/unidata/BidiMirroring.txt 2010-06-12 15:52:43 +0000 @@ -0,0 +1,597 @@ +# BidiMirroring-6.0.0.txt +# Date: 2009-11-10, 17:09:00 PST [KW] +# +# Bidi_Mirroring_Glyph Property +# +# This file is an informative contributory data file in the +# Unicode Character Database. +# +# Copyright (c) 1991-2009 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# This data file lists characters that have the Bidi_Mirrored=True property +# value, for which there is another Unicode character that typically has a glyph +# that is the mirror image of the original character's glyph. +# +# The repertoire covered by the file is Unicode 6.0.0. +# +# The file contains a list of lines with mappings from one code point +# to another one for character-based mirroring. +# Note that for "real" mirroring, a rendering engine needs to select +# appropriate alternative glyphs, and that many Unicode characters do not +# have a mirror-image Unicode character. +# +# Each mapping line contains two fields, separated by a semicolon (';'). +# Each of the two fields contains a code point represented as a +# variable-length hexadecimal value with 4 to 6 digits. +# A comment indicates where the characters are "BEST FIT" mirroring. +# +# Code points for which Bidi_Mirrored=True, but for which no appropriate +# characters exist with mirrored glyphs, are +# listed as comments at the end of the file. +# +# Formally, the default value of the Bidi_Mirroring_Glyph property +# for each code point is the code point itself, unless a mapping to +# some other character is specified in this data file. When a code +# point has the default value for the Bidi_Mirroring_Glyph property, +# that means that no other character exists whose glyph is suitable +# for character-based mirroring. +# +# For information on bidi mirroring, see UAX #9: Bidirectional Algorithm, +# at http://www.unicode.org/unicode/reports/tr9/ +# +# This file was originally created by Markus Scherer. +# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler. +# +# ############################################################ + +0028; 0029 # LEFT PARENTHESIS +0029; 0028 # RIGHT PARENTHESIS +003C; 003E # LESS-THAN SIGN +003E; 003C # GREATER-THAN SIGN +005B; 005D # LEFT SQUARE BRACKET +005D; 005B # RIGHT SQUARE BRACKET +007B; 007D # LEFT CURLY BRACKET +007D; 007B # RIGHT CURLY BRACKET +00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0F3A; 0F3B # TIBETAN MARK GUG RTAGS GYON +0F3B; 0F3A # TIBETAN MARK GUG RTAGS GYAS +0F3C; 0F3D # TIBETAN MARK ANG KHANG GYON +0F3D; 0F3C # TIBETAN MARK ANG KHANG GYAS +169B; 169C # OGHAM FEATHER MARK +169C; 169B # OGHAM REVERSED FEATHER MARK +2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +2045; 2046 # LEFT SQUARE BRACKET WITH QUILL +2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL +207D; 207E # SUPERSCRIPT LEFT PARENTHESIS +207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS +208D; 208E # SUBSCRIPT LEFT PARENTHESIS +208E; 208D # SUBSCRIPT RIGHT PARENTHESIS +2208; 220B # ELEMENT OF +2209; 220C # NOT AN ELEMENT OF +220A; 220D # SMALL ELEMENT OF +220B; 2208 # CONTAINS AS MEMBER +220C; 2209 # DOES NOT CONTAIN AS MEMBER +220D; 220A # SMALL CONTAINS AS MEMBER +2215; 29F5 # DIVISION SLASH +223C; 223D # TILDE OPERATOR +223D; 223C # REVERSED TILDE +2243; 22CD # ASYMPTOTICALLY EQUAL TO +2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF +2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO +2254; 2255 # COLON EQUALS +2255; 2254 # EQUALS COLON +2264; 2265 # LESS-THAN OR EQUAL TO +2265; 2264 # GREATER-THAN OR EQUAL TO +2266; 2267 # LESS-THAN OVER EQUAL TO +2267; 2266 # GREATER-THAN OVER EQUAL TO +2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO +2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO +226A; 226B # MUCH LESS-THAN +226B; 226A # MUCH GREATER-THAN +226E; 226F # [BEST FIT] NOT LESS-THAN +226F; 226E # [BEST FIT] NOT GREATER-THAN +2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO +2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO +2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO +2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO +2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO +2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO +2276; 2277 # LESS-THAN OR GREATER-THAN +2277; 2276 # GREATER-THAN OR LESS-THAN +2278; 2279 # [BEST FIT] NEITHER LESS-THAN NOR GREATER-THAN +2279; 2278 # [BEST FIT] NEITHER GREATER-THAN NOR LESS-THAN +227A; 227B # PRECEDES +227B; 227A # SUCCEEDS +227C; 227D # PRECEDES OR EQUAL TO +227D; 227C # SUCCEEDS OR EQUAL TO +227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO +227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO +2280; 2281 # [BEST FIT] DOES NOT PRECEDE +2281; 2280 # [BEST FIT] DOES NOT SUCCEED +2282; 2283 # SUBSET OF +2283; 2282 # SUPERSET OF +2284; 2285 # [BEST FIT] NOT A SUBSET OF +2285; 2284 # [BEST FIT] NOT A SUPERSET OF +2286; 2287 # SUBSET OF OR EQUAL TO +2287; 2286 # SUPERSET OF OR EQUAL TO +2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO +2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO +228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO +228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO +228F; 2290 # SQUARE IMAGE OF +2290; 228F # SQUARE ORIGINAL OF +2291; 2292 # SQUARE IMAGE OF OR EQUAL TO +2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO +2298; 29B8 # CIRCLED DIVISION SLASH +22A2; 22A3 # RIGHT TACK +22A3; 22A2 # LEFT TACK +22A6; 2ADE # ASSERTION +22A8; 2AE4 # TRUE +22A9; 2AE3 # FORCES +22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22B0; 22B1 # PRECEDES UNDER RELATION +22B1; 22B0 # SUCCEEDS UNDER RELATION +22B2; 22B3 # NORMAL SUBGROUP OF +22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP +22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO +22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO +22B6; 22B7 # ORIGINAL OF +22B7; 22B6 # IMAGE OF +22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT +22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT +22CB; 22CC # LEFT SEMIDIRECT PRODUCT +22CC; 22CB # RIGHT SEMIDIRECT PRODUCT +22CD; 2243 # REVERSED TILDE EQUALS +22D0; 22D1 # DOUBLE SUBSET +22D1; 22D0 # DOUBLE SUPERSET +22D6; 22D7 # LESS-THAN WITH DOT +22D7; 22D6 # GREATER-THAN WITH DOT +22D8; 22D9 # VERY MUCH LESS-THAN +22D9; 22D8 # VERY MUCH GREATER-THAN +22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN +22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN +22DC; 22DD # EQUAL TO OR LESS-THAN +22DD; 22DC # EQUAL TO OR GREATER-THAN +22DE; 22DF # EQUAL TO OR PRECEDES +22DF; 22DE # EQUAL TO OR SUCCEEDS +22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL +22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL +22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO +22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO +22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO +22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO +22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO +22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO +22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO +22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO +22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF +22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP +22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO +22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS +22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS +22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE +22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F6; 22FD # ELEMENT OF WITH OVERBAR +22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR +22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE +22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FD; 22F6 # CONTAINS WITH OVERBAR +22FE; 22F7 # SMALL CONTAINS WITH OVERBAR +2308; 2309 # LEFT CEILING +2309; 2308 # RIGHT CEILING +230A; 230B # LEFT FLOOR +230B; 230A # RIGHT FLOOR +2329; 232A # LEFT-POINTING ANGLE BRACKET +232A; 2329 # RIGHT-POINTING ANGLE BRACKET +2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT +2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT +276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT +276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT +276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT +276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT +276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT +276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT +2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT +2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT +2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET +2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET +2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT +2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT +27C3; 27C4 # OPEN SUBSET +27C4; 27C3 # OPEN SUPERSET +27C5; 27C6 # LEFT S-SHAPED BAG DELIMITER +27C6; 27C5 # RIGHT S-SHAPED BAG DELIMITER +27C8; 27C9 # REVERSE SOLIDUS PRECEDING SUBSET +27C9; 27C8 # SUPERSET PRECEDING SOLIDUS +27D5; 27D6 # LEFT OUTER JOIN +27D6; 27D5 # RIGHT OUTER JOIN +27DD; 27DE # LONG RIGHT TACK +27DE; 27DD # LONG LEFT TACK +27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK +27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK +27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK +27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK +27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET +27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET +27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET +27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET +27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET +27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET +27EC; 27ED # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET +27ED; 27EC # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET +27EE; 27EF # MATHEMATICAL LEFT FLATTENED PARENTHESIS +27EF; 27EE # MATHEMATICAL RIGHT FLATTENED PARENTHESIS +2983; 2984 # LEFT WHITE CURLY BRACKET +2984; 2983 # RIGHT WHITE CURLY BRACKET +2985; 2986 # LEFT WHITE PARENTHESIS +2986; 2985 # RIGHT WHITE PARENTHESIS +2987; 2988 # Z NOTATION LEFT IMAGE BRACKET +2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET +2989; 298A # Z NOTATION LEFT BINDING BRACKET +298A; 2989 # Z NOTATION RIGHT BINDING BRACKET +298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR +298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR +298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER +298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER +2991; 2992 # LEFT ANGLE BRACKET WITH DOT +2992; 2991 # RIGHT ANGLE BRACKET WITH DOT +2993; 2994 # LEFT ARC LESS-THAN BRACKET +2994; 2993 # RIGHT ARC GREATER-THAN BRACKET +2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET +2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET +2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET +2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET +29B8; 2298 # CIRCLED REVERSE SOLIDUS +29C0; 29C1 # CIRCLED LESS-THAN +29C1; 29C0 # CIRCLED GREATER-THAN +29C4; 29C5 # SQUARED RISING DIAGONAL SLASH +29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH +29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR +29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE +29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK +29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK +29D4; 29D5 # TIMES WITH LEFT HALF BLACK +29D5; 29D4 # TIMES WITH RIGHT HALF BLACK +29D8; 29D9 # LEFT WIGGLY FENCE +29D9; 29D8 # RIGHT WIGGLY FENCE +29DA; 29DB # LEFT DOUBLE WIGGLY FENCE +29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE +29F5; 2215 # REVERSE SOLIDUS OPERATOR +29F8; 29F9 # BIG SOLIDUS +29F9; 29F8 # BIG REVERSE SOLIDUS +29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET +29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET +2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS +2A2C; 2A2B # MINUS SIGN WITH RISING DOTS +2A2D; 2A2E # PLUS SIGN IN LEFT HALF CIRCLE +2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE +2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE +2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE +2A3C; 2A3D # INTERIOR PRODUCT +2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT +2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION +2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION +2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE +2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE +2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO +2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO +2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT +2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT +2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN +2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN +2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL +2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL +2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL +2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL +2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN +2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN +2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE +2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE +2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN +2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN +2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN +2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN +2AA1; 2AA2 # DOUBLE NESTED LESS-THAN +2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN +2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE +2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE +2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AAA; 2AAB # SMALLER THAN +2AAB; 2AAA # LARGER THAN +2AAC; 2AAD # SMALLER THAN OR EQUAL TO +2AAD; 2AAC # LARGER THAN OR EQUAL TO +2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN +2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN +2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN +2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN +2ABB; 2ABC # DOUBLE PRECEDES +2ABC; 2ABB # DOUBLE SUCCEEDS +2ABD; 2ABE # SUBSET WITH DOT +2ABE; 2ABD # SUPERSET WITH DOT +2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW +2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW +2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW +2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW +2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE +2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE +2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN +2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN +2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR +2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR +2ACF; 2AD0 # CLOSED SUBSET +2AD0; 2ACF # CLOSED SUPERSET +2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO +2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO +2AD3; 2AD4 # SUBSET ABOVE SUPERSET +2AD4; 2AD3 # SUPERSET ABOVE SUBSET +2AD5; 2AD6 # SUBSET ABOVE SUBSET +2AD6; 2AD5 # SUPERSET ABOVE SUPERSET +2ADE; 22A6 # SHORT LEFT TACK +2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE +2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE +2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE +2AEC; 2AED # DOUBLE STROKE NOT SIGN +2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN +2AF7; 2AF8 # TRIPLE NESTED LESS-THAN +2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN +2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO +2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO +2E02; 2E03 # LEFT SUBSTITUTION BRACKET +2E03; 2E02 # RIGHT SUBSTITUTION BRACKET +2E04; 2E05 # LEFT DOTTED SUBSTITUTION BRACKET +2E05; 2E04 # RIGHT DOTTED SUBSTITUTION BRACKET +2E09; 2E0A # LEFT TRANSPOSITION BRACKET +2E0A; 2E09 # RIGHT TRANSPOSITION BRACKET +2E0C; 2E0D # LEFT RAISED OMISSION BRACKET +2E0D; 2E0C # RIGHT RAISED OMISSION BRACKET +2E1C; 2E1D # LEFT LOW PARAPHRASE BRACKET +2E1D; 2E1C # RIGHT LOW PARAPHRASE BRACKET +2E20; 2E21 # LEFT VERTICAL BAR WITH QUILL +2E21; 2E20 # RIGHT VERTICAL BAR WITH QUILL +2E22; 2E23 # TOP LEFT HALF BRACKET +2E23; 2E22 # TOP RIGHT HALF BRACKET +2E24; 2E25 # BOTTOM LEFT HALF BRACKET +2E25; 2E24 # BOTTOM RIGHT HALF BRACKET +2E26; 2E27 # LEFT SIDEWAYS U BRACKET +2E27; 2E26 # RIGHT SIDEWAYS U BRACKET +2E28; 2E29 # LEFT DOUBLE PARENTHESIS +2E29; 2E28 # RIGHT DOUBLE PARENTHESIS +3008; 3009 # LEFT ANGLE BRACKET +3009; 3008 # RIGHT ANGLE BRACKET +300A; 300B # LEFT DOUBLE ANGLE BRACKET +300B; 300A # RIGHT DOUBLE ANGLE BRACKET +300C; 300D # [BEST FIT] LEFT CORNER BRACKET +300D; 300C # [BEST FIT] RIGHT CORNER BRACKET +300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET +300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET +3010; 3011 # LEFT BLACK LENTICULAR BRACKET +3011; 3010 # RIGHT BLACK LENTICULAR BRACKET +3014; 3015 # LEFT TORTOISE SHELL BRACKET +3015; 3014 # RIGHT TORTOISE SHELL BRACKET +3016; 3017 # LEFT WHITE LENTICULAR BRACKET +3017; 3016 # RIGHT WHITE LENTICULAR BRACKET +3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET +3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET +301A; 301B # LEFT WHITE SQUARE BRACKET +301B; 301A # RIGHT WHITE SQUARE BRACKET +FE59; FE5A # SMALL LEFT PARENTHESIS +FE5A; FE59 # SMALL RIGHT PARENTHESIS +FE5B; FE5C # SMALL LEFT CURLY BRACKET +FE5C; FE5B # SMALL RIGHT CURLY BRACKET +FE5D; FE5E # SMALL LEFT TORTOISE SHELL BRACKET +FE5E; FE5D # SMALL RIGHT TORTOISE SHELL BRACKET +FE64; FE65 # SMALL LESS-THAN SIGN +FE65; FE64 # SMALL GREATER-THAN SIGN +FF08; FF09 # FULLWIDTH LEFT PARENTHESIS +FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS +FF1C; FF1E # FULLWIDTH LESS-THAN SIGN +FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN +FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET +FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET +FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET +FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET +FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS +FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS +FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET +FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET + +# The following characters have no appropriate mirroring character. +# For these characters it is up to the rendering system +# to provide mirrored glyphs. + +# 2140; DOUBLE-STRUCK N-ARY SUMMATION +# 2201; COMPLEMENT +# 2202; PARTIAL DIFFERENTIAL +# 2203; THERE EXISTS +# 2204; THERE DOES NOT EXIST +# 2211; N-ARY SUMMATION +# 2216; SET MINUS +# 221A; SQUARE ROOT +# 221B; CUBE ROOT +# 221C; FOURTH ROOT +# 221D; PROPORTIONAL TO +# 221F; RIGHT ANGLE +# 2220; ANGLE +# 2221; MEASURED ANGLE +# 2222; SPHERICAL ANGLE +# 2224; DOES NOT DIVIDE +# 2226; NOT PARALLEL TO +# 222B; INTEGRAL +# 222C; DOUBLE INTEGRAL +# 222D; TRIPLE INTEGRAL +# 222E; CONTOUR INTEGRAL +# 222F; SURFACE INTEGRAL +# 2230; VOLUME INTEGRAL +# 2231; CLOCKWISE INTEGRAL +# 2232; CLOCKWISE CONTOUR INTEGRAL +# 2233; ANTICLOCKWISE CONTOUR INTEGRAL +# 2239; EXCESS +# 223B; HOMOTHETIC +# 223E; INVERTED LAZY S +# 223F; SINE WAVE +# 2240; WREATH PRODUCT +# 2241; NOT TILDE +# 2242; MINUS TILDE +# 2244; NOT ASYMPTOTICALLY EQUAL TO +# 2245; APPROXIMATELY EQUAL TO +# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO +# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +# 2248; ALMOST EQUAL TO +# 2249; NOT ALMOST EQUAL TO +# 224A; ALMOST EQUAL OR EQUAL TO +# 224B; TRIPLE TILDE +# 224C; ALL EQUAL TO +# 225F; QUESTIONED EQUAL TO +# 2260; NOT EQUAL TO +# 2262; NOT IDENTICAL TO +# 228C; MULTISET +# 22A7; MODELS +# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE +# 22AC; DOES NOT PROVE +# 22AD; NOT TRUE +# 22AE; DOES NOT FORCE +# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +# 22B8; MULTIMAP +# 22BE; RIGHT ANGLE WITH ARC +# 22BF; RIGHT TRIANGLE +# 22F5; ELEMENT OF WITH DOT ABOVE +# 22F8; ELEMENT OF WITH UNDERBAR +# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES +# 22FF; Z NOTATION BAG MEMBERSHIP +# 2320; TOP HALF INTEGRAL +# 2321; BOTTOM HALF INTEGRAL +# 27CC; LONG DIVISION +# 27C0; THREE DIMENSIONAL ANGLE +# 27D3; LOWER RIGHT CORNER WITH DOT +# 27D4; UPPER LEFT CORNER WITH DOT +# 27DC; LEFT MULTIMAP +# 299B; MEASURED ANGLE OPENING LEFT +# 299C; RIGHT ANGLE VARIANT WITH SQUARE +# 299D; MEASURED RIGHT ANGLE WITH DOT +# 299E; ANGLE WITH S INSIDE +# 299F; ACUTE ANGLE +# 29A0; SPHERICAL ANGLE OPENING LEFT +# 29A1; SPHERICAL ANGLE OPENING UP +# 29A2; TURNED ANGLE +# 29A3; REVERSED ANGLE +# 29A4; ANGLE WITH UNDERBAR +# 29A5; REVERSED ANGLE WITH UNDERBAR +# 29A6; OBLIQUE ANGLE OPENING UP +# 29A7; OBLIQUE ANGLE OPENING DOWN +# 29A8; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT +# 29A9; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT +# 29AA; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT +# 29AB; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT +# 29AC; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP +# 29AD; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP +# 29AE; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN +# 29AF; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN +# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT +# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT +# 29C9; TWO JOINED SQUARES +# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE +# 29DC; INCOMPLETE INFINITY +# 29E1; INCREASES AS +# 29E3; EQUALS SIGN AND SLANTED PARALLEL +# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE +# 29E5; IDENTICAL TO AND SLANTED PARALLEL +# 29E8; DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK +# 29E9; DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK +# 29F4; RULE-DELAYED +# 29F6; SOLIDUS WITH OVERBAR +# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE +# 2A0A; MODULO TWO SUM +# 2A0B; SUMMATION WITH INTEGRAL +# 2A0C; QUADRUPLE INTEGRAL OPERATOR +# 2A0D; FINITE PART INTEGRAL +# 2A0E; INTEGRAL WITH DOUBLE STROKE +# 2A0F; INTEGRAL AVERAGE WITH SLASH +# 2A10; CIRCULATION FUNCTION +# 2A11; ANTICLOCKWISE INTEGRATION +# 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE +# 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE +# 2A14; LINE INTEGRATION NOT INCLUDING THE POLE +# 2A15; INTEGRAL AROUND A POINT OPERATOR +# 2A16; QUATERNION INTEGRAL OPERATOR +# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK +# 2A18; INTEGRAL WITH TIMES SIGN +# 2A19; INTEGRAL WITH INTERSECTION +# 2A1A; INTEGRAL WITH UNION +# 2A1B; INTEGRAL WITH OVERBAR +# 2A1C; INTEGRAL WITH UNDERBAR +# 2A1E; LARGE LEFT TRIANGLE OPERATOR +# 2A1F; Z NOTATION SCHEMA COMPOSITION +# 2A20; Z NOTATION SCHEMA PIPING +# 2A21; Z NOTATION SCHEMA PROJECTION +# 2A24; PLUS SIGN WITH TILDE ABOVE +# 2A26; PLUS SIGN WITH TILDE BELOW +# 2A29; MINUS SIGN WITH COMMA ABOVE +# 2A3E; Z NOTATION RELATIONAL COMPOSITION +# 2A57; SLOPING LARGE OR +# 2A58; SLOPING LARGE AND +# 2A6A; TILDE OPERATOR WITH DOT ABOVE +# 2A6B; TILDE OPERATOR WITH RISING DOTS +# 2A6C; SIMILAR MINUS SIMILAR +# 2A6D; CONGRUENT WITH DOT ABOVE +# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT +# 2A70; APPROXIMATELY EQUAL OR EQUAL TO +# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR +# 2A74; DOUBLE COLON EQUAL +# 2A7B; LESS-THAN WITH QUESTION MARK ABOVE +# 2A7C; GREATER-THAN WITH QUESTION MARK ABOVE +# 2A85; LESS-THAN OR APPROXIMATE +# 2A86; GREATER-THAN OR APPROXIMATE +# 2A87; LESS-THAN AND SINGLE-LINE NOT EQUAL TO +# 2A88; GREATER-THAN AND SINGLE-LINE NOT EQUAL TO +# 2A89; LESS-THAN AND NOT APPROXIMATE +# 2A8A; GREATER-THAN AND NOT APPROXIMATE +# 2A8D; LESS-THAN ABOVE SIMILAR OR EQUAL +# 2A8E; GREATER-THAN ABOVE SIMILAR OR EQUAL +# 2A8F; LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN +# 2A90; GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN +# 2A9D; SIMILAR OR LESS-THAN +# 2A9E; SIMILAR OR GREATER-THAN +# 2A9F; SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN +# 2AA0; SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN +# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR +# 2AB1; PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO +# 2AB2; SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO +# 2AB5; PRECEDES ABOVE NOT EQUAL TO +# 2AB6; SUCCEEDS ABOVE NOT EQUAL TO +# 2AB7; PRECEDES ABOVE ALMOST EQUAL TO +# 2AB8; SUCCEEDS ABOVE ALMOST EQUAL TO +# 2AB9; PRECEDES ABOVE NOT ALMOST EQUAL TO +# 2ABA; SUCCEEDS ABOVE NOT ALMOST EQUAL TO +# 2AC7; SUBSET OF ABOVE TILDE OPERATOR +# 2AC8; SUPERSET OF ABOVE TILDE OPERATOR +# 2AC9; SUBSET OF ABOVE ALMOST EQUAL TO +# 2ACA; SUPERSET OF ABOVE ALMOST EQUAL TO +# 2ACB; SUBSET OF ABOVE NOT EQUAL TO +# 2ACC; SUPERSET OF ABOVE NOT EQUAL TO +# 2ADC; FORKING +# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE +# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL +# 2AEE; DOES NOT DIVIDE WITH REVERSED NEGATION SLASH +# 2AF3; PARALLEL WITH TILDE OPERATOR +# 2AFB; TRIPLE SOLIDUS BINARY RELATION +# 2AFD; DOUBLE SOLIDUS OPERATOR +# 1D6DB; MATHEMATICAL BOLD PARTIAL DIFFERENTIAL +# 1D715; MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL +# 1D74F; MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL +# 1D789; MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL +# 1D7C3; MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL + +# EOF === modified file 'admin/unidata/Makefile.in' --- admin/unidata/Makefile.in 2010-01-13 08:35:10 +0000 +++ admin/unidata/Makefile.in 2010-06-12 15:52:43 +0000 @@ -23,7 +23,7 @@ DSTDIR = ../../lisp/international RUNEMACS = ${EMACS} -Q --multibyte -batch -all: ${DSTDIR}/charprop.el +all: ${DSTDIR}/charprop.el ../../src/biditype.h ../../src/bidimirror.h .el.elc: ${RUNEMACS} -batch -f batch-byte-compile $< @@ -37,6 +37,12 @@ cd ${DSTDIR}; \ ${RUNEMACS} -batch --load $${ELC} -f unidata-gen-files $${DATA} +../../src/biditype.h: UnicodeData.txt + gawk -F";" -f biditype.awk $< > $@ + +../../src/bidimirror.h: BidiMirroring.txt + gawk -F"[; ]+" -f bidimirror.awk $< > $@ + install: charprop.el cp charprop.el ${DSTDIR} cp `sed -n 's/^;; FILE: //p' < charprop.el` ${DSTDIR} === added file 'admin/unidata/bidimirror.awk' --- admin/unidata/bidimirror.awk 1970-01-01 00:00:00 +0000 +++ admin/unidata/bidimirror.awk 2010-06-12 15:52:43 +0000 @@ -0,0 +1,37 @@ +# Generate data for bidi_mirroring_table, see src/bidi.c:bidi_initialize. + +# Copyright (C) 2010, Free Software Foundation, Inc. + +# This file is part of GNU Emacs. + +# GNU Emacs is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# GNU Emacs is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with GNU Emacs. If not, see . + +# Written by Eli Zaretskii + +BEGIN { + printf " struct {\n int from, to;\n } bidi_mirror[] = {\n"; + first = 1; + } + +$1 !~ /^#/ && NF >= 2 { + if (!first) + printf ",\n"; + else + first = 0; + printf "\t{ 0x%s, 0x%s }", $1, $2; + } + +END { + printf " };\n"; + } === added file 'admin/unidata/biditype.awk' --- admin/unidata/biditype.awk 1970-01-01 00:00:00 +0000 +++ admin/unidata/biditype.awk 2010-06-12 15:52:43 +0000 @@ -0,0 +1,93 @@ +# Generate data for filling bidi_type_table, see src/bidi.c:bidi_initialize. + +# Copyright (C) 2010, Free Software Foundation, Inc. + +# This file is part of GNU Emacs. + +# GNU Emacs is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# GNU Emacs is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with GNU Emacs. If not, see . + +# Written by Eli Zaretskii + +function trtype(type) +{ + # Types are listed in the order of decresing use in UnicodeData.txt: + if (type == "ON") + return "NEUTRAL_ON"; + else if (type == "NSM") + return "WEAK_NSM"; + else if (type == "AL") + return "STRONG_AL"; + else if (type == "R") + return "STRONG_R"; + else if (type == "BN") + return "WEAK_BN"; + else if (type == "EN") + return "WEAK_EN"; + else if (type == "ET") + return "WEAK_ET"; + else if (type == "AN") + return "WEAK_AN"; + else if (type == "WS") + return "NEUTRAL_WS"; + else if (type == "CS") + return "WEAK_CS"; + else if (type == "ES") + return "WEAK_ES"; + else if (type == "B") + return "NEUTRAL_B"; + else if (type == "S") + return "NEUTRAL_S"; + else if (type == "LRE" || type == "RLE" || type == "LRO" || type == "RLO" || type == "PDF") + return type; + else if (type == "L") + return "STRONG_L"; + else + { + printf "Unknown type: %s\n", type > "/dev/stderr"; + exit 1; + } +} + +BEGIN { + otype = ""; + startcode = ""; + endcode = ""; + printf " struct {\n int from, to;\n bidi_type_t type;\n } bidi_type[] = {\n"; + first = 1; + } + + { code = $1; + ntype = $5; + if (ntype != otype) + { + # Don't output data for L, as that's the default value, see bidi.c. + if (otype != "L" && startcode != "") + { + if (!first) + printf ",\n"; + else + first = 0; + printf "\t{ 0x%s, 0x%s, %s }", startcode, endcode, trtype(otype); + } + otype = ntype; + startcode = code; + endcode = code; + } + else + endcode = code; + } + +END { + printf " };\n"; + } === modified file 'admin/unidata/makefile.w32-in' --- admin/unidata/makefile.w32-in 2010-01-13 08:35:10 +0000 +++ admin/unidata/makefile.w32-in 2010-06-12 15:52:43 +0000 @@ -29,7 +29,7 @@ # Quote EMACS so it could be a file name with embedded whitespace RUNEMACS = "$(EMACS)" -Q --multibyte -batch -all: $(DSTDIR)/charprop.el +all: $(DSTDIR)/charprop.el ../../src/biditype.h ../../src/bidimirror.h .el.elc: $(RUNEMACS) -f batch-byte-compile $< @@ -50,6 +50,16 @@ ${DSTDIR}/charprop.el: charprop-$(SHELLTYPE) +../../src/biditype.h: UnicodeData.txt + gawk -F";" -f biditype.awk -v BINMODE=2 $< > biditype.h + $(CP) biditype.h $@ + $(DEL) biditype.h + +../../src/bidimirror.h: BidiMirroring.txt + gawk -F"[; ]+" -f bidimirror.awk -v BINMODE=2 $< > bidimirror.h + $(CP) bidimirror.h $@ + $(DEL) bidimirror.h + clean: - - $(DEL) unidata-gen.elc unidata.txt + - $(DEL) unidata-gen.elc unidata.txt biditype.h bidimirror.h === modified file 'src/ChangeLog' --- src/ChangeLog 2010-06-12 11:30:48 +0000 +++ src/ChangeLog 2010-06-12 15:52:43 +0000 @@ -1,5 +1,20 @@ 2010-06-12 Eli Zaretskii + * makefile.w32-in ($(BLD)/bidi.$(O)): Depend on biditype.h and + bidimirror.h. + + * deps.mk (bidi.o): Depend on biditype.h and bidimirror.h. + + * bidi.c (bidi_initialize): Remove explicit initialization of + bidi_type_table; include biditype.h instead. Don't support + entries whose second codepoint is zero. Initialize + bidi_mirror_table. + (bidi_mirror_char): Use bidi_mirror_table. + + * biditype.h: New file. + + * bidimirror.h: New file. + * window.c (syms_of_window): Doc fix (bug#6409). 2010-06-12 Romain Francoise === modified file 'src/bidi.c' --- src/bidi.c 2010-05-30 19:01:51 +0000 +++ src/bidi.c 2010-06-12 15:52:43 +0000 @@ -68,7 +68,7 @@ static int bidi_initialized = 0; -static Lisp_Object bidi_type_table; +static Lisp_Object bidi_type_table, bidi_mirror_table; /* FIXME: Remove these when bidi_explicit_dir_char uses a lookup table. */ #define LRM_CHAR 0x200E @@ -108,297 +108,26 @@ static void bidi_initialize () { - /* FIXME: This should come from the Unicode Database. */ - struct { - int from, to; - bidi_type_t type; - } bidi_type[] = - { { 0x0000, 0x0008, WEAK_BN }, - { 0x0009, 0x0000, NEUTRAL_S }, - { 0x000A, 0x0000, NEUTRAL_B }, - { 0x000B, 0x0000, NEUTRAL_S }, - { 0x000C, 0x0000, NEUTRAL_WS }, - { 0x000D, 0x0000, NEUTRAL_B }, - { 0x000E, 0x001B, WEAK_BN }, - { 0x001C, 0x001E, NEUTRAL_B }, - { 0x001F, 0x0000, NEUTRAL_S }, - { 0x0020, 0x0000, NEUTRAL_WS }, - { 0x0021, 0x0022, NEUTRAL_ON }, - { 0x0023, 0x0025, WEAK_ET }, - { 0x0026, 0x002A, NEUTRAL_ON }, - { 0x002B, 0x0000, WEAK_ES }, - { 0x002C, 0x0000, WEAK_CS }, - { 0x002D, 0x0000, WEAK_ES }, - { 0x002E, 0x002F, WEAK_CS }, - { 0x0030, 0x0039, WEAK_EN }, - { 0x003A, 0x0000, WEAK_CS }, - { 0x003B, 0x0040, NEUTRAL_ON }, - { 0x005B, 0x0060, NEUTRAL_ON }, - { 0x007B, 0x007E, NEUTRAL_ON }, - { 0x007F, 0x0084, WEAK_BN }, - { 0x0085, 0x0000, NEUTRAL_B }, - { 0x0086, 0x009F, WEAK_BN }, - { 0x00A0, 0x0000, WEAK_CS }, - { 0x00A1, 0x0000, NEUTRAL_ON }, - { 0x00A2, 0x00A5, WEAK_ET }, - { 0x00A6, 0x00A9, NEUTRAL_ON }, - { 0x00AB, 0x00AC, NEUTRAL_ON }, - { 0x00AD, 0x0000, WEAK_BN }, - { 0x00AE, 0x00Af, NEUTRAL_ON }, - { 0x00B0, 0x00B1, WEAK_ET }, - { 0x00B2, 0x00B3, WEAK_EN }, - { 0x00B4, 0x0000, NEUTRAL_ON }, - { 0x00B6, 0x00B8, NEUTRAL_ON }, - { 0x00B9, 0x0000, WEAK_EN }, - { 0x00BB, 0x00BF, NEUTRAL_ON }, - { 0x00D7, 0x0000, NEUTRAL_ON }, - { 0x00F7, 0x0000, NEUTRAL_ON }, - { 0x02B9, 0x02BA, NEUTRAL_ON }, - { 0x02C2, 0x02CF, NEUTRAL_ON }, - { 0x02D2, 0x02DF, NEUTRAL_ON }, - { 0x02E5, 0x02ED, NEUTRAL_ON }, - { 0x0300, 0x036F, WEAK_NSM }, - { 0x0374, 0x0375, NEUTRAL_ON }, - { 0x037E, 0x0385, NEUTRAL_ON }, - { 0x0387, 0x0000, NEUTRAL_ON }, - { 0x03F6, 0x0000, NEUTRAL_ON }, - { 0x0483, 0x0489, WEAK_NSM }, - { 0x058A, 0x0000, NEUTRAL_ON }, - { 0x0591, 0x05BD, WEAK_NSM }, - { 0x05BE, 0x0000, STRONG_R }, - { 0x05BF, 0x0000, WEAK_NSM }, - { 0x05C0, 0x0000, STRONG_R }, - { 0x05C1, 0x05C2, WEAK_NSM }, - { 0x05C3, 0x0000, STRONG_R }, - { 0x05C4, 0x05C5, WEAK_NSM }, - { 0x05C6, 0x0000, STRONG_R }, - { 0x05C7, 0x0000, WEAK_NSM }, - { 0x05D0, 0x05F4, STRONG_R }, - { 0x060C, 0x0000, WEAK_CS }, - { 0x061B, 0x064A, STRONG_AL }, - { 0x064B, 0x0655, WEAK_NSM }, - { 0x0660, 0x0669, WEAK_AN }, - { 0x066A, 0x0000, WEAK_ET }, - { 0x066B, 0x066C, WEAK_AN }, - { 0x066D, 0x066F, STRONG_AL }, - { 0x0670, 0x0000, WEAK_NSM }, - { 0x0671, 0x06D5, STRONG_AL }, - { 0x06D6, 0x06DC, WEAK_NSM }, - { 0x06DD, 0x0000, STRONG_AL }, - { 0x06DE, 0x06E4, WEAK_NSM }, - { 0x06E5, 0x06E6, STRONG_AL }, - { 0x06E7, 0x06E8, WEAK_NSM }, - { 0x06E9, 0x0000, NEUTRAL_ON }, - { 0x06EA, 0x06ED, WEAK_NSM }, - { 0x06F0, 0x06F9, WEAK_EN }, - { 0x06FA, 0x070D, STRONG_AL }, - { 0x070F, 0x0000, WEAK_BN }, - { 0x0710, 0x0000, STRONG_AL }, - { 0x0711, 0x0000, WEAK_NSM }, - { 0x0712, 0x072C, STRONG_AL }, - { 0x0730, 0x074A, WEAK_NSM }, - { 0x0780, 0x07A5, STRONG_AL }, - { 0x07A6, 0x07B0, WEAK_NSM }, - { 0x07B1, 0x0000, STRONG_AL }, - { 0x0901, 0x0902, WEAK_NSM }, - { 0x093C, 0x0000, WEAK_NSM }, - { 0x0941, 0x0948, WEAK_NSM }, - { 0x094D, 0x0000, WEAK_NSM }, - { 0x0951, 0x0954, WEAK_NSM }, - { 0x0962, 0x0963, WEAK_NSM }, - { 0x0981, 0x0000, WEAK_NSM }, - { 0x09BC, 0x0000, WEAK_NSM }, - { 0x09C1, 0x09C4, WEAK_NSM }, - { 0x09CD, 0x0000, WEAK_NSM }, - { 0x09E2, 0x09E3, WEAK_NSM }, - { 0x09F2, 0x09F3, WEAK_ET }, - { 0x0A02, 0x0000, WEAK_NSM }, - { 0x0A3C, 0x0000, WEAK_NSM }, - { 0x0A41, 0x0A4D, WEAK_NSM }, - { 0x0A70, 0x0A71, WEAK_NSM }, - { 0x0A81, 0x0A82, WEAK_NSM }, - { 0x0ABC, 0x0000, WEAK_NSM }, - { 0x0AC1, 0x0AC8, WEAK_NSM }, - { 0x0ACD, 0x0000, WEAK_NSM }, - { 0x0B01, 0x0000, WEAK_NSM }, - { 0x0B3C, 0x0000, WEAK_NSM }, - { 0x0B3F, 0x0000, WEAK_NSM }, - { 0x0B41, 0x0B43, WEAK_NSM }, - { 0x0B4D, 0x0B56, WEAK_NSM }, - { 0x0B82, 0x0000, WEAK_NSM }, - { 0x0BC0, 0x0000, WEAK_NSM }, - { 0x0BCD, 0x0000, WEAK_NSM }, - { 0x0C3E, 0x0C40, WEAK_NSM }, - { 0x0C46, 0x0C56, WEAK_NSM }, - { 0x0CBF, 0x0000, WEAK_NSM }, - { 0x0CC6, 0x0000, WEAK_NSM }, - { 0x0CCC, 0x0CCD, WEAK_NSM }, - { 0x0D41, 0x0D43, WEAK_NSM }, - { 0x0D4D, 0x0000, WEAK_NSM }, - { 0x0DCA, 0x0000, WEAK_NSM }, - { 0x0DD2, 0x0DD6, WEAK_NSM }, - { 0x0E31, 0x0000, WEAK_NSM }, - { 0x0E34, 0x0E3A, WEAK_NSM }, - { 0x0E3F, 0x0000, WEAK_ET }, - { 0x0E47, 0x0E4E, WEAK_NSM }, - { 0x0EB1, 0x0000, WEAK_NSM }, - { 0x0EB4, 0x0EBC, WEAK_NSM }, - { 0x0EC8, 0x0ECD, WEAK_NSM }, - { 0x0F18, 0x0F19, WEAK_NSM }, - { 0x0F35, 0x0000, WEAK_NSM }, - { 0x0F37, 0x0000, WEAK_NSM }, - { 0x0F39, 0x0000, WEAK_NSM }, - { 0x0F3A, 0x0F3D, NEUTRAL_ON }, - { 0x0F71, 0x0F7E, WEAK_NSM }, - { 0x0F80, 0x0F84, WEAK_NSM }, - { 0x0F86, 0x0F87, WEAK_NSM }, - { 0x0F90, 0x0FBC, WEAK_NSM }, - { 0x0FC6, 0x0000, WEAK_NSM }, - { 0x102D, 0x1030, WEAK_NSM }, - { 0x1032, 0x1037, WEAK_NSM }, - { 0x1039, 0x0000, WEAK_NSM }, - { 0x1058, 0x1059, WEAK_NSM }, - { 0x1680, 0x0000, NEUTRAL_WS }, - { 0x169B, 0x169C, NEUTRAL_ON }, - { 0x1712, 0x1714, WEAK_NSM }, - { 0x1732, 0x1734, WEAK_NSM }, - { 0x1752, 0x1753, WEAK_NSM }, - { 0x1772, 0x1773, WEAK_NSM }, - { 0x17B7, 0x17BD, WEAK_NSM }, - { 0x17C6, 0x0000, WEAK_NSM }, - { 0x17C9, 0x17D3, WEAK_NSM }, - { 0x17DB, 0x0000, WEAK_ET }, - { 0x1800, 0x180A, NEUTRAL_ON }, - { 0x180B, 0x180D, WEAK_NSM }, - { 0x180E, 0x0000, WEAK_BN }, - { 0x18A9, 0x0000, WEAK_NSM }, - { 0x1FBD, 0x0000, NEUTRAL_ON }, - { 0x1FBF, 0x1FC1, NEUTRAL_ON }, - { 0x1FCD, 0x1FCF, NEUTRAL_ON }, - { 0x1FDD, 0x1FDF, NEUTRAL_ON }, - { 0x1FED, 0x1FEF, NEUTRAL_ON }, - { 0x1FFD, 0x1FFE, NEUTRAL_ON }, - { 0x2000, 0x200A, NEUTRAL_WS }, - { 0x200B, 0x200D, WEAK_BN }, - { 0x200F, 0x0000, STRONG_R }, - { 0x2010, 0x2027, NEUTRAL_ON }, - { 0x2028, 0x0000, NEUTRAL_WS }, - { 0x2029, 0x0000, NEUTRAL_B }, - { 0x202A, 0x0000, LRE }, - { 0x202B, 0x0000, RLE }, - { 0x202C, 0x0000, PDF }, - { 0x202D, 0x0000, LRO }, - { 0x202E, 0x0000, RLO }, - { 0x202F, 0x0000, NEUTRAL_WS }, - { 0x2030, 0x2034, WEAK_ET }, - { 0x2035, 0x2057, NEUTRAL_ON }, - { 0x205F, 0x0000, NEUTRAL_WS }, - { 0x2060, 0x206F, WEAK_BN }, - { 0x2070, 0x0000, WEAK_EN }, - { 0x2074, 0x2079, WEAK_EN }, - { 0x207A, 0x207B, WEAK_ET }, - { 0x207C, 0x207E, NEUTRAL_ON }, - { 0x2080, 0x2089, WEAK_EN }, - { 0x208A, 0x208B, WEAK_ET }, - { 0x208C, 0x208E, NEUTRAL_ON }, - { 0x20A0, 0x20B1, WEAK_ET }, - { 0x20D0, 0x20EA, WEAK_NSM }, - { 0x2100, 0x2101, NEUTRAL_ON }, - { 0x2103, 0x2106, NEUTRAL_ON }, - { 0x2108, 0x2109, NEUTRAL_ON }, - { 0x2114, 0x0000, NEUTRAL_ON }, - { 0x2116, 0x2118, NEUTRAL_ON }, - { 0x211E, 0x2123, NEUTRAL_ON }, - { 0x2125, 0x0000, NEUTRAL_ON }, - { 0x2127, 0x0000, NEUTRAL_ON }, - { 0x2129, 0x0000, NEUTRAL_ON }, - { 0x212E, 0x0000, WEAK_ET }, - { 0x2132, 0x0000, NEUTRAL_ON }, - { 0x213A, 0x0000, NEUTRAL_ON }, - { 0x2140, 0x2144, NEUTRAL_ON }, - { 0x214A, 0x215F, NEUTRAL_ON }, - { 0x2190, 0x2211, NEUTRAL_ON }, - { 0x2212, 0x2213, WEAK_ET }, - { 0x2214, 0x2335, NEUTRAL_ON }, - { 0x237B, 0x2394, NEUTRAL_ON }, - { 0x2396, 0x244A, NEUTRAL_ON }, - { 0x2460, 0x249B, WEAK_EN }, - { 0x24EA, 0x0000, WEAK_EN }, - { 0x24EB, 0x2FFB, NEUTRAL_ON }, - { 0x3000, 0x0000, NEUTRAL_WS }, - { 0x3001, 0x3004, NEUTRAL_ON }, - { 0x3008, 0x3020, NEUTRAL_ON }, - { 0x302A, 0x302F, WEAK_NSM }, - { 0x3030, 0x0000, NEUTRAL_ON }, - { 0x3036, 0x3037, NEUTRAL_ON }, - { 0x303D, 0x303F, NEUTRAL_ON }, - { 0x3099, 0x309A, WEAK_NSM }, - { 0x309B, 0x309C, NEUTRAL_ON }, - { 0x30A0, 0x0000, NEUTRAL_ON }, - { 0x30FB, 0x0000, NEUTRAL_ON }, - { 0x3251, 0x325F, NEUTRAL_ON }, - { 0x32B1, 0x32BF, NEUTRAL_ON }, - { 0xA490, 0xA4C6, NEUTRAL_ON }, - { 0xFB1D, 0x0000, STRONG_R }, - { 0xFB1E, 0x0000, WEAK_NSM }, - { 0xFB1F, 0xFB28, STRONG_R }, - { 0xFB29, 0x0000, WEAK_ET }, - { 0xFB2A, 0xFB4F, STRONG_R }, - { 0xFB50, 0xFD3D, STRONG_AL }, - { 0xFD3E, 0xFD3F, NEUTRAL_ON }, - { 0xFD50, 0xFDFC, STRONG_AL }, - { 0xFE00, 0xFE23, WEAK_NSM }, - { 0xFE30, 0xFE4F, NEUTRAL_ON }, - { 0xFE50, 0x0000, WEAK_CS }, - { 0xFE51, 0x0000, NEUTRAL_ON }, - { 0xFE52, 0x0000, WEAK_CS }, - { 0xFE54, 0x0000, NEUTRAL_ON }, - { 0xFE55, 0x0000, WEAK_CS }, - { 0xFE56, 0xFE5E, NEUTRAL_ON }, - { 0xFE5F, 0x0000, WEAK_ET }, - { 0xFE60, 0xFE61, NEUTRAL_ON }, - { 0xFE62, 0xFE63, WEAK_ET }, - { 0xFE64, 0xFE68, NEUTRAL_ON }, - { 0xFE69, 0xFE6A, WEAK_ET }, - { 0xFE6B, 0x0000, NEUTRAL_ON }, - { 0xFE70, 0xFEFC, STRONG_AL }, - { 0xFEFF, 0x0000, WEAK_BN }, - { 0xFF01, 0xFF02, NEUTRAL_ON }, - { 0xFF03, 0xFF05, WEAK_ET }, - { 0xFF06, 0xFF0A, NEUTRAL_ON }, - { 0xFF0B, 0x0000, WEAK_ET }, - { 0xFF0C, 0x0000, WEAK_CS }, - { 0xFF0D, 0x0000, WEAK_ET }, - { 0xFF0E, 0x0000, WEAK_CS }, - { 0xFF0F, 0x0000, WEAK_ES }, - { 0xFF10, 0xFF19, WEAK_EN }, - { 0xFF1A, 0x0000, WEAK_CS }, - { 0xFF1B, 0xFF20, NEUTRAL_ON }, - { 0xFF3B, 0xFF40, NEUTRAL_ON }, - { 0xFF5B, 0xFF65, NEUTRAL_ON }, - { 0xFFE0, 0xFFE1, WEAK_ET }, - { 0xFFE2, 0xFFE4, NEUTRAL_ON }, - { 0xFFE5, 0xFFE6, WEAK_ET }, - { 0xFFE8, 0xFFEE, NEUTRAL_ON }, - { 0xFFF9, 0xFFFB, WEAK_BN }, - { 0xFFFC, 0xFFFD, NEUTRAL_ON }, - { 0x1D167, 0x1D169, WEAK_NSM }, - { 0x1D173, 0x1D17A, WEAK_BN }, - { 0x1D17B, 0x1D182, WEAK_NSM }, - { 0x1D185, 0x1D18B, WEAK_NSM }, - { 0x1D1AA, 0x1D1AD, WEAK_NSM }, - { 0x1D7CE, 0x1D7FF, WEAK_EN }, - { 0xE0001, 0xE007F, WEAK_BN } }; + +#include "biditype.h" +#include "bidimirror.h" + int i; bidi_type_table = Fmake_char_table (Qnil, make_number (STRONG_L)); staticpro (&bidi_type_table); for (i = 0; i < sizeof bidi_type / sizeof bidi_type[0]; i++) - char_table_set_range (bidi_type_table, bidi_type[i].from, - bidi_type[i].to ? bidi_type[i].to : bidi_type[i].from, + char_table_set_range (bidi_type_table, bidi_type[i].from, bidi_type[i].to, make_number (bidi_type[i].type)); + bidi_mirror_table = Fmake_char_table (Qnil, Qnil); + staticpro (&bidi_mirror_table); + + for (i = 0; i < sizeof bidi_mirror / sizeof bidi_mirror[0]; i++) + char_table_set (bidi_mirror_table, bidi_mirror[i].from, + make_number (bidi_mirror[i].to)); + Qparagraph_start = intern ("paragraph-start"); staticpro (&Qparagraph_start); paragraph_start_re = Fsymbol_value (Qparagraph_start); @@ -505,20 +234,27 @@ Note: The conditions in UAX#9 clause L4 must be tested by the caller. */ -/* FIXME: exceedingly temporary! Should consult the Unicode database - of character properties. */ int bidi_mirror_char (int c) { - static const char mirrored_pairs[] = "()<>[]{}"; - const char *p = c > 0 && c < 128 ? strchr (mirrored_pairs, c) : NULL; - - if (p) + Lisp_Object val; + + if (c == BIDI_EOB) + return c; + if (c < 0 || c > MAX_CHAR) + abort (); + + val = CHAR_TABLE_REF (bidi_mirror_table, c); + if (INTEGERP (val)) { - size_t i = p - mirrored_pairs; - - return mirrored_pairs [(i ^ 1)]; + int v = XINT (val); + + if (v < 0 || v > MAX_CHAR) + abort (); + + return v; } + return c; } === added file 'src/bidimirror.h' --- src/bidimirror.h 1970-01-01 00:00:00 +0000 +++ src/bidimirror.h 2010-06-12 15:52:43 +0000 @@ -0,0 +1,365 @@ + struct { + int from, to; + } bidi_mirror[] = { + { 0x0028, 0x0029 }, + { 0x0029, 0x0028 }, + { 0x003C, 0x003E }, + { 0x003E, 0x003C }, + { 0x005B, 0x005D }, + { 0x005D, 0x005B }, + { 0x007B, 0x007D }, + { 0x007D, 0x007B }, + { 0x00AB, 0x00BB }, + { 0x00BB, 0x00AB }, + { 0x0F3A, 0x0F3B }, + { 0x0F3B, 0x0F3A }, + { 0x0F3C, 0x0F3D }, + { 0x0F3D, 0x0F3C }, + { 0x169B, 0x169C }, + { 0x169C, 0x169B }, + { 0x2039, 0x203A }, + { 0x203A, 0x2039 }, + { 0x2045, 0x2046 }, + { 0x2046, 0x2045 }, + { 0x207D, 0x207E }, + { 0x207E, 0x207D }, + { 0x208D, 0x208E }, + { 0x208E, 0x208D }, + { 0x2208, 0x220B }, + { 0x2209, 0x220C }, + { 0x220A, 0x220D }, + { 0x220B, 0x2208 }, + { 0x220C, 0x2209 }, + { 0x220D, 0x220A }, + { 0x2215, 0x29F5 }, + { 0x223C, 0x223D }, + { 0x223D, 0x223C }, + { 0x2243, 0x22CD }, + { 0x2252, 0x2253 }, + { 0x2253, 0x2252 }, + { 0x2254, 0x2255 }, + { 0x2255, 0x2254 }, + { 0x2264, 0x2265 }, + { 0x2265, 0x2264 }, + { 0x2266, 0x2267 }, + { 0x2267, 0x2266 }, + { 0x2268, 0x2269 }, + { 0x2269, 0x2268 }, + { 0x226A, 0x226B }, + { 0x226B, 0x226A }, + { 0x226E, 0x226F }, + { 0x226F, 0x226E }, + { 0x2270, 0x2271 }, + { 0x2271, 0x2270 }, + { 0x2272, 0x2273 }, + { 0x2273, 0x2272 }, + { 0x2274, 0x2275 }, + { 0x2275, 0x2274 }, + { 0x2276, 0x2277 }, + { 0x2277, 0x2276 }, + { 0x2278, 0x2279 }, + { 0x2279, 0x2278 }, + { 0x227A, 0x227B }, + { 0x227B, 0x227A }, + { 0x227C, 0x227D }, + { 0x227D, 0x227C }, + { 0x227E, 0x227F }, + { 0x227F, 0x227E }, + { 0x2280, 0x2281 }, + { 0x2281, 0x2280 }, + { 0x2282, 0x2283 }, + { 0x2283, 0x2282 }, + { 0x2284, 0x2285 }, + { 0x2285, 0x2284 }, + { 0x2286, 0x2287 }, + { 0x2287, 0x2286 }, + { 0x2288, 0x2289 }, + { 0x2289, 0x2288 }, + { 0x228A, 0x228B }, + { 0x228B, 0x228A }, + { 0x228F, 0x2290 }, + { 0x2290, 0x228F }, + { 0x2291, 0x2292 }, + { 0x2292, 0x2291 }, + { 0x2298, 0x29B8 }, + { 0x22A2, 0x22A3 }, + { 0x22A3, 0x22A2 }, + { 0x22A6, 0x2ADE }, + { 0x22A8, 0x2AE4 }, + { 0x22A9, 0x2AE3 }, + { 0x22AB, 0x2AE5 }, + { 0x22B0, 0x22B1 }, + { 0x22B1, 0x22B0 }, + { 0x22B2, 0x22B3 }, + { 0x22B3, 0x22B2 }, + { 0x22B4, 0x22B5 }, + { 0x22B5, 0x22B4 }, + { 0x22B6, 0x22B7 }, + { 0x22B7, 0x22B6 }, + { 0x22C9, 0x22CA }, + { 0x22CA, 0x22C9 }, + { 0x22CB, 0x22CC }, + { 0x22CC, 0x22CB }, + { 0x22CD, 0x2243 }, + { 0x22D0, 0x22D1 }, + { 0x22D1, 0x22D0 }, + { 0x22D6, 0x22D7 }, + { 0x22D7, 0x22D6 }, + { 0x22D8, 0x22D9 }, + { 0x22D9, 0x22D8 }, + { 0x22DA, 0x22DB }, + { 0x22DB, 0x22DA }, + { 0x22DC, 0x22DD }, + { 0x22DD, 0x22DC }, + { 0x22DE, 0x22DF }, + { 0x22DF, 0x22DE }, + { 0x22E0, 0x22E1 }, + { 0x22E1, 0x22E0 }, + { 0x22E2, 0x22E3 }, + { 0x22E3, 0x22E2 }, + { 0x22E4, 0x22E5 }, + { 0x22E5, 0x22E4 }, + { 0x22E6, 0x22E7 }, + { 0x22E7, 0x22E6 }, + { 0x22E8, 0x22E9 }, + { 0x22E9, 0x22E8 }, + { 0x22EA, 0x22EB }, + { 0x22EB, 0x22EA }, + { 0x22EC, 0x22ED }, + { 0x22ED, 0x22EC }, + { 0x22F0, 0x22F1 }, + { 0x22F1, 0x22F0 }, + { 0x22F2, 0x22FA }, + { 0x22F3, 0x22FB }, + { 0x22F4, 0x22FC }, + { 0x22F6, 0x22FD }, + { 0x22F7, 0x22FE }, + { 0x22FA, 0x22F2 }, + { 0x22FB, 0x22F3 }, + { 0x22FC, 0x22F4 }, + { 0x22FD, 0x22F6 }, + { 0x22FE, 0x22F7 }, + { 0x2308, 0x2309 }, + { 0x2309, 0x2308 }, + { 0x230A, 0x230B }, + { 0x230B, 0x230A }, + { 0x2329, 0x232A }, + { 0x232A, 0x2329 }, + { 0x2768, 0x2769 }, + { 0x2769, 0x2768 }, + { 0x276A, 0x276B }, + { 0x276B, 0x276A }, + { 0x276C, 0x276D }, + { 0x276D, 0x276C }, + { 0x276E, 0x276F }, + { 0x276F, 0x276E }, + { 0x2770, 0x2771 }, + { 0x2771, 0x2770 }, + { 0x2772, 0x2773 }, + { 0x2773, 0x2772 }, + { 0x2774, 0x2775 }, + { 0x2775, 0x2774 }, + { 0x27C3, 0x27C4 }, + { 0x27C4, 0x27C3 }, + { 0x27C5, 0x27C6 }, + { 0x27C6, 0x27C5 }, + { 0x27C8, 0x27C9 }, + { 0x27C9, 0x27C8 }, + { 0x27D5, 0x27D6 }, + { 0x27D6, 0x27D5 }, + { 0x27DD, 0x27DE }, + { 0x27DE, 0x27DD }, + { 0x27E2, 0x27E3 }, + { 0x27E3, 0x27E2 }, + { 0x27E4, 0x27E5 }, + { 0x27E5, 0x27E4 }, + { 0x27E6, 0x27E7 }, + { 0x27E7, 0x27E6 }, + { 0x27E8, 0x27E9 }, + { 0x27E9, 0x27E8 }, + { 0x27EA, 0x27EB }, + { 0x27EB, 0x27EA }, + { 0x27EC, 0x27ED }, + { 0x27ED, 0x27EC }, + { 0x27EE, 0x27EF }, + { 0x27EF, 0x27EE }, + { 0x2983, 0x2984 }, + { 0x2984, 0x2983 }, + { 0x2985, 0x2986 }, + { 0x2986, 0x2985 }, + { 0x2987, 0x2988 }, + { 0x2988, 0x2987 }, + { 0x2989, 0x298A }, + { 0x298A, 0x2989 }, + { 0x298B, 0x298C }, + { 0x298C, 0x298B }, + { 0x298D, 0x2990 }, + { 0x298E, 0x298F }, + { 0x298F, 0x298E }, + { 0x2990, 0x298D }, + { 0x2991, 0x2992 }, + { 0x2992, 0x2991 }, + { 0x2993, 0x2994 }, + { 0x2994, 0x2993 }, + { 0x2995, 0x2996 }, + { 0x2996, 0x2995 }, + { 0x2997, 0x2998 }, + { 0x2998, 0x2997 }, + { 0x29B8, 0x2298 }, + { 0x29C0, 0x29C1 }, + { 0x29C1, 0x29C0 }, + { 0x29C4, 0x29C5 }, + { 0x29C5, 0x29C4 }, + { 0x29CF, 0x29D0 }, + { 0x29D0, 0x29CF }, + { 0x29D1, 0x29D2 }, + { 0x29D2, 0x29D1 }, + { 0x29D4, 0x29D5 }, + { 0x29D5, 0x29D4 }, + { 0x29D8, 0x29D9 }, + { 0x29D9, 0x29D8 }, + { 0x29DA, 0x29DB }, + { 0x29DB, 0x29DA }, + { 0x29F5, 0x2215 }, + { 0x29F8, 0x29F9 }, + { 0x29F9, 0x29F8 }, + { 0x29FC, 0x29FD }, + { 0x29FD, 0x29FC }, + { 0x2A2B, 0x2A2C }, + { 0x2A2C, 0x2A2B }, + { 0x2A2D, 0x2A2E }, + { 0x2A2E, 0x2A2D }, + { 0x2A34, 0x2A35 }, + { 0x2A35, 0x2A34 }, + { 0x2A3C, 0x2A3D }, + { 0x2A3D, 0x2A3C }, + { 0x2A64, 0x2A65 }, + { 0x2A65, 0x2A64 }, + { 0x2A79, 0x2A7A }, + { 0x2A7A, 0x2A79 }, + { 0x2A7D, 0x2A7E }, + { 0x2A7E, 0x2A7D }, + { 0x2A7F, 0x2A80 }, + { 0x2A80, 0x2A7F }, + { 0x2A81, 0x2A82 }, + { 0x2A82, 0x2A81 }, + { 0x2A83, 0x2A84 }, + { 0x2A84, 0x2A83 }, + { 0x2A8B, 0x2A8C }, + { 0x2A8C, 0x2A8B }, + { 0x2A91, 0x2A92 }, + { 0x2A92, 0x2A91 }, + { 0x2A93, 0x2A94 }, + { 0x2A94, 0x2A93 }, + { 0x2A95, 0x2A96 }, + { 0x2A96, 0x2A95 }, + { 0x2A97, 0x2A98 }, + { 0x2A98, 0x2A97 }, + { 0x2A99, 0x2A9A }, + { 0x2A9A, 0x2A99 }, + { 0x2A9B, 0x2A9C }, + { 0x2A9C, 0x2A9B }, + { 0x2AA1, 0x2AA2 }, + { 0x2AA2, 0x2AA1 }, + { 0x2AA6, 0x2AA7 }, + { 0x2AA7, 0x2AA6 }, + { 0x2AA8, 0x2AA9 }, + { 0x2AA9, 0x2AA8 }, + { 0x2AAA, 0x2AAB }, + { 0x2AAB, 0x2AAA }, + { 0x2AAC, 0x2AAD }, + { 0x2AAD, 0x2AAC }, + { 0x2AAF, 0x2AB0 }, + { 0x2AB0, 0x2AAF }, + { 0x2AB3, 0x2AB4 }, + { 0x2AB4, 0x2AB3 }, + { 0x2ABB, 0x2ABC }, + { 0x2ABC, 0x2ABB }, + { 0x2ABD, 0x2ABE }, + { 0x2ABE, 0x2ABD }, + { 0x2ABF, 0x2AC0 }, + { 0x2AC0, 0x2ABF }, + { 0x2AC1, 0x2AC2 }, + { 0x2AC2, 0x2AC1 }, + { 0x2AC3, 0x2AC4 }, + { 0x2AC4, 0x2AC3 }, + { 0x2AC5, 0x2AC6 }, + { 0x2AC6, 0x2AC5 }, + { 0x2ACD, 0x2ACE }, + { 0x2ACE, 0x2ACD }, + { 0x2ACF, 0x2AD0 }, + { 0x2AD0, 0x2ACF }, + { 0x2AD1, 0x2AD2 }, + { 0x2AD2, 0x2AD1 }, + { 0x2AD3, 0x2AD4 }, + { 0x2AD4, 0x2AD3 }, + { 0x2AD5, 0x2AD6 }, + { 0x2AD6, 0x2AD5 }, + { 0x2ADE, 0x22A6 }, + { 0x2AE3, 0x22A9 }, + { 0x2AE4, 0x22A8 }, + { 0x2AE5, 0x22AB }, + { 0x2AEC, 0x2AED }, + { 0x2AED, 0x2AEC }, + { 0x2AF7, 0x2AF8 }, + { 0x2AF8, 0x2AF7 }, + { 0x2AF9, 0x2AFA }, + { 0x2AFA, 0x2AF9 }, + { 0x2E02, 0x2E03 }, + { 0x2E03, 0x2E02 }, + { 0x2E04, 0x2E05 }, + { 0x2E05, 0x2E04 }, + { 0x2E09, 0x2E0A }, + { 0x2E0A, 0x2E09 }, + { 0x2E0C, 0x2E0D }, + { 0x2E0D, 0x2E0C }, + { 0x2E1C, 0x2E1D }, + { 0x2E1D, 0x2E1C }, + { 0x2E20, 0x2E21 }, + { 0x2E21, 0x2E20 }, + { 0x2E22, 0x2E23 }, + { 0x2E23, 0x2E22 }, + { 0x2E24, 0x2E25 }, + { 0x2E25, 0x2E24 }, + { 0x2E26, 0x2E27 }, + { 0x2E27, 0x2E26 }, + { 0x2E28, 0x2E29 }, + { 0x2E29, 0x2E28 }, + { 0x3008, 0x3009 }, + { 0x3009, 0x3008 }, + { 0x300A, 0x300B }, + { 0x300B, 0x300A }, + { 0x300C, 0x300D }, + { 0x300D, 0x300C }, + { 0x300E, 0x300F }, + { 0x300F, 0x300E }, + { 0x3010, 0x3011 }, + { 0x3011, 0x3010 }, + { 0x3014, 0x3015 }, + { 0x3015, 0x3014 }, + { 0x3016, 0x3017 }, + { 0x3017, 0x3016 }, + { 0x3018, 0x3019 }, + { 0x3019, 0x3018 }, + { 0x301A, 0x301B }, + { 0x301B, 0x301A }, + { 0xFE59, 0xFE5A }, + { 0xFE5A, 0xFE59 }, + { 0xFE5B, 0xFE5C }, + { 0xFE5C, 0xFE5B }, + { 0xFE5D, 0xFE5E }, + { 0xFE5E, 0xFE5D }, + { 0xFE64, 0xFE65 }, + { 0xFE65, 0xFE64 }, + { 0xFF08, 0xFF09 }, + { 0xFF09, 0xFF08 }, + { 0xFF1C, 0xFF1E }, + { 0xFF1E, 0xFF1C }, + { 0xFF3B, 0xFF3D }, + { 0xFF3D, 0xFF3B }, + { 0xFF5B, 0xFF5D }, + { 0xFF5D, 0xFF5B }, + { 0xFF5F, 0xFF60 }, + { 0xFF60, 0xFF5F }, + { 0xFF62, 0xFF63 }, + { 0xFF63, 0xFF62 } }; === added file 'src/biditype.h' --- src/biditype.h 1970-01-01 00:00:00 +0000 +++ src/biditype.h 2010-06-12 15:52:43 +0000 @@ -0,0 +1,446 @@ + struct { + int from, to; + bidi_type_t type; + } bidi_type[] = { + { 0x0000, 0x0008, WEAK_BN }, + { 0x0009, 0x0009, NEUTRAL_S }, + { 0x000A, 0x000A, NEUTRAL_B }, + { 0x000B, 0x000B, NEUTRAL_S }, + { 0x000C, 0x000C, NEUTRAL_WS }, + { 0x000D, 0x000D, NEUTRAL_B }, + { 0x000E, 0x001B, WEAK_BN }, + { 0x001C, 0x001E, NEUTRAL_B }, + { 0x001F, 0x001F, NEUTRAL_S }, + { 0x0020, 0x0020, NEUTRAL_WS }, + { 0x0021, 0x0022, NEUTRAL_ON }, + { 0x0023, 0x0025, WEAK_ET }, + { 0x0026, 0x002A, NEUTRAL_ON }, + { 0x002B, 0x002B, WEAK_ES }, + { 0x002C, 0x002C, WEAK_CS }, + { 0x002D, 0x002D, WEAK_ES }, + { 0x002E, 0x002F, WEAK_CS }, + { 0x0030, 0x0039, WEAK_EN }, + { 0x003A, 0x003A, WEAK_CS }, + { 0x003B, 0x0040, NEUTRAL_ON }, + { 0x005B, 0x0060, NEUTRAL_ON }, + { 0x007B, 0x007E, NEUTRAL_ON }, + { 0x007F, 0x0084, WEAK_BN }, + { 0x0085, 0x0085, NEUTRAL_B }, + { 0x0086, 0x009F, WEAK_BN }, + { 0x00A0, 0x00A0, WEAK_CS }, + { 0x00A1, 0x00A1, NEUTRAL_ON }, + { 0x00A2, 0x00A5, WEAK_ET }, + { 0x00A6, 0x00A9, NEUTRAL_ON }, + { 0x00AB, 0x00AC, NEUTRAL_ON }, + { 0x00AD, 0x00AD, WEAK_BN }, + { 0x00AE, 0x00AF, NEUTRAL_ON }, + { 0x00B0, 0x00B1, WEAK_ET }, + { 0x00B2, 0x00B3, WEAK_EN }, + { 0x00B4, 0x00B4, NEUTRAL_ON }, + { 0x00B6, 0x00B8, NEUTRAL_ON }, + { 0x00B9, 0x00B9, WEAK_EN }, + { 0x00BB, 0x00BF, NEUTRAL_ON }, + { 0x00D7, 0x00D7, NEUTRAL_ON }, + { 0x00F7, 0x00F7, NEUTRAL_ON }, + { 0x02B9, 0x02BA, NEUTRAL_ON }, + { 0x02C2, 0x02CF, NEUTRAL_ON }, + { 0x02D2, 0x02DF, NEUTRAL_ON }, + { 0x02E5, 0x02ED, NEUTRAL_ON }, + { 0x02EF, 0x02FF, NEUTRAL_ON }, + { 0x0300, 0x036F, WEAK_NSM }, + { 0x0374, 0x0375, NEUTRAL_ON }, + { 0x037E, 0x0385, NEUTRAL_ON }, + { 0x0387, 0x0387, NEUTRAL_ON }, + { 0x03F6, 0x03F6, NEUTRAL_ON }, + { 0x0483, 0x0489, WEAK_NSM }, + { 0x058A, 0x058A, NEUTRAL_ON }, + { 0x0591, 0x05BD, WEAK_NSM }, + { 0x05BE, 0x05BE, STRONG_R }, + { 0x05BF, 0x05BF, WEAK_NSM }, + { 0x05C0, 0x05C0, STRONG_R }, + { 0x05C1, 0x05C2, WEAK_NSM }, + { 0x05C3, 0x05C3, STRONG_R }, + { 0x05C4, 0x05C5, WEAK_NSM }, + { 0x05C6, 0x05C6, STRONG_R }, + { 0x05C7, 0x05C7, WEAK_NSM }, + { 0x05D0, 0x05F4, STRONG_R }, + { 0x0600, 0x0603, WEAK_AN }, + { 0x0606, 0x0607, NEUTRAL_ON }, + { 0x0608, 0x0608, STRONG_AL }, + { 0x0609, 0x060A, WEAK_ET }, + { 0x060B, 0x060B, STRONG_AL }, + { 0x060C, 0x060C, WEAK_CS }, + { 0x060D, 0x060D, STRONG_AL }, + { 0x060E, 0x060F, NEUTRAL_ON }, + { 0x0610, 0x061A, WEAK_NSM }, + { 0x061B, 0x064A, STRONG_AL }, + { 0x064B, 0x065F, WEAK_NSM }, + { 0x0660, 0x0669, WEAK_AN }, + { 0x066A, 0x066A, WEAK_ET }, + { 0x066B, 0x066C, WEAK_AN }, + { 0x066D, 0x066F, STRONG_AL }, + { 0x0670, 0x0670, WEAK_NSM }, + { 0x0671, 0x06D5, STRONG_AL }, + { 0x06D6, 0x06DC, WEAK_NSM }, + { 0x06DD, 0x06DD, WEAK_AN }, + { 0x06DE, 0x06E4, WEAK_NSM }, + { 0x06E5, 0x06E6, STRONG_AL }, + { 0x06E7, 0x06E8, WEAK_NSM }, + { 0x06E9, 0x06E9, NEUTRAL_ON }, + { 0x06EA, 0x06ED, WEAK_NSM }, + { 0x06EE, 0x06EF, STRONG_AL }, + { 0x06F0, 0x06F9, WEAK_EN }, + { 0x06FA, 0x070D, STRONG_AL }, + { 0x070F, 0x070F, WEAK_AN }, + { 0x0710, 0x0710, STRONG_AL }, + { 0x0711, 0x0711, WEAK_NSM }, + { 0x0712, 0x072F, STRONG_AL }, + { 0x0730, 0x074A, WEAK_NSM }, + { 0x074D, 0x07A5, STRONG_AL }, + { 0x07A6, 0x07B0, WEAK_NSM }, + { 0x07B1, 0x07B1, STRONG_AL }, + { 0x07C0, 0x07EA, STRONG_R }, + { 0x07EB, 0x07F3, WEAK_NSM }, + { 0x07F4, 0x07F5, STRONG_R }, + { 0x07F6, 0x07F9, NEUTRAL_ON }, + { 0x07FA, 0x0815, STRONG_R }, + { 0x0816, 0x0819, WEAK_NSM }, + { 0x081A, 0x081A, STRONG_R }, + { 0x081B, 0x0823, WEAK_NSM }, + { 0x0824, 0x0824, STRONG_R }, + { 0x0825, 0x0827, WEAK_NSM }, + { 0x0828, 0x0828, STRONG_R }, + { 0x0829, 0x082D, WEAK_NSM }, + { 0x0830, 0x0858, STRONG_R }, + { 0x0859, 0x085B, WEAK_NSM }, + { 0x085E, 0x085E, STRONG_R }, + { 0x0900, 0x0902, WEAK_NSM }, + { 0x093A, 0x093A, WEAK_NSM }, + { 0x093C, 0x093C, WEAK_NSM }, + { 0x0941, 0x0948, WEAK_NSM }, + { 0x094D, 0x094D, WEAK_NSM }, + { 0x0951, 0x0957, WEAK_NSM }, + { 0x0962, 0x0963, WEAK_NSM }, + { 0x0981, 0x0981, WEAK_NSM }, + { 0x09BC, 0x09BC, WEAK_NSM }, + { 0x09C1, 0x09C4, WEAK_NSM }, + { 0x09CD, 0x09CD, WEAK_NSM }, + { 0x09E2, 0x09E3, WEAK_NSM }, + { 0x09F2, 0x09F3, WEAK_ET }, + { 0x09FB, 0x09FB, WEAK_ET }, + { 0x0A01, 0x0A02, WEAK_NSM }, + { 0x0A3C, 0x0A3C, WEAK_NSM }, + { 0x0A41, 0x0A51, WEAK_NSM }, + { 0x0A70, 0x0A71, WEAK_NSM }, + { 0x0A75, 0x0A82, WEAK_NSM }, + { 0x0ABC, 0x0ABC, WEAK_NSM }, + { 0x0AC1, 0x0AC8, WEAK_NSM }, + { 0x0ACD, 0x0ACD, WEAK_NSM }, + { 0x0AE2, 0x0AE3, WEAK_NSM }, + { 0x0AF1, 0x0AF1, WEAK_ET }, + { 0x0B01, 0x0B01, WEAK_NSM }, + { 0x0B3C, 0x0B3C, WEAK_NSM }, + { 0x0B3F, 0x0B3F, WEAK_NSM }, + { 0x0B41, 0x0B44, WEAK_NSM }, + { 0x0B4D, 0x0B56, WEAK_NSM }, + { 0x0B62, 0x0B63, WEAK_NSM }, + { 0x0B82, 0x0B82, WEAK_NSM }, + { 0x0BC0, 0x0BC0, WEAK_NSM }, + { 0x0BCD, 0x0BCD, WEAK_NSM }, + { 0x0BF3, 0x0BF8, NEUTRAL_ON }, + { 0x0BF9, 0x0BF9, WEAK_ET }, + { 0x0BFA, 0x0BFA, NEUTRAL_ON }, + { 0x0C3E, 0x0C40, WEAK_NSM }, + { 0x0C46, 0x0C56, WEAK_NSM }, + { 0x0C62, 0x0C63, WEAK_NSM }, + { 0x0C78, 0x0C7E, NEUTRAL_ON }, + { 0x0CBC, 0x0CBC, WEAK_NSM }, + { 0x0CCC, 0x0CCD, WEAK_NSM }, + { 0x0CE2, 0x0CE3, WEAK_NSM }, + { 0x0D41, 0x0D44, WEAK_NSM }, + { 0x0D4D, 0x0D4D, WEAK_NSM }, + { 0x0D62, 0x0D63, WEAK_NSM }, + { 0x0DCA, 0x0DCA, WEAK_NSM }, + { 0x0DD2, 0x0DD6, WEAK_NSM }, + { 0x0E31, 0x0E31, WEAK_NSM }, + { 0x0E34, 0x0E3A, WEAK_NSM }, + { 0x0E3F, 0x0E3F, WEAK_ET }, + { 0x0E47, 0x0E4E, WEAK_NSM }, + { 0x0EB1, 0x0EB1, WEAK_NSM }, + { 0x0EB4, 0x0EBC, WEAK_NSM }, + { 0x0EC8, 0x0ECD, WEAK_NSM }, + { 0x0F18, 0x0F19, WEAK_NSM }, + { 0x0F35, 0x0F35, WEAK_NSM }, + { 0x0F37, 0x0F37, WEAK_NSM }, + { 0x0F39, 0x0F39, WEAK_NSM }, + { 0x0F3A, 0x0F3D, NEUTRAL_ON }, + { 0x0F71, 0x0F7E, WEAK_NSM }, + { 0x0F80, 0x0F84, WEAK_NSM }, + { 0x0F86, 0x0F87, WEAK_NSM }, + { 0x0F8D, 0x0FBC, WEAK_NSM }, + { 0x0FC6, 0x0FC6, WEAK_NSM }, + { 0x102D, 0x1030, WEAK_NSM }, + { 0x1032, 0x1037, WEAK_NSM }, + { 0x1039, 0x103A, WEAK_NSM }, + { 0x103D, 0x103E, WEAK_NSM }, + { 0x1058, 0x1059, WEAK_NSM }, + { 0x105E, 0x1060, WEAK_NSM }, + { 0x1071, 0x1074, WEAK_NSM }, + { 0x1082, 0x1082, WEAK_NSM }, + { 0x1085, 0x1086, WEAK_NSM }, + { 0x108D, 0x108D, WEAK_NSM }, + { 0x109D, 0x109D, WEAK_NSM }, + { 0x135D, 0x135F, WEAK_NSM }, + { 0x1390, 0x1399, NEUTRAL_ON }, + { 0x1400, 0x1400, NEUTRAL_ON }, + { 0x1680, 0x1680, NEUTRAL_WS }, + { 0x169B, 0x169C, NEUTRAL_ON }, + { 0x1712, 0x1714, WEAK_NSM }, + { 0x1732, 0x1734, WEAK_NSM }, + { 0x1752, 0x1753, WEAK_NSM }, + { 0x1772, 0x1773, WEAK_NSM }, + { 0x17B7, 0x17BD, WEAK_NSM }, + { 0x17C6, 0x17C6, WEAK_NSM }, + { 0x17C9, 0x17D3, WEAK_NSM }, + { 0x17DB, 0x17DB, WEAK_ET }, + { 0x17DD, 0x17DD, WEAK_NSM }, + { 0x17F0, 0x180A, NEUTRAL_ON }, + { 0x180B, 0x180D, WEAK_NSM }, + { 0x180E, 0x180E, NEUTRAL_WS }, + { 0x18A9, 0x18A9, WEAK_NSM }, + { 0x1920, 0x1922, WEAK_NSM }, + { 0x1927, 0x1928, WEAK_NSM }, + { 0x1932, 0x1932, WEAK_NSM }, + { 0x1939, 0x193B, WEAK_NSM }, + { 0x1940, 0x1945, NEUTRAL_ON }, + { 0x19DE, 0x19FF, NEUTRAL_ON }, + { 0x1A17, 0x1A18, WEAK_NSM }, + { 0x1A56, 0x1A56, WEAK_NSM }, + { 0x1A58, 0x1A60, WEAK_NSM }, + { 0x1A62, 0x1A62, WEAK_NSM }, + { 0x1A65, 0x1A6C, WEAK_NSM }, + { 0x1A73, 0x1A7F, WEAK_NSM }, + { 0x1B00, 0x1B03, WEAK_NSM }, + { 0x1B34, 0x1B34, WEAK_NSM }, + { 0x1B36, 0x1B3A, WEAK_NSM }, + { 0x1B3C, 0x1B3C, WEAK_NSM }, + { 0x1B42, 0x1B42, WEAK_NSM }, + { 0x1B6B, 0x1B73, WEAK_NSM }, + { 0x1B80, 0x1B81, WEAK_NSM }, + { 0x1BA2, 0x1BA5, WEAK_NSM }, + { 0x1BA8, 0x1BA9, WEAK_NSM }, + { 0x1BE6, 0x1BE6, WEAK_NSM }, + { 0x1BE8, 0x1BE9, WEAK_NSM }, + { 0x1BED, 0x1BED, WEAK_NSM }, + { 0x1BEF, 0x1BF1, WEAK_NSM }, + { 0x1C2C, 0x1C33, WEAK_NSM }, + { 0x1C36, 0x1C37, WEAK_NSM }, + { 0x1CD0, 0x1CD2, WEAK_NSM }, + { 0x1CD4, 0x1CE0, WEAK_NSM }, + { 0x1CE2, 0x1CE8, WEAK_NSM }, + { 0x1CED, 0x1CED, WEAK_NSM }, + { 0x1DC0, 0x1DFF, WEAK_NSM }, + { 0x1FBD, 0x1FBD, NEUTRAL_ON }, + { 0x1FBF, 0x1FC1, NEUTRAL_ON }, + { 0x1FCD, 0x1FCF, NEUTRAL_ON }, + { 0x1FDD, 0x1FDF, NEUTRAL_ON }, + { 0x1FED, 0x1FEF, NEUTRAL_ON }, + { 0x1FFD, 0x1FFE, NEUTRAL_ON }, + { 0x2000, 0x200A, NEUTRAL_WS }, + { 0x200B, 0x200D, WEAK_BN }, + { 0x200F, 0x200F, STRONG_R }, + { 0x2010, 0x2027, NEUTRAL_ON }, + { 0x2028, 0x2028, NEUTRAL_WS }, + { 0x2029, 0x2029, NEUTRAL_B }, + { 0x202A, 0x202A, LRE }, + { 0x202B, 0x202B, RLE }, + { 0x202C, 0x202C, PDF }, + { 0x202D, 0x202D, LRO }, + { 0x202E, 0x202E, RLO }, + { 0x202F, 0x202F, WEAK_CS }, + { 0x2030, 0x2034, WEAK_ET }, + { 0x2035, 0x2043, NEUTRAL_ON }, + { 0x2044, 0x2044, WEAK_CS }, + { 0x2045, 0x205E, NEUTRAL_ON }, + { 0x205F, 0x205F, NEUTRAL_WS }, + { 0x2060, 0x206F, WEAK_BN }, + { 0x2070, 0x2070, WEAK_EN }, + { 0x2074, 0x2079, WEAK_EN }, + { 0x207A, 0x207B, WEAK_ES }, + { 0x207C, 0x207E, NEUTRAL_ON }, + { 0x2080, 0x2089, WEAK_EN }, + { 0x208A, 0x208B, WEAK_ES }, + { 0x208C, 0x208E, NEUTRAL_ON }, + { 0x20A0, 0x20B8, WEAK_ET }, + { 0x20D0, 0x20F0, WEAK_NSM }, + { 0x2100, 0x2101, NEUTRAL_ON }, + { 0x2103, 0x2106, NEUTRAL_ON }, + { 0x2108, 0x2109, NEUTRAL_ON }, + { 0x2114, 0x2114, NEUTRAL_ON }, + { 0x2116, 0x2118, NEUTRAL_ON }, + { 0x211E, 0x2123, NEUTRAL_ON }, + { 0x2125, 0x2125, NEUTRAL_ON }, + { 0x2127, 0x2127, NEUTRAL_ON }, + { 0x2129, 0x2129, NEUTRAL_ON }, + { 0x212E, 0x212E, WEAK_ET }, + { 0x213A, 0x213B, NEUTRAL_ON }, + { 0x2140, 0x2144, NEUTRAL_ON }, + { 0x214A, 0x214D, NEUTRAL_ON }, + { 0x2150, 0x215F, NEUTRAL_ON }, + { 0x2189, 0x2211, NEUTRAL_ON }, + { 0x2212, 0x2212, WEAK_ES }, + { 0x2213, 0x2213, WEAK_ET }, + { 0x2214, 0x2335, NEUTRAL_ON }, + { 0x237B, 0x2394, NEUTRAL_ON }, + { 0x2396, 0x2487, NEUTRAL_ON }, + { 0x2488, 0x249B, WEAK_EN }, + { 0x24EA, 0x26AB, NEUTRAL_ON }, + { 0x26AD, 0x27FF, NEUTRAL_ON }, + { 0x2900, 0x2B59, NEUTRAL_ON }, + { 0x2CE5, 0x2CEA, NEUTRAL_ON }, + { 0x2CEF, 0x2CF1, WEAK_NSM }, + { 0x2CF9, 0x2CFF, NEUTRAL_ON }, + { 0x2D7F, 0x2D7F, WEAK_NSM }, + { 0x2DE0, 0x2DFF, WEAK_NSM }, + { 0x2E00, 0x2FFB, NEUTRAL_ON }, + { 0x3000, 0x3000, NEUTRAL_WS }, + { 0x3001, 0x3004, NEUTRAL_ON }, + { 0x3008, 0x3020, NEUTRAL_ON }, + { 0x302A, 0x302F, WEAK_NSM }, + { 0x3030, 0x3030, NEUTRAL_ON }, + { 0x3036, 0x3037, NEUTRAL_ON }, + { 0x303D, 0x303F, NEUTRAL_ON }, + { 0x3099, 0x309A, WEAK_NSM }, + { 0x309B, 0x309C, NEUTRAL_ON }, + { 0x30A0, 0x30A0, NEUTRAL_ON }, + { 0x30FB, 0x30FB, NEUTRAL_ON }, + { 0x31C0, 0x31E3, NEUTRAL_ON }, + { 0x321D, 0x321E, NEUTRAL_ON }, + { 0x3250, 0x325F, NEUTRAL_ON }, + { 0x327C, 0x327E, NEUTRAL_ON }, + { 0x32B1, 0x32BF, NEUTRAL_ON }, + { 0x32CC, 0x32CF, NEUTRAL_ON }, + { 0x3377, 0x337A, NEUTRAL_ON }, + { 0x33DE, 0x33DF, NEUTRAL_ON }, + { 0x33FF, 0x33FF, NEUTRAL_ON }, + { 0x4DC0, 0x4DFF, NEUTRAL_ON }, + { 0xA490, 0xA4C6, NEUTRAL_ON }, + { 0xA60D, 0xA60F, NEUTRAL_ON }, + { 0xA66F, 0xA672, WEAK_NSM }, + { 0xA673, 0xA673, NEUTRAL_ON }, + { 0xA67C, 0xA67D, WEAK_NSM }, + { 0xA67E, 0xA67F, NEUTRAL_ON }, + { 0xA6F0, 0xA6F1, WEAK_NSM }, + { 0xA700, 0xA721, NEUTRAL_ON }, + { 0xA788, 0xA788, NEUTRAL_ON }, + { 0xA802, 0xA802, WEAK_NSM }, + { 0xA806, 0xA806, WEAK_NSM }, + { 0xA80B, 0xA80B, WEAK_NSM }, + { 0xA825, 0xA826, WEAK_NSM }, + { 0xA828, 0xA82B, NEUTRAL_ON }, + { 0xA838, 0xA839, WEAK_ET }, + { 0xA874, 0xA877, NEUTRAL_ON }, + { 0xA8C4, 0xA8C4, WEAK_NSM }, + { 0xA8E0, 0xA8F1, WEAK_NSM }, + { 0xA926, 0xA92D, WEAK_NSM }, + { 0xA947, 0xA951, WEAK_NSM }, + { 0xA980, 0xA982, WEAK_NSM }, + { 0xA9B3, 0xA9B3, WEAK_NSM }, + { 0xA9B6, 0xA9B9, WEAK_NSM }, + { 0xA9BC, 0xA9BC, WEAK_NSM }, + { 0xAA29, 0xAA2E, WEAK_NSM }, + { 0xAA31, 0xAA32, WEAK_NSM }, + { 0xAA35, 0xAA36, WEAK_NSM }, + { 0xAA43, 0xAA43, WEAK_NSM }, + { 0xAA4C, 0xAA4C, WEAK_NSM }, + { 0xAAB0, 0xAAB0, WEAK_NSM }, + { 0xAAB2, 0xAAB4, WEAK_NSM }, + { 0xAAB7, 0xAAB8, WEAK_NSM }, + { 0xAABE, 0xAABF, WEAK_NSM }, + { 0xAAC1, 0xAAC1, WEAK_NSM }, + { 0xABE5, 0xABE5, WEAK_NSM }, + { 0xABE8, 0xABE8, WEAK_NSM }, + { 0xABED, 0xABED, WEAK_NSM }, + { 0xFB1D, 0xFB1D, STRONG_R }, + { 0xFB1E, 0xFB1E, WEAK_NSM }, + { 0xFB1F, 0xFB28, STRONG_R }, + { 0xFB29, 0xFB29, WEAK_ES }, + { 0xFB2A, 0xFB4F, STRONG_R }, + { 0xFB50, 0xFD3D, STRONG_AL }, + { 0xFD3E, 0xFD3F, NEUTRAL_ON }, + { 0xFD50, 0xFDFC, STRONG_AL }, + { 0xFDFD, 0xFDFD, NEUTRAL_ON }, + { 0xFE00, 0xFE0F, WEAK_NSM }, + { 0xFE10, 0xFE19, NEUTRAL_ON }, + { 0xFE20, 0xFE26, WEAK_NSM }, + { 0xFE30, 0xFE4F, NEUTRAL_ON }, + { 0xFE50, 0xFE50, WEAK_CS }, + { 0xFE51, 0xFE51, NEUTRAL_ON }, + { 0xFE52, 0xFE52, WEAK_CS }, + { 0xFE54, 0xFE54, NEUTRAL_ON }, + { 0xFE55, 0xFE55, WEAK_CS }, + { 0xFE56, 0xFE5E, NEUTRAL_ON }, + { 0xFE5F, 0xFE5F, WEAK_ET }, + { 0xFE60, 0xFE61, NEUTRAL_ON }, + { 0xFE62, 0xFE63, WEAK_ES }, + { 0xFE64, 0xFE68, NEUTRAL_ON }, + { 0xFE69, 0xFE6A, WEAK_ET }, + { 0xFE6B, 0xFE6B, NEUTRAL_ON }, + { 0xFE70, 0xFEFC, STRONG_AL }, + { 0xFEFF, 0xFEFF, WEAK_BN }, + { 0xFF01, 0xFF02, NEUTRAL_ON }, + { 0xFF03, 0xFF05, WEAK_ET }, + { 0xFF06, 0xFF0A, NEUTRAL_ON }, + { 0xFF0B, 0xFF0B, WEAK_ES }, + { 0xFF0C, 0xFF0C, WEAK_CS }, + { 0xFF0D, 0xFF0D, WEAK_ES }, + { 0xFF0E, 0xFF0F, WEAK_CS }, + { 0xFF10, 0xFF19, WEAK_EN }, + { 0xFF1A, 0xFF1A, WEAK_CS }, + { 0xFF1B, 0xFF20, NEUTRAL_ON }, + { 0xFF3B, 0xFF40, NEUTRAL_ON }, + { 0xFF5B, 0xFF65, NEUTRAL_ON }, + { 0xFFE0, 0xFFE1, WEAK_ET }, + { 0xFFE2, 0xFFE4, NEUTRAL_ON }, + { 0xFFE5, 0xFFE6, WEAK_ET }, + { 0xFFE8, 0xFFFD, NEUTRAL_ON }, + { 0x10101, 0x10101, NEUTRAL_ON }, + { 0x10140, 0x1019B, NEUTRAL_ON }, + { 0x101FD, 0x101FD, WEAK_NSM }, + { 0x10800, 0x1091B, STRONG_R }, + { 0x1091F, 0x1091F, NEUTRAL_ON }, + { 0x10920, 0x10A00, STRONG_R }, + { 0x10A01, 0x10A0F, WEAK_NSM }, + { 0x10A10, 0x10A33, STRONG_R }, + { 0x10A38, 0x10A3F, WEAK_NSM }, + { 0x10A40, 0x10B35, STRONG_R }, + { 0x10B39, 0x10B3F, NEUTRAL_ON }, + { 0x10B40, 0x10C48, STRONG_R }, + { 0x10E60, 0x10E7E, WEAK_AN }, + { 0x11001, 0x11001, WEAK_NSM }, + { 0x11038, 0x11046, WEAK_NSM }, + { 0x11052, 0x11065, NEUTRAL_ON }, + { 0x11080, 0x11081, WEAK_NSM }, + { 0x110B3, 0x110B6, WEAK_NSM }, + { 0x110B9, 0x110BA, WEAK_NSM }, + { 0x1D167, 0x1D169, WEAK_NSM }, + { 0x1D173, 0x1D17A, WEAK_BN }, + { 0x1D17B, 0x1D182, WEAK_NSM }, + { 0x1D185, 0x1D18B, WEAK_NSM }, + { 0x1D1AA, 0x1D1AD, WEAK_NSM }, + { 0x1D200, 0x1D241, NEUTRAL_ON }, + { 0x1D242, 0x1D244, WEAK_NSM }, + { 0x1D245, 0x1D356, NEUTRAL_ON }, + { 0x1D6DB, 0x1D6DB, NEUTRAL_ON }, + { 0x1D715, 0x1D715, NEUTRAL_ON }, + { 0x1D74F, 0x1D74F, NEUTRAL_ON }, + { 0x1D789, 0x1D789, NEUTRAL_ON }, + { 0x1D7C3, 0x1D7C3, NEUTRAL_ON }, + { 0x1D7CE, 0x1D7FF, WEAK_EN }, + { 0x1F000, 0x1F0DF, NEUTRAL_ON }, + { 0x1F100, 0x1F10A, WEAK_EN }, + { 0x1F300, 0x1F48B, NEUTRAL_ON }, + { 0x1F48D, 0x1F523, NEUTRAL_ON }, + { 0x1F525, 0x1F773, NEUTRAL_ON }, + { 0xE0001, 0xE007F, WEAK_BN }, + { 0xE0100, 0xE01EF, WEAK_NSM } }; === modified file 'src/deps.mk' --- src/deps.mk 2010-05-27 05:43:27 +0000 +++ src/deps.mk 2010-06-12 15:52:43 +0000 @@ -39,7 +39,8 @@ atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \ $(config_h) -bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h $(config_h) +bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h \ + biditype.h bidimirror.h $(config_h) buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \ $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \ indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h) === modified file 'src/makefile.w32-in' --- src/makefile.w32-in 2010-05-11 21:02:32 +0000 +++ src/makefile.w32-in 2010-06-12 15:52:43 +0000 @@ -344,6 +344,8 @@ $(SRC)/buffer.h \ $(SRC)/character.h \ $(SRC)/dispextern.h \ + $(SRC)/biditype.h \ + $(SRC)/bidimirror.h \ $(SRC)/w32gui.h $(BLD)/buffer.$(O) : \ ------------------------------------------------------------ revno: 100593 committer: Romain Francoise branch nick: trunk timestamp: Sat 2010-06-12 19:26:40 +0200 message: Synch with Gnus trunk. * gnus-util.el (gnus-date-get-time): Move up before first use. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-06-10 05:33:55 +0000 +++ lisp/gnus/ChangeLog 2010-06-12 17:26:40 +0000 @@ -1,3 +1,7 @@ +2010-06-12 Romain Francoise + + * gnus-util.el (gnus-date-get-time): Move up before first use. + 2010-06-10 Katsumi Yamaoka * gnus-art.el (gnus-mime-buttonized-part-id): New internal variable. === modified file 'lisp/gnus/gnus-util.el' --- lisp/gnus/gnus-util.el 2010-06-10 00:30:13 +0000 +++ lisp/gnus/gnus-util.el 2010-06-12 17:26:40 +0000 @@ -429,6 +429,20 @@ (+ (car now) (* (car (cdr now)) 60) (* (car (nthcdr 2 now)) 3600) (* (- (string-to-number days) 1) 3600 24)))) +(defmacro gnus-date-get-time (date) + "Convert DATE string to Emacs time. +Cache the result as a text property stored in DATE." + ;; Either return the cached value... + `(let ((d ,date)) + (if (equal "" d) + '(0 0) + (or (get-text-property 0 'gnus-time d) + ;; or compute the value... + (let ((time (safe-date-to-time d))) + ;; and store it back in the string. + (put-text-property 0 1 'gnus-time time d) + time))))) + (defvar gnus-user-date-format-alist '(((gnus-seconds-today) . "%k:%M") (604800 . "%a %k:%M") ;;that's one week @@ -480,20 +494,6 @@ (format-time-string "%d-%b" (gnus-date-get-time messy-date)) (error " - "))) -(defmacro gnus-date-get-time (date) - "Convert DATE string to Emacs time. -Cache the result as a text property stored in DATE." - ;; Either return the cached value... - `(let ((d ,date)) - (if (equal "" d) - '(0 0) - (or (get-text-property 0 'gnus-time d) - ;; or compute the value... - (let ((time (safe-date-to-time d))) - ;; and store it back in the string. - (put-text-property 0 1 'gnus-time time d) - time))))) - (defsubst gnus-time-iso8601 (time) "Return a string of TIME in YYYYMMDDTHHMMSS format." (format-time-string "%Y%m%dT%H%M%S" time)) ------------------------------------------------------------ revno: 100592 committer: Chong Yidong branch nick: trunk timestamp: Sat 2010-06-12 13:14:43 -0400 message: Revert 2010-06-02 change to log-edit-font-lock-keywords (Bug#6343). * vc/log-edit.el (log-edit-font-lock-keywords): Revert 2010-06-02 change temporarily (Bug#6343). diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-06-12 17:12:15 +0000 +++ lisp/ChangeLog 2010-06-12 17:14:43 +0000 @@ -1,10 +1,13 @@ 2010-06-12 Chong Yidong + * term/common-win.el (x-colors): Add all the color names defined + in rgb.txt (Bug#6332). + * facemenu.el (list-colors-print): Don't print extra names if it will overflow the window width. * vc/log-edit.el (log-edit-font-lock-keywords): Revert 2010-06-02 - change temporarily (Bug#6343). + change (Bug#6343). 2010-06-12 Eli Zaretskii === modified file 'lisp/vc/log-edit.el' --- lisp/vc/log-edit.el 2010-06-11 19:09:57 +0000 +++ lisp/vc/log-edit.el 2010-06-12 17:14:43 +0000 @@ -360,7 +360,7 @@ (3 (or (cdr (assoc (match-string 2) log-edit-headers-alist)) 'log-edit-header) nil lax) - (4 font-lock-warning-face nil lax))))) + (4 font-lock-warning-face))))) ;;;###autoload (defun log-edit (callback &optional setup params buffer mode &rest ignore) ------------------------------------------------------------ revno: 100591 committer: Chong Yidong branch nick: trunk timestamp: Sat 2010-06-12 13:12:15 -0400 message: Add all rgb.txt color names to x-colors. * facemenu.el (list-colors-print): Don't print extra names if it will overflow the window width. * term/common-win.el (x-colors): Add all the color names defined in rgb.txt (Bug#6332). diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-06-12 11:17:12 +0000 +++ lisp/ChangeLog 2010-06-12 17:12:15 +0000 @@ -1,3 +1,11 @@ +2010-06-12 Chong Yidong + + * facemenu.el (list-colors-print): Don't print extra names if it + will overflow the window width. + + * vc/log-edit.el (log-edit-font-lock-keywords): Revert 2010-06-02 + change temporarily (Bug#6343). + 2010-06-12 Eli Zaretskii * files.el (make-directory): Doc fix (bug#6396). @@ -335,7 +343,7 @@ exists. Raise an error, if not (due to a corresponding answer "no" in interactive questions, for example). -22010-06-02 Dan Nicolaescu +2010-06-02 Dan Nicolaescu * log-edit.el (log-edit-font-lock-keywords): Make group 4 match lax. === modified file 'lisp/facemenu.el' --- lisp/facemenu.el 2010-03-12 23:08:30 +0000 +++ lisp/facemenu.el 2010-06-12 17:12:15 +0000 @@ -526,15 +526,27 @@ (let* ((opoint (point)) (color-values (color-values (car color))) (light-p (>= (apply 'max color-values) - (* (car (color-values "white")) .5)))) + (* (car (color-values "white")) .5))) + (max-len (max (- (window-width) 33) 20))) (insert (car color)) (indent-to 22) (put-text-property opoint (point) 'face `(:background ,(car color))) (put-text-property (prog1 (point) - (insert " " (if (cdr color) - (mapconcat 'identity (cdr color) ", ") - (car color)))) + (insert " ") + (if (cdr color) + ;; Insert as many color names as possible, fitting max-len. + (let ((names (list (car color))) + (others (cdr color)) + (len (length (car color))) + newlen) + (while (and others + (< (setq newlen (+ len 2 (length (car others)))) + max-len)) + (setq len newlen) + (push (pop others) names)) + (insert (mapconcat 'identity (nreverse names) ", "))) + (insert (car color)))) (point) 'face (list :foreground (car color))) (indent-to (max (- (window-width) 8) 44)) === modified file 'lisp/term/common-win.el' --- lisp/term/common-win.el 2010-06-04 16:15:51 +0000 +++ lisp/term/common-win.el 2010-06-12 17:12:15 +0000 @@ -204,91 +204,168 @@ ;; of grey. (defvar x-colors - (purecopy - '("gray100" "gray99" "gray98" "gray97" "gray96" "gray95" "gray94" "gray93" "gray92" - "gray91" "gray90" "gray89" "gray88" "gray87" "gray86" "gray85" "gray84" "gray83" - "gray82" "gray81" "gray80" "gray79" "gray78" "gray77" "gray76" "gray75" "gray74" - "gray73" "gray72" "gray71" "gray70" "gray69" "gray68" "gray67" "gray66" "gray65" - "gray64" "gray63" "gray62" "gray61" "gray60" "gray59" "gray58" "gray57" "gray56" - "gray55" "gray54" "gray53" "gray52" "gray51" "gray50" "gray49" "gray48" "gray47" - "gray46" "gray45" "gray44" "gray43" "gray42" "gray41" "gray40" "gray39" "gray38" - "gray37" "gray36" "gray35" "gray34" "gray33" "gray32" "gray31" "gray30" "gray29" - "gray28" "gray27" "gray26" "gray25" "gray24" "gray23" "gray22" "gray21" "gray20" - "gray19" "gray18" "gray17" "gray16" "gray15" "gray14" "gray13" "gray12" "gray11" - "gray10" "gray9" "gray8" "gray7" "gray6" "gray5" "gray4" "gray3" "gray2" "gray1" - "gray0" "LightPink1" "LightPink2" "LightPink3" "LightPink4" "pink1" "pink2" "pink3" - "pink4" "PaleVioletRed1" "PaleVioletRed2" "PaleVioletRed3" "PaleVioletRed4" - "LavenderBlush1" "LavenderBlush2" "LavenderBlush3" "LavenderBlush4" "VioletRed1" - "VioletRed2" "VioletRed3" "VioletRed4" "HotPink1" "HotPink2" "HotPink3" "HotPink4" - "DeepPink1" "DeepPink2" "DeepPink3" "DeepPink4" "maroon1" "maroon2" "maroon3" - "maroon4" "orchid1" "orchid2" "orchid3" "orchid4" "plum1" "plum2" "plum3" "plum4" - "thistle1" "thistle2" "thistle3" "thistle4" "MediumOrchid1" "MediumOrchid2" - "MediumOrchid3" "MediumOrchid4" "DarkOrchid1" "DarkOrchid2" "DarkOrchid3" - "DarkOrchid4" "purple1" "purple2" "purple3" "purple4" "MediumPurple1" - "MediumPurple2" "MediumPurple3" "MediumPurple4" "SlateBlue1" "SlateBlue2" - "SlateBlue3" "SlateBlue4" "RoyalBlue1" "RoyalBlue2" "RoyalBlue3" "RoyalBlue4" - "LightSteelBlue1" "LightSteelBlue2" "LightSteelBlue3" "LightSteelBlue4" "SlateGray1" - "SlateGray2" "SlateGray3" "SlateGray4" "DodgerBlue1" "DodgerBlue2" "DodgerBlue3" - "DodgerBlue4" "SteelBlue1" "SteelBlue2" "SteelBlue3" "SteelBlue4" "SkyBlue1" - "SkyBlue2" "SkyBlue3" "SkyBlue4" "LightSkyBlue1" "LightSkyBlue2" "LightSkyBlue3" - "LightSkyBlue4" "LightBlue1" "LightBlue2" "LightBlue3" "LightBlue4" "CadetBlue1" - "CadetBlue2" "CadetBlue3" "CadetBlue4" "azure1" "azure2" "azure3" "azure4" - "LightCyan1" "LightCyan2" "LightCyan3" "LightCyan4" "PaleTurquoise1" - "PaleTurquoise2" "PaleTurquoise3" "PaleTurquoise4" "DarkSlateGray1" "DarkSlateGray2" - "DarkSlateGray3" "DarkSlateGray4" "aquamarine1" "aquamarine2" "aquamarine3" - "aquamarine4" "SeaGreen1" "SeaGreen2" "SeaGreen3" "SeaGreen4" "honeydew1" - "honeydew2" "honeydew3" "honeydew4" "DarkSeaGreen1" "DarkSeaGreen2" "DarkSeaGreen3" - "DarkSeaGreen4" "PaleGreen1" "PaleGreen2" "PaleGreen3" "PaleGreen4" - "DarkOliveGreen1" "DarkOliveGreen2" "DarkOliveGreen3" "DarkOliveGreen4" "OliveDrab1" - "OliveDrab2" "OliveDrab3" "OliveDrab4" "ivory1" "ivory2" "ivory3" "ivory4" - "LightYellow1" "LightYellow2" "LightYellow3" "LightYellow4" "khaki1" "khaki2" - "khaki3" "khaki4" "LemonChiffon1" "LemonChiffon2" "LemonChiffon3" "LemonChiffon4" - "LightGoldenrod1" "LightGoldenrod2" "LightGoldenrod3" "LightGoldenrod4" "cornsilk1" - "cornsilk2" "cornsilk3" "cornsilk4" "goldenrod1" "goldenrod2" "goldenrod3" - "goldenrod4" "DarkGoldenrod1" "DarkGoldenrod2" "DarkGoldenrod3" "DarkGoldenrod4" - "wheat1" "wheat2" "wheat3" "wheat4" "NavajoWhite1" "NavajoWhite2" "NavajoWhite3" - "NavajoWhite4" "burlywood1" "burlywood2" "burlywood3" "burlywood4" "AntiqueWhite1" - "AntiqueWhite2" "AntiqueWhite3" "AntiqueWhite4" "bisque1" "bisque2" "bisque3" - "bisque4" "tan1" "tan2" "tan3" "tan4" "PeachPuff1" "PeachPuff2" "PeachPuff3" - "PeachPuff4" "seashell1" "seashell2" "seashell3" "seashell4" "chocolate1" - "chocolate2" "chocolate3" "chocolate4" "sienna1" "sienna2" "sienna3" "sienna4" - "LightSalmon1" "LightSalmon2" "LightSalmon3" "LightSalmon4" "salmon1" "salmon2" - "salmon3" "salmon4" "coral1" "coral2" "coral3" "coral4" "tomato1" "tomato2" - "tomato3" "tomato4" "MistyRose1" "MistyRose2" "MistyRose3" "MistyRose4" "snow1" - "snow2" "snow3" "snow4" "RosyBrown1" "RosyBrown2" "RosyBrown3" "RosyBrown4" - "IndianRed1" "IndianRed2" "IndianRed3" "IndianRed4" "firebrick1" "firebrick2" - "firebrick3" "firebrick4" "brown1" "brown2" "brown3" "brown4" "magenta1" "magenta2" - "magenta3" "magenta4" "blue1" "blue2" "blue3" "blue4" "DeepSkyBlue1" "DeepSkyBlue2" - "DeepSkyBlue3" "DeepSkyBlue4" "turquoise1" "turquoise2" "turquoise3" "turquoise4" - "cyan1" "cyan2" "cyan3" "cyan4" "SpringGreen1" "SpringGreen2" "SpringGreen3" - "SpringGreen4" "green1" "green2" "green3" "green4" "chartreuse1" "chartreuse2" - "chartreuse3" "chartreuse4" "yellow1" "yellow2" "yellow3" "yellow4" "gold1" "gold2" - "gold3" "gold4" "orange1" "orange2" "orange3" "orange4" "DarkOrange1" "DarkOrange2" - "DarkOrange3" "DarkOrange4" "OrangeRed1" "OrangeRed2" "OrangeRed3" "OrangeRed4" - "red1" "red2" "red3" "red4" "lavender blush" "ghost white" "lavender" "alice blue" - "azure" "light cyan" "mint cream" "honeydew" "ivory" "light goldenrod yellow" - "light yellow" "beige" "floral white" "old lace" "blanched almond" "moccasin" - "papaya whip" "bisque" "antique white" "linen" "peach puff" "seashell" "misty rose" - "snow" "light pink" "pink" "hot pink" "deep pink" "maroon" "pale violet red" - "violet red" "medium violet red" "violet" "plum" "thistle" "orchid" "medium orchid" - "dark orchid" "purple" "blue violet" "medium purple" "light slate blue" - "medium slate blue" "slate blue" "dark slate blue" "midnight blue" "navy" - "dark blue" "light steel blue" "cornflower blue" "dodger blue" "royal blue" - "light slate gray" "slate gray" "dark slate gray" "steel blue" "cadet blue" - "light sky blue" "sky blue" "light blue" "powder blue" "pale turquoise" - "turquoise" "medium turquoise" "dark turquoise" "dark cyan" "aquamarine" - "medium aquamarine" "light sea green" - "medium sea green" "sea green" "dark sea green" "pale green" "lime green" - "dark green" "forest green" "light green" "green yellow" "yellow green" "olive drab" - "dark olive green" "lemon chiffon" "khaki" "dark khaki" "cornsilk" - "pale goldenrod" "light goldenrod" "goldenrod" "dark goldenrod" "wheat" - "navajo white" "tan" "burlywood" "sandy brown" "peru" "chocolate" "saddle brown" - "sienna" "rosy brown" "dark salmon" "coral" "tomato" "light salmon" "salmon" - "light coral" "indian red" "firebrick" "brown" "dark red" "magenta" - "dark magenta" "dark violet" "medium blue" "blue" "deep sky blue" - "cyan" "medium spring green" "spring green" "green" "lawn green" "chartreuse" - "yellow" "gold" "orange" "dark orange" "orange red" "red" "white" "white smoke" - "gainsboro" "light gray" "gray" "dark gray" "dim gray" "black" )) + (purecopy + '("gray100" "grey100" "gray99" "grey99" "gray98" "grey98" "gray97" + "grey97" "gray96" "grey96" "gray95" "grey95" "gray94" "grey94" + "gray93" "grey93" "gray92" "grey92" "gray91" "grey91" "gray90" + "grey90" "gray89" "grey89" "gray88" "grey88" "gray87" "grey87" + "gray86" "grey86" "gray85" "grey85" "gray84" "grey84" "gray83" + "grey83" "gray82" "grey82" "gray81" "grey81" "gray80" "grey80" + "gray79" "grey79" "gray78" "grey78" "gray77" "grey77" "gray76" + "grey76" "gray75" "grey75" "gray74" "grey74" "gray73" "grey73" + "gray72" "grey72" "gray71" "grey71" "gray70" "grey70" "gray69" + "grey69" "gray68" "grey68" "gray67" "grey67" "gray66" "grey66" + "gray65" "grey65" "gray64" "grey64" "gray63" "grey63" "gray62" + "grey62" "gray61" "grey61" "gray60" "grey60" "gray59" "grey59" + "gray58" "grey58" "gray57" "grey57" "gray56" "grey56" "gray55" + "grey55" "gray54" "grey54" "gray53" "grey53" "gray52" "grey52" + "gray51" "grey51" "gray50" "grey50" "gray49" "grey49" "gray48" + "grey48" "gray47" "grey47" "gray46" "grey46" "gray45" "grey45" + "gray44" "grey44" "gray43" "grey43" "gray42" "grey42" "gray41" + "grey41" "gray40" "grey40" "gray39" "grey39" "gray38" "grey38" + "gray37" "grey37" "gray36" "grey36" "gray35" "grey35" "gray34" + "grey34" "gray33" "grey33" "gray32" "grey32" "gray31" "grey31" + "gray30" "grey30" "gray29" "grey29" "gray28" "grey28" "gray27" + "grey27" "gray26" "grey26" "gray25" "grey25" "gray24" "grey24" + "gray23" "grey23" "gray22" "grey22" "gray21" "grey21" "gray20" + "grey20" "gray19" "grey19" "gray18" "grey18" "gray17" "grey17" + "gray16" "grey16" "gray15" "grey15" "gray14" "grey14" "gray13" + "grey13" "gray12" "grey12" "gray11" "grey11" "gray10" "grey10" + "gray9" "grey9" "gray8" "grey8" "gray7" "grey7" "gray6" "grey6" + "gray5" "grey5" "gray4" "grey4" "gray3" "grey3" "gray2" "grey2" + "gray1" "grey1" "gray0" "grey0" + "LightPink1" "LightPink2" "LightPink3" "LightPink4" + "pink1" "pink2" "pink3" "pink4" + "PaleVioletRed1" "PaleVioletRed2" "PaleVioletRed3" "PaleVioletRed4" + "LavenderBlush1" "LavenderBlush2" "LavenderBlush3" "LavenderBlush4" + "VioletRed1" "VioletRed2" "VioletRed3" "VioletRed4" + "HotPink1" "HotPink2" "HotPink3" "HotPink4" + "DeepPink1" "DeepPink2" "DeepPink3" "DeepPink4" + "maroon1" "maroon2" "maroon3" "maroon4" + "orchid1" "orchid2" "orchid3" "orchid4" + "plum1" "plum2" "plum3" "plum4" + "thistle1" "thistle2" "thistle3" "thistle4" + "MediumOrchid1" "MediumOrchid2" "MediumOrchid3" "MediumOrchid4" + "DarkOrchid1" "DarkOrchid2" "DarkOrchid3" "DarkOrchid4" + "purple1" "purple2" "purple3" "purple4" + "MediumPurple1" "MediumPurple2" "MediumPurple3" "MediumPurple4" + "SlateBlue1" "SlateBlue2" "SlateBlue3" "SlateBlue4" + "RoyalBlue1" "RoyalBlue2" "RoyalBlue3" "RoyalBlue4" + "LightSteelBlue1" "LightSteelBlue2" "LightSteelBlue3" "LightSteelBlue4" + "SlateGray1" "SlateGray2" "SlateGray3" "SlateGray4" + "DodgerBlue1" "DodgerBlue2" "DodgerBlue3" "DodgerBlue4" + "SteelBlue1" "SteelBlue2" "SteelBlue3" "SteelBlue4" + "SkyBlue1" "SkyBlue2" "SkyBlue3" "SkyBlue4" + "LightSkyBlue1" "LightSkyBlue2" "LightSkyBlue3" "LightSkyBlue4" + "LightBlue1" "LightBlue2" "LightBlue3" "LightBlue4" + "CadetBlue1" "CadetBlue2" "CadetBlue3" "CadetBlue4" + "azure1" "azure2" "azure3" "azure4" + "LightCyan1" "LightCyan2" "LightCyan3" "LightCyan4" + "PaleTurquoise1" "PaleTurquoise2" "PaleTurquoise3" "PaleTurquoise4" + "DarkSlateGray1" "DarkSlateGray2" "DarkSlateGray3" "DarkSlateGray4" + "aquamarine1" "aquamarine2" "aquamarine3" "aquamarine4" + "SeaGreen1" "SeaGreen2" "SeaGreen3" "SeaGreen4" + "honeydew1" "honeydew2" "honeydew3" "honeydew4" + "DarkSeaGreen1" "DarkSeaGreen2" "DarkSeaGreen3" "DarkSeaGreen4" + "PaleGreen1" "PaleGreen2" "PaleGreen3" "PaleGreen4" + "DarkOliveGreen1" "DarkOliveGreen2" "DarkOliveGreen3" "DarkOliveGreen4" + "OliveDrab1" "OliveDrab2" "OliveDrab3" "OliveDrab4" + "ivory1" "ivory2" "ivory3" "ivory4" + "LightYellow1" "LightYellow2" "LightYellow3" "LightYellow4" + "khaki1" "khaki2" "khaki3" "khaki4" + "LemonChiffon1" "LemonChiffon2" "LemonChiffon3" "LemonChiffon4" + "LightGoldenrod1" "LightGoldenrod2" "LightGoldenrod3" "LightGoldenrod4" + "cornsilk1" "cornsilk2" "cornsilk3" "cornsilk4" + "goldenrod1" "goldenrod2" "goldenrod3" "goldenrod4" + "DarkGoldenrod1" "DarkGoldenrod2" "DarkGoldenrod3" "DarkGoldenrod4" + "wheat1" "wheat2" "wheat3" "wheat4" + "NavajoWhite1" "NavajoWhite2" "NavajoWhite3" "NavajoWhite4" + "burlywood1" "burlywood2" "burlywood3" "burlywood4" + "AntiqueWhite1" "AntiqueWhite2" "AntiqueWhite3" "AntiqueWhite4" + "bisque1" "bisque2" "bisque3" "bisque4" + "tan1" "tan2" "tan3" "tan4" + "PeachPuff1" "PeachPuff2" "PeachPuff3" "PeachPuff4" + "seashell1" "seashell2" "seashell3" "seashell4" + "chocolate1" "chocolate2" "chocolate3" "chocolate4" + "sienna1" "sienna2" "sienna3" "sienna4" + "LightSalmon1" "LightSalmon2" "LightSalmon3" "LightSalmon4" + "salmon1" "salmon2" "salmon3" "salmon4" + "coral1" "coral2" "coral3" "coral4" + "tomato1" "tomato2" "tomato3" "tomato4" + "MistyRose1" "MistyRose2" "MistyRose3" "MistyRose4" + "snow1" "snow2" "snow3" "snow4" + "RosyBrown1" "RosyBrown2" "RosyBrown3" "RosyBrown4" + "IndianRed1" "IndianRed2" "IndianRed3" "IndianRed4" + "firebrick1" "firebrick2" "firebrick3" "firebrick4" + "brown1" "brown2" "brown3" "brown4" + "magenta1" "magenta2" "magenta3" "magenta4" + "blue1" "blue2" "blue3" "blue4" + "DeepSkyBlue1" "DeepSkyBlue2" "DeepSkyBlue3" "DeepSkyBlue4" + "turquoise1" "turquoise2" "turquoise3" "turquoise4" + "cyan1" "cyan2" "cyan3" "cyan4" + "SpringGreen1" "SpringGreen2" "SpringGreen3" "SpringGreen4" + "green1" "green2" "green3" "green4" + "chartreuse1" "chartreuse2" "chartreuse3" "chartreuse4" + "yellow1" "yellow2" "yellow3" "yellow4" + "gold1" "gold2" "gold3" "gold4" + "orange1" "orange2" "orange3" "orange4" + "DarkOrange1" "DarkOrange2" "DarkOrange3" "DarkOrange4" + "OrangeRed1" "OrangeRed2" "OrangeRed3" "OrangeRed4" + "red1" "red2" "red3" "red4" + "lavender blush" "LavenderBlush" "ghost white" "GhostWhite" + "lavender" "alice blue" "AliceBlue" "azure" "light cyan" + "LightCyan" "mint cream" "MintCream" "honeydew" "ivory" + "light goldenrod yellow" "LightGoldenrodYellow" "light yellow" + "LightYellow" "beige" "floral white" "FloralWhite" "old lace" + "OldLace" "blanched almond" "BlanchedAlmond" "moccasin" + "papaya whip" "PapayaWhip" "bisque" "antique white" + "AntiqueWhite" "linen" "peach puff" "PeachPuff" "seashell" + "misty rose" "MistyRose" "snow" "light pink" "LightPink" "pink" + "hot pink" "HotPink" "deep pink" "DeepPink" "maroon" + "pale violet red" "PaleVioletRed" "violet red" "VioletRed" + "medium violet red" "MediumVioletRed" "violet" "plum" "thistle" + "orchid" "medium orchid" "MediumOrchid" "dark orchid" + "DarkOrchid" "purple" "blue violet" "BlueViolet" "medium purple" + "MediumPurple" "light slate blue" "LightSlateBlue" + "medium slate blue" "MediumSlateBlue" "slate blue" "SlateBlue" + "dark slate blue" "DarkSlateBlue" "midnight blue" "MidnightBlue" + "navy" "navy blue" "NavyBlue" "dark blue" "DarkBlue" + "light steel blue" "LightSteelBlue" "cornflower blue" + "CornflowerBlue" "dodger blue" "DodgerBlue" "royal blue" + "RoyalBlue" "light slate gray" "light slate grey" + "LightSlateGray" "LightSlateGrey" "slate gray" "slate grey" + "SlateGray" "SlateGrey" "dark slate gray" "dark slate grey" + "DarkSlateGray" "DarkSlateGrey" "steel blue" "SteelBlue" + "cadet blue" "CadetBlue" "light sky blue" "LightSkyBlue" + "sky blue" "SkyBlue" "light blue" "LightBlue" "powder blue" + "PowderBlue" "pale turquoise" "PaleTurquoise" "turquoise" + "medium turquoise" "MediumTurquoise" "dark turquoise" + "DarkTurquoise" "dark cyan" "DarkCyan" "aquamarine" + "medium aquamarine" "MediumAquamarine" "light sea green" + "LightSeaGreen" "medium sea green" "MediumSeaGreen" "sea green" + "SeaGreen" "dark sea green" "DarkSeaGreen" "pale green" + "PaleGreen" "lime green" "LimeGreen" "dark green" "DarkGreen" + "forest green" "ForestGreen" "light green" "LightGreen" + "green yellow" "GreenYellow" "yellow green" "YellowGreen" + "olive drab" "OliveDrab" "dark olive green" "DarkOliveGreen" + "lemon chiffon" "LemonChiffon" "khaki" "dark khaki" "DarkKhaki" + "cornsilk" "pale goldenrod" "PaleGoldenrod" "light goldenrod" + "LightGoldenrod" "goldenrod" "dark goldenrod" "DarkGoldenrod" + "wheat" "navajo white" "NavajoWhite" "tan" "burlywood" + "sandy brown" "SandyBrown" "peru" "chocolate" "saddle brown" + "SaddleBrown" "sienna" "rosy brown" "RosyBrown" "dark salmon" + "DarkSalmon" "coral" "tomato" "light salmon" "LightSalmon" + "salmon" "light coral" "LightCoral" "indian red" "IndianRed" + "firebrick" "brown" "dark red" "DarkRed" "magenta" + "dark magenta" "DarkMagenta" "dark violet" "DarkViolet" + "medium blue" "MediumBlue" "blue" "deep sky blue" "DeepSkyBlue" + "cyan" "medium spring green" "MediumSpringGreen" "spring green" + "SpringGreen" "green" "lawn green" "LawnGreen" "chartreuse" + "yellow" "gold" "orange" "dark orange" "DarkOrange" "orange red" + "OrangeRed" "red" "white" "white smoke" "WhiteSmoke" "gainsboro" + "light gray" "light grey" "LightGray" "LightGrey" "gray" "grey" + "dark gray" "dark grey" "DarkGray" "DarkGrey" "dim gray" + "dim grey" "DimGray" "DimGrey" "black")) "List of basic colors available on color displays. For X, the list comes from the `rgb.txt' file,v 10.41 94/02/20. For Nextstep, this is a list of non-PANTONE colors returned by ------------------------------------------------------------ revno: 100590 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2010-06-12 14:30:48 +0300 message: Fix bug #6409. window.c (syms_of_window): Doc fix (bug#6409). diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-06-12 10:58:54 +0000 +++ src/ChangeLog 2010-06-12 11:30:48 +0000 @@ -1,3 +1,7 @@ +2010-06-12 Eli Zaretskii + + * window.c (syms_of_window): Doc fix (bug#6409). + 2010-06-12 Romain Francoise * Makefile.in (lisp, shortlisp): Use new location of vc-hooks and === modified file 'src/window.c' --- src/window.c 2010-06-07 18:28:02 +0000 +++ src/window.c 2010-06-12 11:30:48 +0000 @@ -7290,7 +7290,7 @@ DEFVAR_LISP ("recenter-redisplay", &Vrecenter_redisplay, doc: /* If non-nil, then the `recenter' command with a nil argument -the entire frame to be redrawn; the special value `tty' causes the +will redraw the entire frame; the special value `tty' causes the frame to be redrawn only if it is a tty frame. */); Vrecenter_redisplay = Qtty; ------------------------------------------------------------ revno: 100589 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2010-06-12 14:17:12 +0300 message: Fix bug #6396. files.el (make-directory): Doc fix. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-06-12 08:59:37 +0000 +++ lisp/ChangeLog 2010-06-12 11:17:12 +0000 @@ -1,3 +1,7 @@ +2010-06-12 Eli Zaretskii + + * files.el (make-directory): Doc fix (bug#6396). + 2010-06-12 Michael Albinus * net/tramp.el (tramp-remote-process-environment): Protect version === modified file 'lisp/files.el' --- lisp/files.el 2010-06-01 02:34:49 +0000 +++ lisp/files.el 2010-06-12 11:17:12 +0000 @@ -4635,16 +4635,17 @@ (force-mode-line-update)))) (defun make-directory (dir &optional parents) - "Create the directory DIR and any nonexistent parent dirs. -If DIR already exists as a directory, signal an error, unless PARENTS is set. - -Interactively, the default choice of directory to create -is the current default directory for file names. -That is useful when you have visited a file in a nonexistent directory. - -Noninteractively, the second (optional) argument PARENTS says whether -to create parent directories if they don't exist. Interactively, -this happens by default." + "Create the directory DIR and optionally any nonexistent parent dirs. +If DIR already exists as a directory, signal an error, unless +PARENTS is non-nil. + +Interactively, the default choice of directory to create is the +current buffer's default directory. That is useful when you have +visited a file in a nonexistent directory. + +Noninteractively, the second (optional) argument PARENTS, if +non-nil, says whether to create parent directories that don't +exist. Interactively, this happens by default." (interactive (list (read-file-name "Make directory: " default-directory default-directory nil nil) ------------------------------------------------------------ revno: 100588 committer: Romain Francoise branch nick: trunk timestamp: Sat 2010-06-12 12:58:54 +0200 message: * Makefile.in (lisp, shortlisp): Use new location of vc-hooks and ediff-hook. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-06-10 05:31:36 +0000 +++ src/ChangeLog 2010-06-12 10:58:54 +0000 @@ -1,3 +1,8 @@ +2010-06-12 Romain Francoise + + * Makefile.in (lisp, shortlisp): Use new location of vc-hooks and + ediff-hook. + 2010-06-10 Glenn Morris * editfns.c (Fbyte_to_string): Pacify compiler. === modified file 'src/Makefile.in' --- src/Makefile.in 2010-06-03 22:16:02 +0000 +++ src/Makefile.in 2010-06-12 10:58:54 +0000 @@ -458,8 +458,8 @@ ${lispsource}textmodes/text-mode.elc \ ${lispsource}emacs-lisp/timer.elc \ ${lispsource}jka-cmpr-hook.elc \ - ${lispsource}vc-hooks.elc \ - ${lispsource}ediff-hook.elc \ + ${lispsource}vc/vc-hooks.elc \ + ${lispsource}vc/ediff-hook.elc \ ${lispsource}epa-hook.elc \ ${TOOLTIP_SUPPORT} \ ${MSDOS_SUPPORT} \ @@ -549,9 +549,9 @@ ../lisp/textmodes/paragraphs.elc \ ../lisp/textmodes/text-mode.elc \ ../lisp/emacs-lisp/timer.elc \ - ../lisp/vc-hooks.elc \ + ../lisp/vc/vc-hooks.elc \ + ../lisp/vc/ediff-hook.elc \ ../lisp/jka-cmpr-hook.elc \ - ../lisp/ediff-hook.elc \ ../lisp/epa-hook.elc \ ../lisp/widget.elc \ ../lisp/window.elc \ ------------------------------------------------------------ revno: 100587 committer: Michael Albinus branch nick: trunk timestamp: Sat 2010-06-12 10:59:37 +0200 message: * net/tramp.el (tramp-remote-process-environment): Protect version string by apostroph. (tramp-shell-prompt-pattern): Do not use a shy group in case of XEmacs. (tramp-file-name-for-operation): Add `call-process-region'. (tramp-set-process-query-on-exit-flag): Fix wrong parentheses. * net/tramp-compat.el (top): Do not autoload `tramp-handle-file-remote-p'. Load tramp-util.el and tramp-vc.el only when `start-file-process' is not bound. (tramp-advice-file-expand-wildcards): Do not use `tramp-handle-file-remote-p'. (tramp-compat-make-temp-file): Handle the case, that `make-temp-file' has no third argument EXTENSION. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-06-11 21:26:13 +0000 +++ lisp/ChangeLog 2010-06-12 08:59:37 +0000 @@ -1,3 +1,20 @@ +2010-06-12 Michael Albinus + + * net/tramp.el (tramp-remote-process-environment): Protect version + string by apostroph. + (tramp-shell-prompt-pattern): Do not use a shy group in case of + XEmacs. + (tramp-file-name-for-operation): Add `call-process-region'. + (tramp-set-process-query-on-exit-flag): Fix wrong parentheses. + + * net/tramp-compat.el (top): Do not autoload + `tramp-handle-file-remote-p'. Load tramp-util.el and tramp-vc.el + only when `start-file-process' is not bound. + (tramp-advice-file-expand-wildcards): Do not use + `tramp-handle-file-remote-p'. + (tramp-compat-make-temp-file): Handle the case, that + `make-temp-file' has no third argument EXTENSION. + 2010-06-11 Juanma Barranquero * makefile.w32-in (WINS_BASIC): Include new directory vc. @@ -45,7 +62,7 @@ * net/notifications.el (notifications-on-action-signal) (notifications-on-closed-signal): Pass notification id as first - argument to the callback functions. Add docstrings. + argument to the callback functions. Add docstrings. (notifications-notify): Fix docstring. 2010-06-10 Glenn Morris === modified file 'lisp/net/tramp-compat.el' --- lisp/net/tramp-compat.el 2010-05-28 13:28:36 +0000 +++ lisp/net/tramp-compat.el 2010-06-12 08:59:37 +0000 @@ -44,33 +44,31 @@ (autoload 'tramp-tramp-file-p "tramp") (autoload 'tramp-file-name-handler "tramp") - (autoload 'tramp-handle-file-remote-p "tramp") - - ;; tramp-util offers integration into other (X)Emacs packages like - ;; compile.el, gud.el etc. Not necessary in Emacs 23. - (eval-after-load "tramp" - ;; We check whether `start-file-process' is an alias. - '(when (or (not (fboundp 'start-file-process)) - (symbolp (symbol-function 'start-file-process))) - (require 'tramp-util) - (add-hook 'tramp-unload-hook - '(lambda () - (when (featurep 'tramp-util) - (unload-feature 'tramp-util 'force)))))) - - ;; Make sure that we get integration with the VC package. When it - ;; is loaded, we need to pull in the integration module. Not - ;; necessary in Emacs 23. - (eval-after-load "vc" + + ;; We check whether `start-file-process' is bound. + (unless (fboundp 'start-file-process) + + ;; tramp-util offers integration into other (X)Emacs packages like + ;; compile.el, gud.el etc. Not necessary in Emacs 23. (eval-after-load "tramp" - ;; We check whether `start-file-process' is an alias. - '(when (or (not (fboundp 'start-file-process)) - (symbolp (symbol-function 'start-file-process))) - (require 'tramp-vc) + '(progn + (require 'tramp-util) (add-hook 'tramp-unload-hook '(lambda () - (when (featurep 'tramp-vc) - (unload-feature 'tramp-vc 'force))))))) + (when (featurep 'tramp-util) + (unload-feature 'tramp-util 'force)))))) + + ;; Make sure that we get integration with the VC package. When it + ;; is loaded, we need to pull in the integration module. Not + ;; necessary in Emacs 23. + (eval-after-load "vc" + (eval-after-load "tramp" + '(progn + (require 'tramp-vc) + (add-hook 'tramp-unload-hook + '(lambda () + (when (featurep 'tramp-vc) + (unload-feature 'tramp-vc 'force)))))))) ;; Avoid byte-compiler warnings if the byte-compiler supports this. ;; Currently, XEmacs supports this. @@ -176,7 +174,8 @@ (if (and (tramp-tramp-file-p name) (not (string-match - "[[*?]" (tramp-handle-file-remote-p name 'localname)))) + "[[*?]" (tramp-compat-funcall + 'file-remote-p name 'localname)))) (setq ad-return-value (list name)) ;; Otherwise, just run the original function. ad-do-it))) @@ -236,22 +235,23 @@ (tramp-compat-temporary-file-directory))) (extension (file-name-extension filename t)) result) - (if (fboundp 'make-temp-file) + (condition-case nil (setq result (tramp-compat-funcall 'make-temp-file prefix dir-flag extension)) - ;; We use our own implementation, taken from files.el. - (while - (condition-case () - (progn - (setq result (concat (make-temp-name prefix) extension)) - (if dir-flag - (make-directory result) - (write-region "" nil result nil 'silent)) - nil) - (file-already-exists t)) - ;; The file was somehow created by someone else between - ;; `make-temp-name' and `write-region', let's try again. - nil)) + (error + ;; We use our own implementation, taken from files.el. + (while + (condition-case () + (progn + (setq result (concat (make-temp-name prefix) extension)) + (if dir-flag + (make-directory result) + (write-region "" nil result nil 'silent)) + nil) + (file-already-exists t)) + ;; The file was somehow created by someone else between + ;; `make-temp-name' and `write-region', let's try again. + nil))) result)) ;; `most-positive-fixnum' does not exist in XEmacs. === modified file 'lisp/net/tramp.el' --- lisp/net/tramp.el 2010-05-28 14:48:56 +0000 +++ lisp/net/tramp.el 2010-06-12 08:59:37 +0000 @@ -1065,7 +1065,7 @@ `("HISTFILE=$HOME/.tramp_history" "HISTSIZE=1" "LC_ALL=C" ,(format "TERM=%s" tramp-terminal-type) "EMACS=t" ;; Deprecated. - ,(format "INSIDE_EMACS=%s,tramp:%s" emacs-version tramp-version) + ,(format "INSIDE_EMACS='%s,tramp:%s'" emacs-version tramp-version) "CDPATH=" "HISTORY=" "MAIL=" "MAILCHECK=" "MAILPATH=" "autocorrect=" "correct=") @@ -1091,8 +1091,10 @@ (defcustom tramp-shell-prompt-pattern ;; Allow a prompt to start right after a ^M since it indeed would be - ;; displayed at the beginning of the line (and Zsh uses it). - "\\(?:^\\|\r\\)[^#$%>\n]*#?[#$%>] *\\(\e\\[[0-9;]*[a-zA-Z] *\\)*" + ;; displayed at the beginning of the line (and Zsh uses it). This + ;; regexp works only for GNU Emacs. + (concat (if (featurep 'xemacs) "" "\\(?:^\\|\r\\)") + "[^#$%>\n]*#?[#$%>] *\\(\e\\[[0-9;]*[a-zA-Z] *\\)*") "Regexp to match prompts from remote shell. Normally, Tramp expects you to configure `shell-prompt-pattern' correctly, but sometimes it happens that you are connecting to a @@ -5513,7 +5515,8 @@ ;; XEmacs only. 'dired-print-file 'dired-shell-call-process ;; nowhere yet. - 'executable-find 'start-process 'call-process)) + 'executable-find 'start-process + 'call-process 'call-process-region)) default-directory) ;; Unknown file primitive. (t (error "unknown file I/O primitive: %s" operation)))) @@ -8758,7 +8761,7 @@ exiting if process is running." (if (fboundp 'set-process-query-on-exit-flag) (tramp-compat-funcall 'set-process-query-on-exit-flag process flag) - (tramp-compat-funcall 'process-kill-without-query) process flag)) + (tramp-compat-funcall 'process-kill-without-query process flag))) ;; ------------------------------------------------------------ @@ -8914,7 +8917,7 @@ ;; rsync). ;; * Keep a second connection open for out-of-band methods like scp or ;; rsync. -;; * Support ptys in `tramp-handle-start-file-process'. (Bug#4604) +;; * Support ptys in `tramp-handle-start-file-process'. (Bug#4604, Bug#6360) ;; * IMHO, it's a drawback that currently Tramp doesn't support ;; Unicode in Dired file names by default. Is it possible to ;; improve Tramp to set LC_ALL to "C" only for commands where Tramp ------------------------------------------------------------ revno: 100586 committer: Glenn Morris branch nick: trunk timestamp: Fri 2010-06-11 20:35:55 -0700 message: * Makefile.in (install-arch-indep): Delete any old info .gz files first. diff: === modified file 'ChangeLog' --- ChangeLog 2010-06-11 03:35:40 +0000 +++ ChangeLog 2010-06-12 03:35:55 +0000 @@ -1,3 +1,7 @@ +2010-06-12 Glenn Morris + + * Makefile.in (install-arch-indep): Delete any old info .gz files first. + 2010-06-11 Glenn Morris * configure.in (--without-compress-info): New option. === modified file 'Makefile.in' --- Makefile.in 2010-06-11 03:35:40 +0000 +++ Makefile.in 2010-06-12 03:35:55 +0000 @@ -583,6 +583,7 @@ ${INSTALL_DATA} $$f $(DESTDIR)${infodir}/$$f; \ chmod a+r $(DESTDIR)${infodir}/$$f; \ if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \ + rm -f $(DESTDIR)${infodir}/$$f.gz; \ ${GZIP_PROG} -9n $(DESTDIR)${infodir}/$$f; \ else true; fi; \ done; \ @@ -606,6 +607,7 @@ ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}; \ chmod a+r $(DESTDIR)${man1dir}/$${page}; \ if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \ + rm -f $(DESTDIR)${man1dir}/$${page}.gz; \ ${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${page}; \ else true; fi ); \ done ------------------------------------------------------------ Use --include-merges or -n0 to see merged revisions.