diff options
| author | Joakim Verona | 2011-08-25 07:11:38 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-08-25 07:11:38 +0200 |
| commit | eff2e78688e5347aed84f237fabfa5829492feb1 (patch) | |
| tree | 8033a98014481f35874226802703980d1b3481f1 | |
| parent | 2002bbd139da85246597a131d0b43c4ef921f233 (diff) | |
| parent | e4ed06f12b052a3c80d5c572889cb670a41f3c7d (diff) | |
| download | emacs-eff2e78688e5347aed84f237fabfa5829492feb1.tar.gz emacs-eff2e78688e5347aed84f237fabfa5829492feb1.zip | |
upstream
42 files changed, 549 insertions, 202 deletions
diff --git a/admin/ChangeLog b/admin/ChangeLog index bc38edfc8d4..17cbcbb3bdf 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | 2011-08-23 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * unidata/unidata-gen.el (unidata-prop-alist): Update the default | ||
| 4 | values of bidi-class according to DerivedBidiClass.txt from the | ||
| 5 | latest UCD. | ||
| 6 | |||
| 7 | 2011-08-23 Kenichi Handa <handa@m17n.org> | ||
| 8 | |||
| 9 | * unidata/unidata-gen.el (unidata-prop-alist): Provide default | ||
| 10 | values for name, general-category, canonical-combining-class, | ||
| 11 | mirrored, and bidi-class. Describe the meaning of value nil for | ||
| 12 | decimal-digit-value, digit-value, numeric-value, uppercase, | ||
| 13 | lowercase, titlecase, and mirroring. | ||
| 14 | (unidata-gen-table): Handle the case that default-value is a | ||
| 15 | list. Set default values of characters not listed in a table. | ||
| 16 | (unidata-get-name): Return an empty string if a value in a | ||
| 17 | char-table is nil. | ||
| 18 | (unidata-get-decomposition): Return a list of character itself if | ||
| 19 | a value in a char-table is nil. | ||
| 20 | |||
| 1 | 2011-08-15 Eli Zaretskii <eliz@gnu.org> | 21 | 2011-08-15 Eli Zaretskii <eliz@gnu.org> |
| 2 | 22 | ||
| 3 | * unidata/bidimirror.awk: File removed. | 23 | * unidata/bidimirror.awk: File removed. |
diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el index ab1dcd134ac..1002bb003af 100644 --- a/admin/unidata/unidata-gen.el +++ b/admin/unidata/unidata-gen.el | |||
| @@ -146,7 +146,7 @@ | |||
| 146 | (setq unidata-list (cdr table)))) | 146 | (setq unidata-list (cdr table)))) |
| 147 | 147 | ||
| 148 | ;; Alist of this form: | 148 | ;; Alist of this form: |
| 149 | ;; (PROP INDEX GENERATOR FILENAME DOCSTRING DESCRIBER VAL-LIST) | 149 | ;; (PROP INDEX GENERATOR FILENAME DOCSTRING DESCRIBER DEFAULT VAL-LIST) |
| 150 | ;; PROP: character property | 150 | ;; PROP: character property |
| 151 | ;; INDEX: index to each element of unidata-list for PROP. | 151 | ;; INDEX: index to each element of unidata-list for PROP. |
| 152 | ;; It may be a function that generates an alist of character codes | 152 | ;; It may be a function that generates an alist of character codes |
| @@ -155,14 +155,20 @@ | |||
| 155 | ;; FILENAME: filename to store the char-table | 155 | ;; FILENAME: filename to store the char-table |
| 156 | ;; DOCSTRING: docstring for the property | 156 | ;; DOCSTRING: docstring for the property |
| 157 | ;; DESCRIBER: function to call to get a description string of property value | 157 | ;; DESCRIBER: function to call to get a description string of property value |
| 158 | ;; DEFAULT: the default value of the property | 158 | ;; DEFAULT: the default value of the property. It may have the form |
| 159 | ;; (VAL0 (FROM1 TO1 VAL1) ...) which indicates that the default | ||
| 160 | ;; value is VAL0 except for characters in the ranges specified by | ||
| 161 | ;; FROMn and TOn (incusive). The default value of characters | ||
| 162 | ;; between FROMn and TOn is VALn. | ||
| 159 | ;; VAL-LIST: list of specially ordered property values | 163 | ;; VAL-LIST: list of specially ordered property values |
| 160 | 164 | ||
| 161 | (defconst unidata-prop-alist | 165 | (defconst unidata-prop-alist |
| 162 | '((name | 166 | '((name |
| 163 | 1 unidata-gen-table-name "uni-name.el" | 167 | 1 unidata-gen-table-name "uni-name.el" |
| 164 | "Unicode character name. | 168 | "Unicode character name. |
| 165 | Property value is a string.") | 169 | Property value is a string." |
| 170 | nil | ||
| 171 | "") | ||
| 166 | (general-category | 172 | (general-category |
| 167 | 2 unidata-gen-table-symbol "uni-category.el" | 173 | 2 unidata-gen-table-symbol "uni-category.el" |
| 168 | "Unicode general category. | 174 | "Unicode general category. |
| @@ -170,7 +176,7 @@ Property value is one of the following symbols: | |||
| 170 | Lu, Ll, Lt, Lm, Lo, Mn, Mc, Me, Nd, Nl, No, Pc, Pd, Ps, Pe, Pi, Pf, Po, | 176 | Lu, Ll, Lt, Lm, Lo, Mn, Mc, Me, Nd, Nl, No, Pc, Pd, Ps, Pe, Pi, Pf, Po, |
| 171 | Sm, Sc, Sk, So, Zs, Zl, Zp, Cc, Cf, Cs, Co, Cn" | 177 | Sm, Sc, Sk, So, Zs, Zl, Zp, Cc, Cf, Cs, Co, Cn" |
| 172 | unidata-describe-general-category | 178 | unidata-describe-general-category |
| 173 | nil | 179 | Cn |
| 174 | ;; The order of elements must be in sync with unicode_category_t | 180 | ;; The order of elements must be in sync with unicode_category_t |
| 175 | ;; in src/character.h. | 181 | ;; in src/character.h. |
| 176 | (Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd Ps Pe Pi Pf Po | 182 | (Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd Ps Pe Pi Pf Po |
| @@ -179,7 +185,8 @@ Property value is one of the following symbols: | |||
| 179 | 3 unidata-gen-table-integer "uni-combining.el" | 185 | 3 unidata-gen-table-integer "uni-combining.el" |
| 180 | "Unicode canonical combining class. | 186 | "Unicode canonical combining class. |
| 181 | Property value is an integer." | 187 | Property value is an integer." |
| 182 | unidata-describe-canonical-combining-class) | 188 | unidata-describe-canonical-combining-class |
| 189 | 0) | ||
| 183 | (bidi-class | 190 | (bidi-class |
| 184 | 4 unidata-gen-table-symbol "uni-bidi.el" | 191 | 4 unidata-gen-table-symbol "uni-bidi.el" |
| 185 | "Unicode bidi class. | 192 | "Unicode bidi class. |
| @@ -187,7 +194,12 @@ Property value is one of the following symbols: | |||
| 187 | L, LRE, LRO, R, AL, RLE, RLO, PDF, EN, ES, ET, | 194 | L, LRE, LRO, R, AL, RLE, RLO, PDF, EN, ES, ET, |
| 188 | AN, CS, NSM, BN, B, S, WS, ON" | 195 | AN, CS, NSM, BN, B, S, WS, ON" |
| 189 | unidata-describe-bidi-class | 196 | unidata-describe-bidi-class |
| 190 | L | 197 | ;; The assignment of default values to blocks of code points |
| 198 | ;; follows the file DerivedBidiClass.txt from the Unicode | ||
| 199 | ;; Character Database (UCD). | ||
| 200 | (L (#x0600 #x06FF AL) (#xFB50 #xFDFF AL) (#xFE70 #xFEFF AL) | ||
| 201 | (#x0590 #x05FF R) (#x07C0 #x08FF R) | ||
| 202 | (#xFB1D #xFB4F R) (#x10800 #x10FFF R) (#x1E800 #x1EFFF R)) | ||
| 191 | ;; The order of elements must be in sync with bidi_type_t in | 203 | ;; The order of elements must be in sync with bidi_type_t in |
| 192 | ;; src/dispextern.h. | 204 | ;; src/dispextern.h. |
| 193 | (L R EN AN BN B AL LRE LRO RLE RLO PDF ES ET CS NSM S WS ON)) | 205 | (L R EN AN BN B AL LRE LRO RLE RLO PDF ES ET CS NSM S WS ON)) |
| @@ -202,19 +214,24 @@ one of these symbols representing compatibility formatting tag: | |||
| 202 | (decimal-digit-value | 214 | (decimal-digit-value |
| 203 | 6 unidata-gen-table-integer "uni-decimal.el" | 215 | 6 unidata-gen-table-integer "uni-decimal.el" |
| 204 | "Unicode numeric value (decimal digit). | 216 | "Unicode numeric value (decimal digit). |
| 205 | Property value is an integer.") | 217 | Property value is an integer 0..9, or nil. |
| 218 | The value nil stands for NaN \"Numeric_Value\".") | ||
| 206 | (digit-value | 219 | (digit-value |
| 207 | 7 unidata-gen-table-integer "uni-digit.el" | 220 | 7 unidata-gen-table-integer "uni-digit.el" |
| 208 | "Unicode numeric value (digit). | 221 | "Unicode numeric value (digit). |
| 209 | Property value is an integer.") | 222 | Property value is an integer 0..9, or nil. |
| 223 | The value nil stands for NaN \"Numeric_Value\".") | ||
| 210 | (numeric-value | 224 | (numeric-value |
| 211 | 8 unidata-gen-table-numeric "uni-numeric.el" | 225 | 8 unidata-gen-table-numeric "uni-numeric.el" |
| 212 | "Unicode numeric value (numeric). | 226 | "Unicode numeric value (numeric). |
| 213 | Property value is an integer or a floating point.") | 227 | Property value is an integer, a floating point, or nil. |
| 228 | The value nil stands for NaN \"Numeric_Value\".") | ||
| 214 | (mirrored | 229 | (mirrored |
| 215 | 9 unidata-gen-table-symbol "uni-mirrored.el" | 230 | 9 unidata-gen-table-symbol "uni-mirrored.el" |
| 216 | "Unicode bidi mirrored flag. | 231 | "Unicode bidi mirrored flag. |
| 217 | Property value is a symbol `Y' or `N'. See also the property `mirroring'.") | 232 | Property value is a symbol `Y' or `N'. See also the property `mirroring'." |
| 233 | nil | ||
| 234 | N) | ||
| 218 | (old-name | 235 | (old-name |
| 219 | 10 unidata-gen-table-name "uni-old-name.el" | 236 | 10 unidata-gen-table-name "uni-old-name.el" |
| 220 | "Unicode old names as published in Unicode 1.0. | 237 | "Unicode old names as published in Unicode 1.0. |
| @@ -226,23 +243,30 @@ Property value is a string.") | |||
| 226 | (uppercase | 243 | (uppercase |
| 227 | 12 unidata-gen-table-character "uni-uppercase.el" | 244 | 12 unidata-gen-table-character "uni-uppercase.el" |
| 228 | "Unicode simple uppercase mapping. | 245 | "Unicode simple uppercase mapping. |
| 229 | Property value is a character." | 246 | Property value is a character or nil. |
| 247 | The value nil means that the actual property value of a character | ||
| 248 | is the character itself." | ||
| 230 | string) | 249 | string) |
| 231 | (lowercase | 250 | (lowercase |
| 232 | 13 unidata-gen-table-character "uni-lowercase.el" | 251 | 13 unidata-gen-table-character "uni-lowercase.el" |
| 233 | "Unicode simple lowercase mapping. | 252 | "Unicode simple lowercase mapping. |
| 234 | Property value is a character." | 253 | Property value is a character or nil. |
| 254 | The value nil means that the actual property value of a character | ||
| 255 | is the character itself." | ||
| 235 | string) | 256 | string) |
| 236 | (titlecase | 257 | (titlecase |
| 237 | 14 unidata-gen-table-character "uni-titlecase.el" | 258 | 14 unidata-gen-table-character "uni-titlecase.el" |
| 238 | "Unicode simple titlecase mapping. | 259 | "Unicode simple titlecase mapping. |
| 239 | Property value is a character." | 260 | Property value is a character or nil. |
| 261 | The value nil means that the actual property value of a character | ||
| 262 | is the character itself." | ||
| 240 | string) | 263 | string) |
| 241 | (mirroring | 264 | (mirroring |
| 242 | unidata-gen-mirroring-list unidata-gen-table-character "uni-mirrored.el" | 265 | unidata-gen-mirroring-list unidata-gen-table-character "uni-mirrored.el" |
| 243 | "Unicode bidi-mirroring characters. | 266 | "Unicode bidi-mirroring characters. |
| 244 | Property value is a character that has the corresponding mirroring image, | 267 | Property value is a character that has the corresponding mirroring image or nil. |
| 245 | or nil for non-mirrored character."))) | 268 | The value nil means that the actual property value of a character |
| 269 | is the character itself."))) | ||
| 246 | 270 | ||
| 247 | ;; Functions to access the above data. | 271 | ;; Functions to access the above data. |
| 248 | (defsubst unidata-prop-index (prop) (nth 1 (assq prop unidata-prop-alist))) | 272 | (defsubst unidata-prop-index (prop) (nth 1 (assq prop unidata-prop-alist))) |
| @@ -393,9 +417,18 @@ or nil for non-mirrored character."))) | |||
| 393 | (while tail | 417 | (while tail |
| 394 | (setcar tail (cons (car tail) val-code)) | 418 | (setcar tail (cons (car tail) val-code)) |
| 395 | (setq tail (cdr tail) val-code (1+ val-code))) | 419 | (setq tail (cdr tail) val-code (1+ val-code))) |
| 396 | (setq default-value (unidata-encode-val val-list default-value)) | 420 | (if (consp default-value) |
| 397 | (set-char-table-range table t default-value) | 421 | (setq default-value (copy-sequence default-value)) |
| 398 | (set-char-table-range table nil default-value) | 422 | (setq default-value (list default-value))) |
| 423 | (setcar default-value | ||
| 424 | (unidata-encode-val val-list (car default-value))) | ||
| 425 | (set-char-table-range table t (car default-value)) | ||
| 426 | (set-char-table-range table nil (car default-value)) | ||
| 427 | (dolist (elm (cdr default-value)) | ||
| 428 | (setcar (nthcdr 2 elm) | ||
| 429 | (unidata-encode-val val-list (nth 2 elm))) | ||
| 430 | (set-char-table-range table (cons (car elm) (nth 1 elm)) (nth 2 elm))) | ||
| 431 | |||
| 399 | (setq tail unidata-list) | 432 | (setq tail unidata-list) |
| 400 | (while tail | 433 | (while tail |
| 401 | (setq elt (car tail) tail (cdr tail)) | 434 | (setq elt (car tail) tail (cdr tail)) |
| @@ -419,17 +452,27 @@ or nil for non-mirrored character."))) | |||
| 419 | (setq prev-range-data (cons (cons from to) val-code))))) | 452 | (setq prev-range-data (cons (cons from to) val-code))))) |
| 420 | (let* ((start (lsh (lsh range -7) 7)) | 453 | (let* ((start (lsh (lsh range -7) 7)) |
| 421 | (limit (+ start 127)) | 454 | (limit (+ start 127)) |
| 422 | str count new-val) | 455 | str count new-val from to vcode) |
| 423 | (fillarray vec 0) | 456 | (fillarray vec (car default-value)) |
| 424 | ;; See the comment above. | 457 | (dolist (elm (cdr default-value)) |
| 425 | (when (and prev-range-data | 458 | (setq from (car elm) to (nth 1 elm)) |
| 426 | (>= (cdr (car prev-range-data)) start)) | 459 | (when (and (<= from limit) |
| 427 | (let ((from (car (car prev-range-data))) | 460 | (or (>= from start) (>= to start))) |
| 428 | (to (cdr (car prev-range-data))) | 461 | (setq from (max from start) |
| 429 | (vcode (cdr prev-range-data))) | 462 | to (min to limit) |
| 463 | vcode (nth 2 elm)) | ||
| 430 | (while (<= from to) | 464 | (while (<= from to) |
| 431 | (aset vec (- from start) vcode) | 465 | (aset vec (- from start) vcode) |
| 432 | (setq from (1+ from))))) | 466 | (setq from (1+ from))))) |
| 467 | ;; See the comment above. | ||
| 468 | (when (and prev-range-data | ||
| 469 | (>= (cdr (car prev-range-data)) start)) | ||
| 470 | (setq from (car (car prev-range-data)) | ||
| 471 | to (cdr (car prev-range-data)) | ||
| 472 | vcode (cdr prev-range-data)) | ||
| 473 | (while (<= from to) | ||
| 474 | (aset vec (- from start) vcode) | ||
| 475 | (setq from (1+ from)))) | ||
| 433 | (setq prev-range-data nil) | 476 | (setq prev-range-data nil) |
| 434 | (if val-code | 477 | (if val-code |
| 435 | (aset vec (- range start) val-code)) | 478 | (aset vec (- range start) val-code)) |
| @@ -669,7 +712,7 @@ or nil for non-mirrored character."))) | |||
| 669 | (aset table c name) | 712 | (aset table c name) |
| 670 | (if (= c char) | 713 | (if (= c char) |
| 671 | (setq val name)))) | 714 | (setq val name)))) |
| 672 | val))) | 715 | (or val "")))) |
| 673 | 716 | ||
| 674 | ((and (integerp val) (> val 0)) | 717 | ((and (integerp val) (> val 0)) |
| 675 | (let* ((symbol-table (aref (char-table-extra-slot table 4) 1)) | 718 | (let* ((symbol-table (aref (char-table-extra-slot table 4) 1)) |
| @@ -695,7 +738,9 @@ or nil for non-mirrored character."))) | |||
| 695 | ((eq sym 'CJK\ COMPATIBILITY\ IDEOGRAPH) | 738 | ((eq sym 'CJK\ COMPATIBILITY\ IDEOGRAPH) |
| 696 | (format "%s-%04X" sym char)) | 739 | (format "%s-%04X" sym char)) |
| 697 | ((eq sym 'VARIATION\ SELECTOR) | 740 | ((eq sym 'VARIATION\ SELECTOR) |
| 698 | (format "%s-%d" sym (+ (- char #xe0100) 17)))))))) | 741 | (format "%s-%d" sym (+ (- char #xe0100) 17)))))) |
| 742 | |||
| 743 | (t ""))) | ||
| 699 | 744 | ||
| 700 | ;; Store VAL as the name of CHAR in TABLE. | 745 | ;; Store VAL as the name of CHAR in TABLE. |
| 701 | 746 | ||
| @@ -707,6 +752,9 @@ or nil for non-mirrored character."))) | |||
| 707 | 752 | ||
| 708 | (defun unidata-get-decomposition (char val table) | 753 | (defun unidata-get-decomposition (char val table) |
| 709 | (cond | 754 | (cond |
| 755 | ((not val) | ||
| 756 | (list char)) | ||
| 757 | |||
| 710 | ((consp val) | 758 | ((consp val) |
| 711 | val) | 759 | val) |
| 712 | 760 | ||
| @@ -747,7 +795,8 @@ or nil for non-mirrored character."))) | |||
| 747 | (aset vec idx (nconc word-list tail-list))) | 795 | (aset vec idx (nconc word-list tail-list))) |
| 748 | (dotimes (i 128) | 796 | (dotimes (i 128) |
| 749 | (aset table (+ first-char i) (aref vec i))) | 797 | (aset table (+ first-char i) (aref vec i))) |
| 750 | (aref vec (- char first-char))))) | 798 | (setq val (aref vec (- char first-char))) |
| 799 | (or val (list char))))) | ||
| 751 | 800 | ||
| 752 | ;; Hangul syllable | 801 | ;; Hangul syllable |
| 753 | ((and (eq val 0) (>= char #xAC00) (<= char #xD7A3)) | 802 | ((and (eq val 0) (>= char #xAC00) (<= char #xD7A3)) |
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 4cb4d0a6f50..4bf615328b1 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog | |||
| @@ -1,3 +1,14 @@ | |||
| 1 | 2011-08-24 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * display.texi (Bidirectional Display): Document return value in | ||
| 4 | buffers that are not bidi-reordered for display, and in unibyte | ||
| 5 | buffers. | ||
| 6 | |||
| 7 | 2011-08-23 Eli Zaretskii <eliz@gnu.org> | ||
| 8 | |||
| 9 | * nonascii.texi (Character Properties): Document the values for | ||
| 10 | unassigned codepoints. | ||
| 11 | |||
| 1 | 2011-08-18 Eli Zaretskii <eliz@gnu.org> | 12 | 2011-08-18 Eli Zaretskii <eliz@gnu.org> |
| 2 | 13 | ||
| 3 | * nonascii.texi (Character Properties): Document use of | 14 | * nonascii.texi (Character Properties): Document use of |
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 8f7f4003411..0593eba8f05 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi | |||
| @@ -6104,7 +6104,9 @@ omitted or @code{nil}, it defaults to the current buffer. If the | |||
| 6104 | buffer-local value of the variable @code{bidi-paragraph-direction} is | 6104 | buffer-local value of the variable @code{bidi-paragraph-direction} is |
| 6105 | non-@code{nil}, the returned value will be identical to that value; | 6105 | non-@code{nil}, the returned value will be identical to that value; |
| 6106 | otherwise, the returned value reflects the paragraph direction | 6106 | otherwise, the returned value reflects the paragraph direction |
| 6107 | determined dynamically by Emacs. | 6107 | determined dynamically by Emacs. For buffers whose value of |
| 6108 | @code{bidi-display-reordering} is @code{nil} as well as unibyte | ||
| 6109 | buffers, this function always returns @code{left-to-right}. | ||
| 6108 | @end defun | 6110 | @end defun |
| 6109 | 6111 | ||
| 6110 | @cindex layout on display, and bidirectional text | 6112 | @cindex layout on display, and bidirectional text |
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index 7b6d665b2ac..298c7c3d1a8 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi | |||
| @@ -369,6 +369,12 @@ replacing each @samp{_} character with a dash @samp{-}. For example, | |||
| 369 | @code{canonical-combining-class}. However, sometimes we shorten the | 369 | @code{canonical-combining-class}. However, sometimes we shorten the |
| 370 | names to make their use easier. | 370 | names to make their use easier. |
| 371 | 371 | ||
| 372 | @cindex unassigned character codepoints | ||
| 373 | Some codepoints are left @dfn{unassigned} by the | ||
| 374 | @acronym{UCD}---they don't correspond to any character. The Unicode | ||
| 375 | Standard defines default values of properties for such codepoints; | ||
| 376 | they are mentioned below for each property. | ||
| 377 | |||
| 372 | Here is the full list of value types for all the character | 378 | Here is the full list of value types for all the character |
| 373 | properties that Emacs knows about: | 379 | properties that Emacs knows about: |
| 374 | 380 | ||
| @@ -376,24 +382,31 @@ properties that Emacs knows about: | |||
| 376 | @item name | 382 | @item name |
| 377 | Corresponds to the @code{Name} Unicode property. The value is a | 383 | Corresponds to the @code{Name} Unicode property. The value is a |
| 378 | string consisting of upper-case Latin letters A to Z, digits, spaces, | 384 | string consisting of upper-case Latin letters A to Z, digits, spaces, |
| 379 | and hyphen @samp{-} characters. | 385 | and hyphen @samp{-} characters. For unassigned codepoints, the value |
| 386 | is an empty string. | ||
| 380 | 387 | ||
| 381 | @cindex unicode general category | 388 | @cindex unicode general category |
| 382 | @item general-category | 389 | @item general-category |
| 383 | Corresponds to the @code{General_Category} Unicode property. The | 390 | Corresponds to the @code{General_Category} Unicode property. The |
| 384 | value is a symbol whose name is a 2-letter abbreviation of the | 391 | value is a symbol whose name is a 2-letter abbreviation of the |
| 385 | character's classification. | 392 | character's classification. For unassigned codepoints, the value |
| 393 | is @code{Cn}. | ||
| 386 | 394 | ||
| 387 | @item canonical-combining-class | 395 | @item canonical-combining-class |
| 388 | Corresponds to the @code{Canonical_Combining_Class} Unicode property. | 396 | Corresponds to the @code{Canonical_Combining_Class} Unicode property. |
| 389 | The value is an integer number. | 397 | The value is an integer number. For unassigned codepoints, the value |
| 398 | is zero. | ||
| 390 | 399 | ||
| 391 | @cindex bidirectional class of characters | 400 | @cindex bidirectional class of characters |
| 392 | @item bidi-class | 401 | @item bidi-class |
| 393 | Corresponds to the Unicode @code{Bidi_Class} property. The value is a | 402 | Corresponds to the Unicode @code{Bidi_Class} property. The value is a |
| 394 | symbol whose name is the Unicode @dfn{directional type} of the | 403 | symbol whose name is the Unicode @dfn{directional type} of the |
| 395 | character. Emacs uses this property when it reorders bidirectional | 404 | character. Emacs uses this property when it reorders bidirectional |
| 396 | text for display (@pxref{Bidirectional Display}). | 405 | text for display (@pxref{Bidirectional Display}). For unassigned |
| 406 | codepoints, the value depends on the code blocks to which the | ||
| 407 | codepoint belongs: most unassigned codepoints get the value of | ||
| 408 | @code{L} (strong L), but some get values of @code{AL} (Arabic letter) | ||
| 409 | or @code{R} (strong R). | ||
| 397 | 410 | ||
| 398 | @item decomposition | 411 | @item decomposition |
| 399 | Corresponds to the Unicode @code{Decomposition_Type} and | 412 | Corresponds to the Unicode @code{Decomposition_Type} and |
| @@ -405,19 +418,22 @@ Note that the Unicode spec writes these tag names inside | |||
| 405 | brackets; e.g., Unicode specifies @samp{<small>} where Emacs uses | 418 | brackets; e.g., Unicode specifies @samp{<small>} where Emacs uses |
| 406 | @samp{small}. | 419 | @samp{small}. |
| 407 | }; the other elements are characters that give the compatibility | 420 | }; the other elements are characters that give the compatibility |
| 408 | decomposition sequence of this character. | 421 | decomposition sequence of this character. For unassigned codepoints, |
| 422 | the value is the character itself. | ||
| 409 | 423 | ||
| 410 | @item decimal-digit-value | 424 | @item decimal-digit-value |
| 411 | Corresponds to the Unicode @code{Numeric_Value} property for | 425 | Corresponds to the Unicode @code{Numeric_Value} property for |
| 412 | characters whose @code{Numeric_Type} is @samp{Digit}. The value is an | 426 | characters whose @code{Numeric_Type} is @samp{Digit}. The value is an |
| 413 | integer number. | 427 | integer number. For unassigned codepoints, the value is @code{nil}, |
| 428 | which means @acronym{NaN}, or ``not-a-number''. | ||
| 414 | 429 | ||
| 415 | @item digit-value | 430 | @item digit-value |
| 416 | Corresponds to the Unicode @code{Numeric_Value} property for | 431 | Corresponds to the Unicode @code{Numeric_Value} property for |
| 417 | characters whose @code{Numeric_Type} is @samp{Decimal}. The value is | 432 | characters whose @code{Numeric_Type} is @samp{Decimal}. The value is |
| 418 | an integer number. Examples of such characters include compatibility | 433 | an integer number. Examples of such characters include compatibility |
| 419 | subscript and superscript digits, for which the value is the | 434 | subscript and superscript digits, for which the value is the |
| 420 | corresponding number. | 435 | corresponding number. For unassigned codepoints, the value is |
| 436 | @code{nil}, which means @acronym{NaN}. | ||
| 421 | 437 | ||
| 422 | @item numeric-value | 438 | @item numeric-value |
| 423 | Corresponds to the Unicode @code{Numeric_Value} property for | 439 | Corresponds to the Unicode @code{Numeric_Value} property for |
| @@ -426,12 +442,15 @@ this property is an integer or a floating-point number. Examples of | |||
| 426 | characters that have this property include fractions, subscripts, | 442 | characters that have this property include fractions, subscripts, |
| 427 | superscripts, Roman numerals, currency numerators, and encircled | 443 | superscripts, Roman numerals, currency numerators, and encircled |
| 428 | numbers. For example, the value of this property for the character | 444 | numbers. For example, the value of this property for the character |
| 429 | @code{U+2155} (@sc{vulgar fraction one fifth}) is @code{0.2}. | 445 | @code{U+2155} (@sc{vulgar fraction one fifth}) is @code{0.2}. For |
| 446 | unassigned codepoints, the value is @code{nil}, which means | ||
| 447 | @acronym{NaN}. | ||
| 430 | 448 | ||
| 431 | @cindex mirroring of characters | 449 | @cindex mirroring of characters |
| 432 | @item mirrored | 450 | @item mirrored |
| 433 | Corresponds to the Unicode @code{Bidi_Mirrored} property. The value | 451 | Corresponds to the Unicode @code{Bidi_Mirrored} property. The value |
| 434 | of this property is a symbol, either @code{Y} or @code{N}. | 452 | of this property is a symbol, either @code{Y} or @code{N}. For |
| 453 | unassigned codepoints, the value is @code{N}. | ||
| 435 | 454 | ||
| 436 | @item mirroring | 455 | @item mirroring |
| 437 | Corresponds to the Unicode @code{Bidi_Mirroring_Glyph} property. The | 456 | Corresponds to the Unicode @code{Bidi_Mirroring_Glyph} property. The |
| @@ -443,29 +462,33 @@ property; however, some characters whose @code{mirrored} property is | |||
| 443 | @code{Y} also have @code{nil} for @code{mirroring}, because no | 462 | @code{Y} also have @code{nil} for @code{mirroring}, because no |
| 444 | appropriate characters exist with mirrored glyphs. Emacs uses this | 463 | appropriate characters exist with mirrored glyphs. Emacs uses this |
| 445 | property to display mirror images of characters when appropriate | 464 | property to display mirror images of characters when appropriate |
| 446 | (@pxref{Bidirectional Display}). | 465 | (@pxref{Bidirectional Display}). For unassigned codepoints, the value |
| 466 | is @code{nil}. | ||
| 447 | 467 | ||
| 448 | @item old-name | 468 | @item old-name |
| 449 | Corresponds to the Unicode @code{Unicode_1_Name} property. The value | 469 | Corresponds to the Unicode @code{Unicode_1_Name} property. The value |
| 450 | is a string. | 470 | is a string. For unassigned codepoints, the value is an empty string. |
| 451 | 471 | ||
| 452 | @item iso-10646-comment | 472 | @item iso-10646-comment |
| 453 | Corresponds to the Unicode @code{ISO_Comment} property. The value is | 473 | Corresponds to the Unicode @code{ISO_Comment} property. The value is |
| 454 | a string. | 474 | a string. For unassigned codepoints, the value is an empty string. |
| 455 | 475 | ||
| 456 | @item uppercase | 476 | @item uppercase |
| 457 | Corresponds to the Unicode @code{Simple_Uppercase_Mapping} property. | 477 | Corresponds to the Unicode @code{Simple_Uppercase_Mapping} property. |
| 458 | The value of this property is a single character. | 478 | The value of this property is a single character. For unassigned |
| 479 | codepoints, the value is @code{nil}, which means the character itself. | ||
| 459 | 480 | ||
| 460 | @item lowercase | 481 | @item lowercase |
| 461 | Corresponds to the Unicode @code{Simple_Lowercase_Mapping} property. | 482 | Corresponds to the Unicode @code{Simple_Lowercase_Mapping} property. |
| 462 | The value of this property is a single character. | 483 | The value of this property is a single character. For unassigned |
| 484 | codepoints, the value is @code{nil}, which means the character itself. | ||
| 463 | 485 | ||
| 464 | @item titlecase | 486 | @item titlecase |
| 465 | Corresponds to the Unicode @code{Simple_Titlecase_Mapping} property. | 487 | Corresponds to the Unicode @code{Simple_Titlecase_Mapping} property. |
| 466 | @dfn{Title case} is a special form of a character used when the first | 488 | @dfn{Title case} is a special form of a character used when the first |
| 467 | character of a word needs to be capitalized. The value of this | 489 | character of a word needs to be capitalized. The value of this |
| 468 | property is a single character. | 490 | property is a single character. For unassigned codepoints, the value |
| 491 | is @code{nil}, which means the character itself. | ||
| 469 | @end table | 492 | @end table |
| 470 | 493 | ||
| 471 | @defun get-char-code-property char propname | 494 | @defun get-char-code-property char propname |
diff --git a/etc/ChangeLog b/etc/ChangeLog index 31752a2bc2a..092aa6fb387 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2011-08-24 Steve Chapel <schapel@laptop.stevechapel.com> (tiny change) | ||
| 2 | |||
| 3 | * refcards/refcard.tex: Add a few more commands. (Bug#9343) | ||
| 4 | |||
| 1 | 2011-08-22 Juri Linkov <juri@jurta.org> | 5 | 2011-08-22 Juri Linkov <juri@jurta.org> |
| 2 | 6 | ||
| 3 | * compilation.txt: Add more samples of output and non-output | 7 | * compilation.txt: Add more samples of output and non-output |
diff --git a/etc/refcards/refcard.tex b/etc/refcards/refcard.tex index 52b9348db26..7d4f9dbfa89 100644 --- a/etc/refcards/refcard.tex +++ b/etc/refcards/refcard.tex | |||
| @@ -332,6 +332,7 @@ If Emacs is still searching, \kbd{C-g} cancels only the part not matched. | |||
| 332 | 332 | ||
| 333 | \shortcopyrightnotice | 333 | \shortcopyrightnotice |
| 334 | 334 | ||
| 335 | \newcolumn | ||
| 335 | \section{Motion} | 336 | \section{Motion} |
| 336 | 337 | ||
| 337 | \paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr | 338 | \paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr |
| @@ -352,7 +353,10 @@ If Emacs is still searching, \kbd{C-g} cancels only the part not matched. | |||
| 352 | \key{scroll to previous screen}{M-v} | 353 | \key{scroll to previous screen}{M-v} |
| 353 | \key{scroll left}{C-x <} | 354 | \key{scroll left}{C-x <} |
| 354 | \key{scroll right}{C-x >} | 355 | \key{scroll right}{C-x >} |
| 355 | \key{scroll current line to center of screen}{C-u C-l} | 356 | \key{scroll current line to center, top, bottom}{C-l} |
| 357 | |||
| 358 | \key{goto line}{M-g g} | ||
| 359 | \key{back to indentation}{M-m} | ||
| 356 | 360 | ||
| 357 | \section{Killing and Deleting} | 361 | \section{Killing and Deleting} |
| 358 | 362 | ||
| @@ -393,14 +397,15 @@ If Emacs is still searching, \kbd{C-g} cancels only the part not matched. | |||
| 393 | 397 | ||
| 394 | Valid responses in query-replace mode are | 398 | Valid responses in query-replace mode are |
| 395 | 399 | ||
| 396 | \key{{\bf replace} this one, go on to next}{SPC} | 400 | \key{{\bf replace} this one, go on to next}{SPC {\rm or} y} |
| 397 | \key{replace this one, don't move}{,} | 401 | \key{replace this one, don't move}{,} |
| 398 | \key{{\bf skip} to next without replacing}{DEL} | 402 | \key{{\bf skip} to next without replacing}{DEL {\rm or} n} |
| 399 | \key{replace all remaining matches}{!} | 403 | \key{replace all remaining matches}{!} |
| 400 | \key{{\bf back up} to the previous match}{^} | 404 | \key{{\bf back up} to the previous match}{^} |
| 401 | \key{{\bf exit} query-replace}{RET} | 405 | \key{{\bf exit} query-replace}{RET} |
| 402 | \key{enter recursive edit (\kbd{C-M-c} to exit)}{C-r} | 406 | \key{enter recursive edit (\kbd{C-M-c} to exit)}{C-r} |
| 403 | 407 | ||
| 408 | \newcolumn | ||
| 404 | \section{Multiple Windows} | 409 | \section{Multiple Windows} |
| 405 | 410 | ||
| 406 | When two commands are shown, the second is a similar command for a | 411 | When two commands are shown, the second is a similar command for a |
| @@ -438,6 +443,7 @@ frame instead of a window. | |||
| 438 | \key{indent {\bf region} (mode-dependent)}{C-M-\\} | 443 | \key{indent {\bf region} (mode-dependent)}{C-M-\\} |
| 439 | \key{indent {\bf sexp} (mode-dependent)}{C-M-q} | 444 | \key{indent {\bf sexp} (mode-dependent)}{C-M-q} |
| 440 | \key{indent region rigidly {\it arg\/} columns}{C-x TAB} | 445 | \key{indent region rigidly {\it arg\/} columns}{C-x TAB} |
| 446 | \key{indent for comment}{M-;} | ||
| 441 | 447 | ||
| 442 | \key{insert newline after point}{C-o} | 448 | \key{insert newline after point}{C-o} |
| 443 | \key{move rest of line vertically down}{C-M-o} | 449 | \key{move rest of line vertically down}{C-M-o} |
| @@ -536,6 +542,13 @@ minibuffer. Type \kbd{F10} to activate menu bar items on text terminals. | |||
| 536 | 542 | ||
| 537 | \key{expand previous word dynamically}{M-/} | 543 | \key{expand previous word dynamically}{M-/} |
| 538 | 544 | ||
| 545 | \section{Miscellaneous} | ||
| 546 | |||
| 547 | \key{numeric argument}{C-u {\it num}} | ||
| 548 | \key{negative argument}{M--} | ||
| 549 | \key{quoted insert}{C-q {\it char}} | ||
| 550 | |||
| 551 | \newcolumn | ||
| 539 | \section{Regular Expressions} | 552 | \section{Regular Expressions} |
| 540 | 553 | ||
| 541 | \key{any single character except a newline}{. {\rm(dot)}} | 554 | \key{any single character except a newline}{. {\rm(dot)}} |
| @@ -604,6 +617,7 @@ Other: | |||
| 604 | 617 | ||
| 605 | \endindentedkeys | 618 | \endindentedkeys |
| 606 | 619 | ||
| 620 | \newcolumn | ||
| 607 | \section{Registers} | 621 | \section{Registers} |
| 608 | 622 | ||
| 609 | \key{save region in register}{C-x r s} | 623 | \key{save region in register}{C-x r s} |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2973fa64360..91078ce3246 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,91 @@ | |||
| 1 | 2011-08-25 Chong Yidong <cyd@stupidchicken.com> | ||
| 2 | |||
| 3 | * window.el (bury-buffer, quit-window): Use bury-buffer-internal. | ||
| 4 | |||
| 5 | 2011-08-25 Glenn Morris <rgm@gnu.org> | ||
| 6 | |||
| 7 | * mail/smtpmail.el (smtpmail-smtp-user): Add version: tag. | ||
| 8 | (smtpmail-via-smtp): Handle nil response from smtp. | ||
| 9 | |||
| 10 | 2011-08-24 Juri Linkov <juri@jurta.org> | ||
| 11 | |||
| 12 | * proced.el (proced-marked): Inherit from `error' instead of | ||
| 13 | `font-lock-warning-face'. | ||
| 14 | |||
| 15 | * ibuffer.el (ibuffer-marked-face): Change default face from | ||
| 16 | `font-lock-warning-face' to `warning'. | ||
| 17 | (ibuffer-deletion-face): Change default face from | ||
| 18 | `font-lock-type-face' to `error'. | ||
| 19 | |||
| 20 | * battery.el (battery-update): Use the face `error' instead of | ||
| 21 | `font-lock-warning-face' (bug#6117). | ||
| 22 | |||
| 23 | 2011-08-24 Juri Linkov <juri@jurta.org> | ||
| 24 | |||
| 25 | * faces.el (success): Change face color from "Green3" to | ||
| 26 | "ForestGreen" on light background (bug#9353). | ||
| 27 | |||
| 28 | 2011-08-24 Chong Yidong <cyd@stupidchicken.com> | ||
| 29 | |||
| 30 | * window.el (quit-window): Renamed from quit-restore-window. Use | ||
| 31 | same arglist as old quit-window. | ||
| 32 | (frame-auto-delete): Doc fix. | ||
| 33 | |||
| 34 | * view.el (view-mode-exit): Use quit-window. | ||
| 35 | |||
| 36 | 2011-08-24 Juri Linkov <juri@jurta.org> | ||
| 37 | |||
| 38 | * isearch.el (isearch-ring-adjust1): Start visiting previous | ||
| 39 | search strings from the index 0 (-1 + 1) instead of 1 (0 + 1). | ||
| 40 | (isearch-repeat, isearch-edit-string): Call `isearch-ring-adjust1' | ||
| 41 | for empty search string (when the last search string is reused | ||
| 42 | automatically) to adjust the isearch ring to the last element and | ||
| 43 | prepare the correct index for further M-p commands (bug#9185). | ||
| 44 | |||
| 45 | 2011-08-24 Kenichi Handa <handa@m17n.org> | ||
| 46 | |||
| 47 | * international/ucs-normalize.el: If decomposition property of | ||
| 48 | CHAR is the default one (i.e. a list of CHAR itself), treat it as | ||
| 49 | nil. | ||
| 50 | (nfd, nfkd): Likewise. | ||
| 51 | |||
| 52 | 2011-08-24 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 53 | |||
| 54 | * mpc.el (mpc--proc-filter): Don't signal mpc-proc-error since signals | ||
| 55 | from process filters aren't reliably transmitted to the surrounding | ||
| 56 | accept-process-output. | ||
| 57 | (mpc-proc-check): New function. | ||
| 58 | (mpc-proc-sync): Use it (bug#8293) | ||
| 59 | |||
| 60 | 2011-08-23 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 61 | |||
| 62 | * emacs-lisp/eieio.el (eieio-defmethod, eieio-defgeneric): | ||
| 63 | Add compatibility functions (bug#9313). | ||
| 64 | |||
| 65 | 2011-08-23 Eli Zaretskii <eliz@gnu.org> | ||
| 66 | |||
| 67 | * cus-start.el (all): Add entry for bidi-paragraph-direction. | ||
| 68 | |||
| 69 | * international/uni-bidi.el: Regenerated. | ||
| 70 | |||
| 71 | 2011-08-23 Kenichi Handa <handa@m17n.org> | ||
| 72 | |||
| 73 | * international/charprop.el: | ||
| 74 | * international/uni-bidi.el: | ||
| 75 | * international/uni-category.el: | ||
| 76 | * international/uni-combining.el: | ||
| 77 | * international/uni-comment.el: | ||
| 78 | * international/uni-decimal.el: | ||
| 79 | * international/uni-decomposition.el: | ||
| 80 | * international/uni-digit.el: | ||
| 81 | * international/uni-lowercase.el: | ||
| 82 | * international/uni-mirrored.el: | ||
| 83 | * international/uni-name.el: | ||
| 84 | * international/uni-numeric.el: | ||
| 85 | * international/uni-old-name.el: | ||
| 86 | * international/uni-titlecase.el: | ||
| 87 | * international/uni-uppercase.el: Regenerate. | ||
| 88 | |||
| 1 | 2011-08-23 Martin Rudalics <rudalics@gmx.at> | 89 | 2011-08-23 Martin Rudalics <rudalics@gmx.at> |
| 2 | 90 | ||
| 3 | * help.el (help-window-setup): Fix message displayed when other | 91 | * help.el (help-window-setup): Fix message displayed when other |
diff --git a/lisp/battery.el b/lisp/battery.el index d7d3045fa58..e0bba96b655 100644 --- a/lisp/battery.el +++ b/lisp/battery.el | |||
| @@ -199,7 +199,7 @@ seconds." | |||
| 199 | 'face | 199 | 'face |
| 200 | (and (<= (car (read-from-string (cdr (assq ?p data)))) | 200 | (and (<= (car (read-from-string (cdr (assq ?p data)))) |
| 201 | battery-load-critical) | 201 | battery-load-critical) |
| 202 | 'font-lock-warning-face) | 202 | 'error) |
| 203 | 'help-echo "Battery status information"))) | 203 | 'help-echo "Battery status information"))) |
| 204 | (force-mode-line-update)) | 204 | (force-mode-line-update)) |
| 205 | 205 | ||
diff --git a/lisp/cus-start.el b/lisp/cus-start.el index 389716b35b9..232c6c3808e 100644 --- a/lisp/cus-start.el +++ b/lisp/cus-start.el | |||
| @@ -118,6 +118,13 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of | |||
| 118 | :standard (not noninteractive) | 118 | :standard (not noninteractive) |
| 119 | :initialize custom-initialize-delay | 119 | :initialize custom-initialize-delay |
| 120 | :set custom-set-minor-mode) | 120 | :set custom-set-minor-mode) |
| 121 | (bidi-paragraph-direction | ||
| 122 | paragraphs | ||
| 123 | (choice | ||
| 124 | (const :tag "Left to Right" left-to-right) | ||
| 125 | (const :tag "Right to Left" right-to-left) | ||
| 126 | (const :tag "Dynamic, according to paragraph text" nil)) | ||
| 127 | "24.1") | ||
| 121 | ;; callint.c | 128 | ;; callint.c |
| 122 | (mark-even-if-inactive editing-basics boolean) | 129 | (mark-even-if-inactive editing-basics boolean) |
| 123 | ;; callproc.c | 130 | ;; callproc.c |
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el index 83c09b6fe0f..f1fe9594fc0 100644 --- a/lisp/emacs-lisp/eieio.el +++ b/lisp/emacs-lisp/eieio.el | |||
| @@ -1312,20 +1312,20 @@ Summary: | |||
| 1312 | (defun eieio--defmethod (method kind argclass code) | 1312 | (defun eieio--defmethod (method kind argclass code) |
| 1313 | "Work part of the `defmethod' macro defining METHOD with ARGS." | 1313 | "Work part of the `defmethod' macro defining METHOD with ARGS." |
| 1314 | (let ((key | 1314 | (let ((key |
| 1315 | ;; find optional keys | 1315 | ;; find optional keys |
| 1316 | (cond ((or (eq ':BEFORE kind) | 1316 | (cond ((or (eq ':BEFORE kind) |
| 1317 | (eq ':before kind)) | 1317 | (eq ':before kind)) |
| 1318 | method-before) | 1318 | method-before) |
| 1319 | ((or (eq ':AFTER kind) | 1319 | ((or (eq ':AFTER kind) |
| 1320 | (eq ':after kind)) | 1320 | (eq ':after kind)) |
| 1321 | method-after) | 1321 | method-after) |
| 1322 | ((or (eq ':PRIMARY kind) | 1322 | ((or (eq ':PRIMARY kind) |
| 1323 | (eq ':primary kind)) | 1323 | (eq ':primary kind)) |
| 1324 | method-primary) | 1324 | method-primary) |
| 1325 | ((or (eq ':STATIC kind) | 1325 | ((or (eq ':STATIC kind) |
| 1326 | (eq ':static kind)) | 1326 | (eq ':static kind)) |
| 1327 | method-static) | 1327 | method-static) |
| 1328 | ;; Primary key | 1328 | ;; Primary key |
| 1329 | (t method-primary)))) | 1329 | (t method-primary)))) |
| 1330 | ;; Make sure there is a generic (when called from defclass). | 1330 | ;; Make sure there is a generic (when called from defclass). |
| 1331 | (eieio--defalias | 1331 | (eieio--defalias |
| @@ -1338,8 +1338,8 @@ Summary: | |||
| 1338 | ;; under the type `primary' which is a non-specific calling of the | 1338 | ;; under the type `primary' which is a non-specific calling of the |
| 1339 | ;; function. | 1339 | ;; function. |
| 1340 | (if argclass | 1340 | (if argclass |
| 1341 | (if (not (class-p argclass)) | 1341 | (if (not (class-p argclass)) |
| 1342 | (error "Unknown class type %s in method parameters" | 1342 | (error "Unknown class type %s in method parameters" |
| 1343 | argclass)) | 1343 | argclass)) |
| 1344 | (if (= key -1) | 1344 | (if (= key -1) |
| 1345 | (signal 'wrong-type-argument (list :static 'non-class-arg))) | 1345 | (signal 'wrong-type-argument (list :static 'non-class-arg))) |
| @@ -2864,6 +2864,106 @@ of `eq'." | |||
| 2864 | ) | 2864 | ) |
| 2865 | 2865 | ||
| 2866 | 2866 | ||
| 2867 | ;;; Obsolete backward compatibility functions. | ||
| 2868 | ;; Needed to run byte-code compiled with the EIEIO of Emacs-23. | ||
| 2869 | |||
| 2870 | (defun eieio-defmethod (method args) | ||
| 2871 | "Obsolete work part of an old version of the `defmethod' macro." | ||
| 2872 | (let ((key nil) (body nil) (firstarg nil) (argfix nil) (argclass nil) loopa) | ||
| 2873 | ;; find optional keys | ||
| 2874 | (setq key | ||
| 2875 | (cond ((or (eq ':BEFORE (car args)) | ||
| 2876 | (eq ':before (car args))) | ||
| 2877 | (setq args (cdr args)) | ||
| 2878 | method-before) | ||
| 2879 | ((or (eq ':AFTER (car args)) | ||
| 2880 | (eq ':after (car args))) | ||
| 2881 | (setq args (cdr args)) | ||
| 2882 | method-after) | ||
| 2883 | ((or (eq ':PRIMARY (car args)) | ||
| 2884 | (eq ':primary (car args))) | ||
| 2885 | (setq args (cdr args)) | ||
| 2886 | method-primary) | ||
| 2887 | ((or (eq ':STATIC (car args)) | ||
| 2888 | (eq ':static (car args))) | ||
| 2889 | (setq args (cdr args)) | ||
| 2890 | method-static) | ||
| 2891 | ;; Primary key | ||
| 2892 | (t method-primary))) | ||
| 2893 | ;; get body, and fix contents of args to be the arguments of the fn. | ||
| 2894 | (setq body (cdr args) | ||
| 2895 | args (car args)) | ||
| 2896 | (setq loopa args) | ||
| 2897 | ;; Create a fixed version of the arguments | ||
| 2898 | (while loopa | ||
| 2899 | (setq argfix (cons (if (listp (car loopa)) (car (car loopa)) (car loopa)) | ||
| 2900 | argfix)) | ||
| 2901 | (setq loopa (cdr loopa))) | ||
| 2902 | ;; make sure there is a generic | ||
| 2903 | (eieio-defgeneric | ||
| 2904 | method | ||
| 2905 | (if (stringp (car body)) | ||
| 2906 | (car body) (format "Generically created method `%s'." method))) | ||
| 2907 | ;; create symbol for property to bind to. If the first arg is of | ||
| 2908 | ;; the form (varname vartype) and `vartype' is a class, then | ||
| 2909 | ;; that class will be the type symbol. If not, then it will fall | ||
| 2910 | ;; under the type `primary' which is a non-specific calling of the | ||
| 2911 | ;; function. | ||
| 2912 | (setq firstarg (car args)) | ||
| 2913 | (if (listp firstarg) | ||
| 2914 | (progn | ||
| 2915 | (setq argclass (nth 1 firstarg)) | ||
| 2916 | (if (not (class-p argclass)) | ||
| 2917 | (error "Unknown class type %s in method parameters" | ||
| 2918 | (nth 1 firstarg)))) | ||
| 2919 | (if (= key -1) | ||
| 2920 | (signal 'wrong-type-argument (list :static 'non-class-arg))) | ||
| 2921 | ;; generics are higher | ||
| 2922 | (setq key (eieio-specialized-key-to-generic-key key))) | ||
| 2923 | ;; Put this lambda into the symbol so we can find it | ||
| 2924 | (if (byte-code-function-p (car-safe body)) | ||
| 2925 | (eieiomt-add method (car-safe body) key argclass) | ||
| 2926 | (eieiomt-add method (append (list 'lambda (reverse argfix)) body) | ||
| 2927 | key argclass)) | ||
| 2928 | ) | ||
| 2929 | |||
| 2930 | (when eieio-optimize-primary-methods-flag | ||
| 2931 | ;; Optimizing step: | ||
| 2932 | ;; | ||
| 2933 | ;; If this method, after this setup, only has primary methods, then | ||
| 2934 | ;; we can setup the generic that way. | ||
| 2935 | (if (generic-primary-only-p method) | ||
| 2936 | ;; If there is only one primary method, then we can go one more | ||
| 2937 | ;; optimization step. | ||
| 2938 | (if (generic-primary-only-one-p method) | ||
| 2939 | (eieio-defgeneric-reset-generic-form-primary-only-one method) | ||
| 2940 | (eieio-defgeneric-reset-generic-form-primary-only method)) | ||
| 2941 | (eieio-defgeneric-reset-generic-form method))) | ||
| 2942 | |||
| 2943 | method) | ||
| 2944 | (make-obsolete 'eieio-defmethod 'eieio--defmethod "24.1") | ||
| 2945 | |||
| 2946 | (defun eieio-defgeneric (method doc-string) | ||
| 2947 | "Obsolete work part of an old version of the `defgeneric' macro." | ||
| 2948 | (if (and (fboundp method) (not (generic-p method)) | ||
| 2949 | (or (byte-code-function-p (symbol-function method)) | ||
| 2950 | (not (eq 'autoload (car (symbol-function method))))) | ||
| 2951 | ) | ||
| 2952 | (error "You cannot create a generic/method over an existing symbol: %s" | ||
| 2953 | method)) | ||
| 2954 | ;; Don't do this over and over. | ||
| 2955 | (unless (fboundp 'method) | ||
| 2956 | ;; This defun tells emacs where the first definition of this | ||
| 2957 | ;; method is defined. | ||
| 2958 | `(defun ,method nil) | ||
| 2959 | ;; Make sure the method tables are installed. | ||
| 2960 | (eieiomt-install method) | ||
| 2961 | ;; Apply the actual body of this function. | ||
| 2962 | (fset method (eieio-defgeneric-form method doc-string)) | ||
| 2963 | ;; Return the method | ||
| 2964 | 'method)) | ||
| 2965 | (make-obsolete 'eieio-defgeneric nil "24.1") | ||
| 2966 | |||
| 2867 | ;;; Interfacing with edebug | 2967 | ;;; Interfacing with edebug |
| 2868 | ;; | 2968 | ;; |
| 2869 | (defun eieio-edebug-prin1-to-string (object &optional noescape) | 2969 | (defun eieio-edebug-prin1-to-string (object &optional noescape) |
diff --git a/lisp/faces.el b/lisp/faces.el index 404bd7b6609..3c4a3330c81 100644 --- a/lisp/faces.el +++ b/lisp/faces.el | |||
| @@ -2435,7 +2435,7 @@ It is used for characters of no fonts too." | |||
| 2435 | 2435 | ||
| 2436 | (defface success | 2436 | (defface success |
| 2437 | '((((class color) (min-colors 16) (background light)) | 2437 | '((((class color) (min-colors 16) (background light)) |
| 2438 | (:foreground "Green3" :weight bold)) | 2438 | (:foreground "ForestGreen" :weight bold)) |
| 2439 | (((class color) (min-colors 88) (background dark)) | 2439 | (((class color) (min-colors 88) (background dark)) |
| 2440 | (:foreground "Green1" :weight bold)) | 2440 | (:foreground "Green1" :weight bold)) |
| 2441 | (((class color) (min-colors 16) (background dark)) | 2441 | (((class color) (min-colors 16) (background dark)) |
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 725192399ff..5a86508e144 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el | |||
| @@ -356,12 +356,12 @@ directory, like `default-directory'." | |||
| 356 | :type 'hook | 356 | :type 'hook |
| 357 | :group 'ibuffer) | 357 | :group 'ibuffer) |
| 358 | 358 | ||
| 359 | (defcustom ibuffer-marked-face 'font-lock-warning-face | 359 | (defcustom ibuffer-marked-face 'warning |
| 360 | "Face used for displaying marked buffers." | 360 | "Face used for displaying marked buffers." |
| 361 | :type 'face | 361 | :type 'face |
| 362 | :group 'ibuffer) | 362 | :group 'ibuffer) |
| 363 | 363 | ||
| 364 | (defcustom ibuffer-deletion-face 'font-lock-type-face | 364 | (defcustom ibuffer-deletion-face 'error |
| 365 | "Face used for displaying buffers marked for deletion." | 365 | "Face used for displaying buffers marked for deletion." |
| 366 | :type 'face | 366 | :type 'face |
| 367 | :group 'ibuffer) | 367 | :group 'ibuffer) |
diff --git a/lisp/international/charprop.el b/lisp/international/charprop.el index 919666010b1..2424e87ae44 100644 --- a/lisp/international/charprop.el +++ b/lisp/international/charprop.el | |||
| @@ -29,15 +29,18 @@ one of these symbols representing compatibility formatting tag: | |||
| 29 | ;; FILE: uni-decimal.el | 29 | ;; FILE: uni-decimal.el |
| 30 | (define-char-code-property 'decimal-digit-value "uni-decimal.el" | 30 | (define-char-code-property 'decimal-digit-value "uni-decimal.el" |
| 31 | "Unicode numeric value (decimal digit). | 31 | "Unicode numeric value (decimal digit). |
| 32 | Property value is an integer.") | 32 | Property value is an integer 0..9, or nil. |
| 33 | The value nil stands for NaN \"Numeric_Value\".") | ||
| 33 | ;; FILE: uni-digit.el | 34 | ;; FILE: uni-digit.el |
| 34 | (define-char-code-property 'digit-value "uni-digit.el" | 35 | (define-char-code-property 'digit-value "uni-digit.el" |
| 35 | "Unicode numeric value (digit). | 36 | "Unicode numeric value (digit). |
| 36 | Property value is an integer.") | 37 | Property value is an integer 0..9, or nil. |
| 38 | The value nil stands for NaN \"Numeric_Value\".") | ||
| 37 | ;; FILE: uni-numeric.el | 39 | ;; FILE: uni-numeric.el |
| 38 | (define-char-code-property 'numeric-value "uni-numeric.el" | 40 | (define-char-code-property 'numeric-value "uni-numeric.el" |
| 39 | "Unicode numeric value (numeric). | 41 | "Unicode numeric value (numeric). |
| 40 | Property value is an integer or a floating point.") | 42 | Property value is an integer, a floating point, or nil. |
| 43 | The value nil stands for NaN \"Numeric_Value\".") | ||
| 41 | ;; FILE: uni-mirrored.el | 44 | ;; FILE: uni-mirrored.el |
| 42 | (define-char-code-property 'mirrored "uni-mirrored.el" | 45 | (define-char-code-property 'mirrored "uni-mirrored.el" |
| 43 | "Unicode bidi mirrored flag. | 46 | "Unicode bidi mirrored flag. |
| @@ -53,20 +56,27 @@ Property value is a string.") | |||
| 53 | ;; FILE: uni-uppercase.el | 56 | ;; FILE: uni-uppercase.el |
| 54 | (define-char-code-property 'uppercase "uni-uppercase.el" | 57 | (define-char-code-property 'uppercase "uni-uppercase.el" |
| 55 | "Unicode simple uppercase mapping. | 58 | "Unicode simple uppercase mapping. |
| 56 | Property value is a character.") | 59 | Property value is a character or nil. |
| 60 | The value nil means that the actual property value of a character | ||
| 61 | is the character itself.") | ||
| 57 | ;; FILE: uni-lowercase.el | 62 | ;; FILE: uni-lowercase.el |
| 58 | (define-char-code-property 'lowercase "uni-lowercase.el" | 63 | (define-char-code-property 'lowercase "uni-lowercase.el" |
| 59 | "Unicode simple lowercase mapping. | 64 | "Unicode simple lowercase mapping. |
| 60 | Property value is a character.") | 65 | Property value is a character or nil. |
| 66 | The value nil means that the actual property value of a character | ||
| 67 | is the character itself.") | ||
| 61 | ;; FILE: uni-titlecase.el | 68 | ;; FILE: uni-titlecase.el |
| 62 | (define-char-code-property 'titlecase "uni-titlecase.el" | 69 | (define-char-code-property 'titlecase "uni-titlecase.el" |
| 63 | "Unicode simple titlecase mapping. | 70 | "Unicode simple titlecase mapping. |
| 64 | Property value is a character.") | 71 | Property value is a character or nil. |
| 72 | The value nil means that the actual property value of a character | ||
| 73 | is the character itself.") | ||
| 65 | ;; FILE: uni-mirrored.el | 74 | ;; FILE: uni-mirrored.el |
| 66 | (define-char-code-property 'mirroring "uni-mirrored.el" | 75 | (define-char-code-property 'mirroring "uni-mirrored.el" |
| 67 | "Unicode bidi-mirroring characters. | 76 | "Unicode bidi-mirroring characters. |
| 68 | Property value is a character that has the corresponding mirroring image, | 77 | Property value is a character that has the corresponding mirroring image or nil. |
| 69 | or nil for non-mirrored character.") | 78 | The value nil means that the actual property value of a character |
| 79 | is the character itself.") | ||
| 70 | ;; Local Variables: | 80 | ;; Local Variables: |
| 71 | ;; coding: utf-8 | 81 | ;; coding: utf-8 |
| 72 | ;; no-byte-compile: t | 82 | ;; no-byte-compile: t |
diff --git a/lisp/international/ucs-normalize.el b/lisp/international/ucs-normalize.el index f83e0f7588f..df05b355b46 100644 --- a/lisp/international/ucs-normalize.el +++ b/lisp/international/ucs-normalize.el | |||
| @@ -139,14 +139,17 @@ | |||
| 139 | (defun nfd (char) | 139 | (defun nfd (char) |
| 140 | (let ((decomposition | 140 | (let ((decomposition |
| 141 | (get-char-code-property char 'decomposition))) | 141 | (get-char-code-property char 'decomposition))) |
| 142 | (if (and decomposition (numberp (car decomposition))) | 142 | (if (and decomposition (numberp (car decomposition)) |
| 143 | (or (> (length decomposition) 1) | ||
| 144 | (/= (car decomposition) char))) | ||
| 143 | decomposition))) | 145 | decomposition))) |
| 144 | 146 | ||
| 145 | (defun nfkd (char) | 147 | (defun nfkd (char) |
| 146 | (let ((decomposition | 148 | (let ((decomposition |
| 147 | (get-char-code-property char 'decomposition))) | 149 | (get-char-code-property char 'decomposition))) |
| 148 | (if (symbolp (car decomposition)) (cdr decomposition) | 150 | (if (symbolp (car decomposition)) (cdr decomposition) |
| 149 | decomposition))) | 151 | (if (or (> (length decomposition) 1) |
| 152 | (/= (car decomposition) char)) decomposition)))) | ||
| 150 | 153 | ||
| 151 | (defun hfs-nfd (char) | 154 | (defun hfs-nfd (char) |
| 152 | (when (or (and (>= char 0) (< char #x2000)) | 155 | (when (or (and (>= char 0) (< char #x2000)) |
| @@ -180,6 +183,9 @@ | |||
| 180 | (setq ccc (ucs-normalize-ccc char)) | 183 | (setq ccc (ucs-normalize-ccc char)) |
| 181 | (setq decomposition (get-char-code-property | 184 | (setq decomposition (get-char-code-property |
| 182 | char 'decomposition)) | 185 | char 'decomposition)) |
| 186 | (if (and (= (length decomposition) 1) | ||
| 187 | (= (car decomposition) char)) | ||
| 188 | (setq decomposition nil)) | ||
| 183 | (if (and ccc (/= 0 ccc)) (add-to-list 'combining-chars char)) | 189 | (if (and ccc (/= 0 ccc)) (add-to-list 'combining-chars char)) |
| 184 | (if (and (numberp (car decomposition)) | 190 | (if (and (numberp (car decomposition)) |
| 185 | (/= (ucs-normalize-ccc (car decomposition)) | 191 | (/= (ucs-normalize-ccc (car decomposition)) |
diff --git a/lisp/international/uni-bidi.el b/lisp/international/uni-bidi.el index e7682c6d8ff..4d86fc821fa 100644 --- a/lisp/international/uni-bidi.el +++ b/lisp/international/uni-bidi.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-category.el b/lisp/international/uni-category.el index a4455decc52..94b7c18b6e2 100644 --- a/lisp/international/uni-category.el +++ b/lisp/international/uni-category.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-combining.el b/lisp/international/uni-combining.el index 227b9d0af79..1437ff9acbd 100644 --- a/lisp/international/uni-combining.el +++ b/lisp/international/uni-combining.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-comment.el b/lisp/international/uni-comment.el index c9743064bd4..21ccfe3ffe7 100644 --- a/lisp/international/uni-comment.el +++ b/lisp/international/uni-comment.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-decimal.el b/lisp/international/uni-decimal.el index 2c424ffb5de..096257add20 100644 --- a/lisp/international/uni-decimal.el +++ b/lisp/international/uni-decimal.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-decomposition.el b/lisp/international/uni-decomposition.el index b0bf07bbe85..b9660cdab0a 100644 --- a/lisp/international/uni-decomposition.el +++ b/lisp/international/uni-decomposition.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-digit.el b/lisp/international/uni-digit.el index fc52fd8c28c..efb78b0e43d 100644 --- a/lisp/international/uni-digit.el +++ b/lisp/international/uni-digit.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-lowercase.el b/lisp/international/uni-lowercase.el index 41890018204..7afd9503cb3 100644 --- a/lisp/international/uni-lowercase.el +++ b/lisp/international/uni-lowercase.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-mirrored.el b/lisp/international/uni-mirrored.el index 006cf575591..e650166c24c 100644 --- a/lisp/international/uni-mirrored.el +++ b/lisp/international/uni-mirrored.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-name.el b/lisp/international/uni-name.el index 7fac18b278d..8b681631067 100644 --- a/lisp/international/uni-name.el +++ b/lisp/international/uni-name.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-numeric.el b/lisp/international/uni-numeric.el index d16e8c00870..a1865f1fb23 100644 --- a/lisp/international/uni-numeric.el +++ b/lisp/international/uni-numeric.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-old-name.el b/lisp/international/uni-old-name.el index 4e704e5cdd0..de2d67b9450 100644 --- a/lisp/international/uni-old-name.el +++ b/lisp/international/uni-old-name.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-titlecase.el b/lisp/international/uni-titlecase.el index b8098c81876..517edb20445 100644 --- a/lisp/international/uni-titlecase.el +++ b/lisp/international/uni-titlecase.el | |||
| Binary files differ | |||
diff --git a/lisp/international/uni-uppercase.el b/lisp/international/uni-uppercase.el index 899276eb725..fcb22d72470 100644 --- a/lisp/international/uni-uppercase.el +++ b/lisp/international/uni-uppercase.el | |||
| Binary files differ | |||
diff --git a/lisp/isearch.el b/lisp/isearch.el index 1942641fae9..7fcc31f188f 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el | |||
| @@ -1191,19 +1191,17 @@ If first char entered is \\[isearch-yank-word-or-char], then do word search inst | |||
| 1191 | isearch-word isearch-new-word)) | 1191 | isearch-word isearch-new-word)) |
| 1192 | 1192 | ||
| 1193 | ;; Empty isearch-string means use default. | 1193 | ;; Empty isearch-string means use default. |
| 1194 | (if (= 0 (length isearch-string)) | 1194 | (when (= 0 (length isearch-string)) |
| 1195 | (setq isearch-string (or (car (if isearch-regexp | 1195 | (setq isearch-string (or (car (if isearch-regexp |
| 1196 | regexp-search-ring | 1196 | regexp-search-ring |
| 1197 | search-ring)) | 1197 | search-ring)) |
| 1198 | "") | 1198 | "") |
| 1199 | 1199 | ||
| 1200 | isearch-message | 1200 | isearch-message |
| 1201 | (mapconcat 'isearch-text-char-description | 1201 | (mapconcat 'isearch-text-char-description |
| 1202 | isearch-string "")) | 1202 | isearch-string "")) |
| 1203 | ;; This used to set the last search string, | 1203 | ;; After taking the last element, adjust ring to previous one. |
| 1204 | ;; but I think it is not right to do that here. | 1204 | (isearch-ring-adjust1 nil))) |
| 1205 | ;; Only the string actually used should be saved. | ||
| 1206 | )) | ||
| 1207 | 1205 | ||
| 1208 | ;; This used to push the state as of before this C-s, but it adds | 1206 | ;; This used to push the state as of before this C-s, but it adds |
| 1209 | ;; an inconsistent state where part of variables are from the | 1207 | ;; an inconsistent state where part of variables are from the |
| @@ -1290,7 +1288,9 @@ Use `isearch-exit' to quit without signaling." | |||
| 1290 | isearch-message | 1288 | isearch-message |
| 1291 | (mapconcat 'isearch-text-char-description | 1289 | (mapconcat 'isearch-text-char-description |
| 1292 | isearch-string "") | 1290 | isearch-string "") |
| 1293 | isearch-case-fold-search isearch-last-case-fold-search)) | 1291 | isearch-case-fold-search isearch-last-case-fold-search) |
| 1292 | ;; After taking the last element, adjust ring to previous one. | ||
| 1293 | (isearch-ring-adjust1 nil)) | ||
| 1294 | ;; If already have what to search for, repeat it. | 1294 | ;; If already have what to search for, repeat it. |
| 1295 | (or isearch-success | 1295 | (or isearch-success |
| 1296 | (progn | 1296 | (progn |
| @@ -2071,7 +2071,7 @@ Isearch mode." | |||
| 2071 | () | 2071 | () |
| 2072 | (set yank-pointer-name | 2072 | (set yank-pointer-name |
| 2073 | (setq yank-pointer | 2073 | (setq yank-pointer |
| 2074 | (mod (+ (or yank-pointer 0) | 2074 | (mod (+ (or yank-pointer (if advance 0 -1)) |
| 2075 | (if advance -1 1)) | 2075 | (if advance -1 1)) |
| 2076 | length))) | 2076 | length))) |
| 2077 | (setq isearch-string (nth yank-pointer ring) | 2077 | (setq isearch-string (nth yank-pointer ring) |
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el index 40fbb072594..69c49c471c0 100644 --- a/lisp/mail/smtpmail.el +++ b/lisp/mail/smtpmail.el | |||
| @@ -88,6 +88,7 @@ The default value would be \"smtp\" or 25." | |||
| 88 | 88 | ||
| 89 | (defcustom smtpmail-smtp-user nil | 89 | (defcustom smtpmail-smtp-user nil |
| 90 | "User name to use when looking up credentials." | 90 | "User name to use when looking up credentials." |
| 91 | :version "24.1" | ||
| 91 | :type '(choice (const nil) string) | 92 | :type '(choice (const nil) string) |
| 92 | :group 'smtpmail) | 93 | :group 'smtpmail) |
| 93 | 94 | ||
| @@ -677,7 +678,7 @@ The list is in preference order.") | |||
| 677 | (throw 'done (format "No greeting: %s" greeting))) | 678 | (throw 'done (format "No greeting: %s" greeting))) |
| 678 | (when (>= code 400) | 679 | (when (>= code 400) |
| 679 | (throw 'done (format "Connection not allowed: %s" greeting)))) | 680 | (throw 'done (format "Connection not allowed: %s" greeting)))) |
| 680 | 681 | ||
| 681 | (with-current-buffer process-buffer | 682 | (with-current-buffer process-buffer |
| 682 | (set-buffer-process-coding-system 'raw-text-unix 'raw-text-unix) | 683 | (set-buffer-process-coding-system 'raw-text-unix 'raw-text-unix) |
| 683 | (make-local-variable 'smtpmail-read-point) | 684 | (make-local-variable 'smtpmail-read-point) |
| @@ -730,7 +731,7 @@ The list is in preference order.") | |||
| 730 | 731 | ||
| 731 | (when (member 'xusr supported-extensions) | 732 | (when (member 'xusr supported-extensions) |
| 732 | (smtpmail-command-or-throw process (format "XUSR"))) | 733 | (smtpmail-command-or-throw process (format "XUSR"))) |
| 733 | 734 | ||
| 734 | ;; MAIL FROM:<sender> | 735 | ;; MAIL FROM:<sender> |
| 735 | (let ((size-part | 736 | (let ((size-part |
| 736 | (if (or (member 'size supported-extensions) | 737 | (if (or (member 'size supported-extensions) |
| @@ -769,7 +770,7 @@ The list is in preference order.") | |||
| 769 | ) | 770 | ) |
| 770 | ((and auth-mechanisms | 771 | ((and auth-mechanisms |
| 771 | (not ask-for-password) | 772 | (not ask-for-password) |
| 772 | (= (car result) 530)) | 773 | (eq (car result) 530)) |
| 773 | ;; We got a "530 auth required", so we close and try | 774 | ;; We got a "530 auth required", so we close and try |
| 774 | ;; again, this time asking the user for a password. | 775 | ;; again, this time asking the user for a password. |
| 775 | (smtpmail-send-command process "QUIT") | 776 | (smtpmail-send-command process "QUIT") |
| @@ -796,6 +797,7 @@ The list is in preference order.") | |||
| 796 | nil) | 797 | nil) |
| 797 | ((and auth-mechanisms | 798 | ((and auth-mechanisms |
| 798 | (not ask-for-password) | 799 | (not ask-for-password) |
| 800 | (integerp (car result)) | ||
| 799 | (>= (car result) 550) | 801 | (>= (car result) 550) |
| 800 | (<= (car result) 554)) | 802 | (<= (car result) 554)) |
| 801 | ;; We got a "550 relay not permitted" (or the like), | 803 | ;; We got a "550 relay not permitted" (or the like), |
diff --git a/lisp/mpc.el b/lisp/mpc.el index 5319ea43898..932fb5926fd 100644 --- a/lisp/mpc.el +++ b/lisp/mpc.el | |||
| @@ -246,11 +246,12 @@ and HOST defaults to localhost." | |||
| 246 | (process-put proc 'ready t) | 246 | (process-put proc 'ready t) |
| 247 | (unless (eq (match-end 0) (point-max)) | 247 | (unless (eq (match-end 0) (point-max)) |
| 248 | (error "Unexpected trailing text")) | 248 | (error "Unexpected trailing text")) |
| 249 | (let ((error (match-string 1))) | 249 | (let ((error-text (match-string 1))) |
| 250 | (delete-region (point) (point-max)) | 250 | (delete-region (point) (point-max)) |
| 251 | (let ((callback (process-get proc 'callback))) | 251 | (let ((callback (process-get proc 'callback))) |
| 252 | (process-put proc 'callback nil) | 252 | (process-put proc 'callback nil) |
| 253 | (if error (signal 'mpc-proc-error error)) | 253 | (if error-text |
| 254 | (process-put proc 'mpc-proc-error error-text)) | ||
| 254 | (funcall callback))))))))) | 255 | (funcall callback))))))))) |
| 255 | 256 | ||
| 256 | (defun mpc--proc-connect (host) | 257 | (defun mpc--proc-connect (host) |
| @@ -314,19 +315,23 @@ and HOST defaults to localhost." | |||
| 314 | mpc-proc) | 315 | mpc-proc) |
| 315 | (setq mpc-proc (mpc--proc-connect mpc-host)))) | 316 | (setq mpc-proc (mpc--proc-connect mpc-host)))) |
| 316 | 317 | ||
| 318 | (defun mpc-proc-check (proc) | ||
| 319 | (let ((error-text (process-get proc 'mpc-proc-error))) | ||
| 320 | (when error-text | ||
| 321 | (process-put proc 'mpc-proc-error nil) | ||
| 322 | (signal 'mpc-proc-error error-text)))) | ||
| 323 | |||
| 317 | (defun mpc-proc-sync (&optional proc) | 324 | (defun mpc-proc-sync (&optional proc) |
| 318 | "Wait for MPC process until it is idle again. | 325 | "Wait for MPC process until it is idle again. |
| 319 | Return the buffer in which the process is/was running." | 326 | Return the buffer in which the process is/was running." |
| 320 | (unless proc (setq proc (mpc-proc))) | 327 | (unless proc (setq proc (mpc-proc))) |
| 321 | (unwind-protect | 328 | (unwind-protect |
| 322 | (condition-case err | 329 | (progn |
| 323 | (progn | 330 | (while (and (not (process-get proc 'ready)) |
| 324 | (while (and (not (process-get proc 'ready)) | 331 | (accept-process-output proc))) |
| 325 | (accept-process-output proc))) | 332 | (mpc-proc-check proc) |
| 326 | (if (process-get proc 'ready) (process-buffer proc) | 333 | (if (process-get proc 'ready) (process-buffer proc) |
| 327 | ;; (delete-process proc) | 334 | (error "No response from MPD"))) |
| 328 | (error "No response from MPD"))) | ||
| 329 | (error (message "MPC: %s" err) (signal (car err) (cdr err)))) | ||
| 330 | (unless (process-get proc 'ready) | 335 | (unless (process-get proc 'ready) |
| 331 | ;; (debug) | 336 | ;; (debug) |
| 332 | (message "Killing hung process") | 337 | (message "Killing hung process") |
| @@ -358,13 +363,13 @@ which will be concatenated with proper quoting before passing them to MPD." | |||
| 358 | "\n"))) | 363 | "\n"))) |
| 359 | (if callback | 364 | (if callback |
| 360 | ;; (let ((buf (current-buffer))) | 365 | ;; (let ((buf (current-buffer))) |
| 361 | (process-put proc 'callback | 366 | (process-put proc 'callback |
| 362 | callback | 367 | callback |
| 363 | ;; (lambda () | 368 | ;; (lambda () |
| 364 | ;; (funcall callback | 369 | ;; (funcall callback |
| 365 | ;; (prog1 (current-buffer) | 370 | ;; (prog1 (current-buffer) |
| 366 | ;; (set-buffer buf))))) | 371 | ;; (set-buffer buf))))) |
| 367 | ) | 372 | ) |
| 368 | ;; If `callback' is nil, we're executing synchronously. | 373 | ;; If `callback' is nil, we're executing synchronously. |
| 369 | (process-put proc 'callback 'ignore) | 374 | (process-put proc 'callback 'ignore) |
| 370 | ;; This returns the process's buffer. | 375 | ;; This returns the process's buffer. |
diff --git a/lisp/proced.el b/lisp/proced.el index 94ea579ebd8..e4987bd926c 100644 --- a/lisp/proced.el +++ b/lisp/proced.el | |||
| @@ -395,7 +395,7 @@ It is a list of lists (KEY PREDICATE REVERSE).") | |||
| 395 | :group 'proced-faces) | 395 | :group 'proced-faces) |
| 396 | 396 | ||
| 397 | (defface proced-marked | 397 | (defface proced-marked |
| 398 | '((t (:inherit font-lock-warning-face))) | 398 | '((t (:inherit error))) |
| 399 | "Face used for marked processes." | 399 | "Face used for marked processes." |
| 400 | :group 'proced-faces) | 400 | :group 'proced-faces) |
| 401 | 401 | ||
diff --git a/lisp/view.el b/lisp/view.el index 21479a70a72..be011d217fc 100644 --- a/lisp/view.el +++ b/lisp/view.el | |||
| @@ -576,9 +576,9 @@ current buffer. " | |||
| 576 | (cond | 576 | (cond |
| 577 | ((or all-windows view-exits-all-viewing-windows) | 577 | ((or all-windows view-exits-all-viewing-windows) |
| 578 | (dolist (window (get-buffer-window-list)) | 578 | (dolist (window (get-buffer-window-list)) |
| 579 | (quit-restore-window window))) | 579 | (quit-window nil window))) |
| 580 | ((eq (window-buffer) (current-buffer)) | 580 | ((eq (window-buffer) (current-buffer)) |
| 581 | (quit-restore-window))) | 581 | (quit-window))) |
| 582 | 582 | ||
| 583 | (when exit-action | 583 | (when exit-action |
| 584 | (funcall exit-action buffer)) | 584 | (funcall exit-action buffer)) |
diff --git a/lisp/window.el b/lisp/window.el index 75fa0b46a1c..e68af18ab8e 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -2272,7 +2272,7 @@ another frame still exists. | |||
| 2272 | 2272 | ||
| 2273 | Functions quitting a window and consequently affected by this | 2273 | Functions quitting a window and consequently affected by this |
| 2274 | variable are `switch-to-prev-buffer', `delete-windows-on', | 2274 | variable are `switch-to-prev-buffer', `delete-windows-on', |
| 2275 | `replace-buffer-in-windows' and `quit-restore-window'." | 2275 | `replace-buffer-in-windows' and `quit-window'." |
| 2276 | :type '(choice | 2276 | :type '(choice |
| 2277 | (const :tag "Never" nil) | 2277 | (const :tag "Never" nil) |
| 2278 | (const :tag "Automatic" automatic) | 2278 | (const :tag "Automatic" automatic) |
| @@ -2795,7 +2795,7 @@ displayed there." | |||
| 2795 | (let* ((buffer (window-normalize-buffer buffer-or-name))) | 2795 | (let* ((buffer (window-normalize-buffer buffer-or-name))) |
| 2796 | ;; If `buffer-or-name' is not on the selected frame we unrecord it | 2796 | ;; If `buffer-or-name' is not on the selected frame we unrecord it |
| 2797 | ;; although it's not "here" (call it a feature). | 2797 | ;; although it's not "here" (call it a feature). |
| 2798 | (unrecord-buffer buffer) | 2798 | (bury-buffer-internal buffer) |
| 2799 | ;; Handle case where `buffer-or-name' is nil and the current buffer | 2799 | ;; Handle case where `buffer-or-name' is nil and the current buffer |
| 2800 | ;; is shown in the selected window. | 2800 | ;; is shown in the selected window. |
| 2801 | (cond | 2801 | (cond |
| @@ -2907,21 +2907,17 @@ all window-local buffer lists." | |||
| 2907 | ;; Unrecord BUFFER in WINDOW. | 2907 | ;; Unrecord BUFFER in WINDOW. |
| 2908 | (unrecord-window-buffer window buffer))))) | 2908 | (unrecord-window-buffer window buffer))))) |
| 2909 | 2909 | ||
| 2910 | (defun quit-restore-window (&optional window kill) | 2910 | (defun quit-window (&optional kill window) |
| 2911 | "Quit WINDOW in some way. | 2911 | "Quit WINDOW and bury its buffer. |
| 2912 | WINDOW must be a live window and defaults to the selected window. | 2912 | WINDOW defaults to the selected window. |
| 2913 | Return nil. | 2913 | With a prefix argument, kill the buffer instead. |
| 2914 | 2914 | ||
| 2915 | According to information stored in WINDOW's `quit-restore' window | 2915 | According to information stored in WINDOW's `quit-restore' window |
| 2916 | parameter either \(1) delete WINDOW and its frame, \(2) delete | 2916 | parameter either \(1) delete WINDOW and its frame, \(2) delete |
| 2917 | WINDOW, \(3) restore the buffer previously displayed in WINDOW, | 2917 | WINDOW, \(3) restore the buffer previously displayed in WINDOW, |
| 2918 | or \(4) make WINDOW display some other buffer than the present | 2918 | or \(4) make WINDOW display some other buffer than the present |
| 2919 | one. If non-nil, reset `quit-restore' parameter to nil. | 2919 | one. If non-nil, reset `quit-restore' parameter to nil." |
| 2920 | 2920 | (interactive "P") | |
| 2921 | Optional argument KILL non-nil means in addition kill WINDOW's | ||
| 2922 | buffer. If KILL is nil, put WINDOW's buffer at the end of the | ||
| 2923 | buffer list. Interactively, KILL is the prefix argument." | ||
| 2924 | (interactive "i\nP") | ||
| 2925 | (setq window (window-normalize-live-window window)) | 2921 | (setq window (window-normalize-live-window window)) |
| 2926 | (let ((buffer (window-buffer window)) | 2922 | (let ((buffer (window-buffer window)) |
| 2927 | (quit-restore (window-parameter window 'quit-restore)) | 2923 | (quit-restore (window-parameter window 'quit-restore)) |
| @@ -2932,12 +2928,9 @@ buffer list. Interactively, KILL is the prefix argument." | |||
| 2932 | (eq (window-buffer window) (nth 1 quit-restore))) | 2928 | (eq (window-buffer window) (nth 1 quit-restore))) |
| 2933 | (window-dedicated-p window)) | 2929 | (window-dedicated-p window)) |
| 2934 | (setq deletable (window-deletable-p window))) | 2930 | (setq deletable (window-deletable-p window))) |
| 2935 | ;; WINDOW can be deleted. | 2931 | ;; Check if WINDOW's frame can be deleted. |
| 2936 | (unrecord-buffer buffer) | ||
| 2937 | (if (eq deletable 'frame) | 2932 | (if (eq deletable 'frame) |
| 2938 | ;; WINDOW's frame can be deleted. | ||
| 2939 | (delete-frame (window-frame window)) | 2933 | (delete-frame (window-frame window)) |
| 2940 | ;; Just delete WINDOW. | ||
| 2941 | (delete-window window)) | 2934 | (delete-window window)) |
| 2942 | ;; If the previously selected window is still alive, select it. | 2935 | ;; If the previously selected window is still alive, select it. |
| 2943 | (when (window-live-p (nth 2 quit-restore)) | 2936 | (when (window-live-p (nth 2 quit-restore)) |
| @@ -2948,17 +2941,17 @@ buffer list. Interactively, KILL is the prefix argument." | |||
| 2948 | ;; in the first place. | 2941 | ;; in the first place. |
| 2949 | (eq (window-buffer window) (nth 3 quit-restore))) | 2942 | (eq (window-buffer window) (nth 3 quit-restore))) |
| 2950 | (setq resize (with-current-buffer buffer temp-buffer-resize-mode)) | 2943 | (setq resize (with-current-buffer buffer temp-buffer-resize-mode)) |
| 2951 | ;; Unrecord buffer. | ||
| 2952 | (unrecord-buffer buffer) | ||
| 2953 | (unrecord-window-buffer window buffer) | 2944 | (unrecord-window-buffer window buffer) |
| 2954 | ;; Display buffer stored in the quit-restore parameter. | 2945 | ;; Display buffer stored in the quit-restore parameter. |
| 2955 | (set-window-dedicated-p window nil) | 2946 | (set-window-dedicated-p window nil) |
| 2956 | (set-window-buffer window (nth 0 quit-restore)) | 2947 | (set-window-buffer window (nth 0 quit-restore)) |
| 2957 | (set-window-start window (nth 1 quit-restore)) | 2948 | (set-window-start window (nth 1 quit-restore)) |
| 2958 | (set-window-point window (nth 2 quit-restore)) | 2949 | (set-window-point window (nth 2 quit-restore)) |
| 2959 | (when (and resize (/= (nth 4 quit-restore) (window-total-size window))) | 2950 | (and resize |
| 2960 | (window-resize | 2951 | (/= (nth 4 quit-restore) (window-total-size window)) |
| 2961 | window (- (nth 4 quit-restore) (window-total-size window)))) | 2952 | (window-resize window |
| 2953 | (- (nth 4 quit-restore) | ||
| 2954 | (window-total-size window)))) | ||
| 2962 | ;; Reset the quit-restore parameter. | 2955 | ;; Reset the quit-restore parameter. |
| 2963 | (set-window-parameter window 'quit-restore nil) | 2956 | (set-window-parameter window 'quit-restore nil) |
| 2964 | (when (window-live-p (nth 5 quit-restore)) | 2957 | (when (window-live-p (nth 5 quit-restore)) |
| @@ -2967,12 +2960,12 @@ buffer list. Interactively, KILL is the prefix argument." | |||
| 2967 | ;; Otherwise, show another buffer in WINDOW and reset the | 2960 | ;; Otherwise, show another buffer in WINDOW and reset the |
| 2968 | ;; quit-restore parameter. | 2961 | ;; quit-restore parameter. |
| 2969 | (set-window-parameter window 'quit-restore nil) | 2962 | (set-window-parameter window 'quit-restore nil) |
| 2970 | (unrecord-buffer buffer) | ||
| 2971 | (switch-to-prev-buffer window 'bury-or-kill))) | 2963 | (switch-to-prev-buffer window 'bury-or-kill))) |
| 2972 | 2964 | ||
| 2973 | ;; Kill WINDOW's old-buffer if requested | 2965 | ;; Kill WINDOW's old-buffer if requested |
| 2974 | (when kill (kill-buffer buffer)) | 2966 | (if kill |
| 2975 | nil)) | 2967 | (kill-buffer buffer) |
| 2968 | (bury-buffer-internal buffer)))) | ||
| 2976 | 2969 | ||
| 2977 | ;;; Splitting windows. | 2970 | ;;; Splitting windows. |
| 2978 | (defsubst window-split-min-size (&optional horizontal) | 2971 | (defsubst window-split-min-size (&optional horizontal) |
| @@ -7045,39 +7038,6 @@ Return non-nil if the window was shrunk, nil otherwise." | |||
| 7045 | (with-current-buffer buffer-to-kill | 7038 | (with-current-buffer buffer-to-kill |
| 7046 | (remove-hook 'kill-buffer-hook delete-window-hook t)))))) | 7039 | (remove-hook 'kill-buffer-hook delete-window-hook t)))))) |
| 7047 | 7040 | ||
| 7048 | (defun quit-window (&optional kill window) | ||
| 7049 | "Quit WINDOW and bury its buffer. | ||
| 7050 | With a prefix argument, kill the buffer instead. WINDOW defaults | ||
| 7051 | to the selected window. | ||
| 7052 | |||
| 7053 | If WINDOW is non-nil, dedicated, or a minibuffer window, delete | ||
| 7054 | it and, if it's alone on its frame, its frame too. Otherwise, or | ||
| 7055 | if deleting WINDOW fails in any of the preceding cases, display | ||
| 7056 | another buffer in WINDOW using `switch-to-buffer'. | ||
| 7057 | |||
| 7058 | Optional argument KILL non-nil means kill WINDOW's buffer. | ||
| 7059 | Otherwise, bury WINDOW's buffer, see `bury-buffer'." | ||
| 7060 | (interactive "P") | ||
| 7061 | (let ((buffer (window-buffer window))) | ||
| 7062 | (if (or window | ||
| 7063 | (window-minibuffer-p window) | ||
| 7064 | (window-dedicated-p window)) | ||
| 7065 | ;; WINDOW is either non-nil, a minibuffer window, or dedicated; | ||
| 7066 | ;; try to delete it. | ||
| 7067 | (let* ((window (or window (selected-window))) | ||
| 7068 | (frame (window-frame window))) | ||
| 7069 | (if (frame-root-window-p window) | ||
| 7070 | ;; WINDOW is alone on its frame. | ||
| 7071 | (delete-frame frame) | ||
| 7072 | ;; There are other windows on its frame, delete WINDOW. | ||
| 7073 | (delete-window window))) | ||
| 7074 | ;; Otherwise, switch to another buffer in the selected window. | ||
| 7075 | (switch-to-buffer nil)) | ||
| 7076 | |||
| 7077 | ;; Deal with the buffer. | ||
| 7078 | (if kill | ||
| 7079 | (kill-buffer buffer) | ||
| 7080 | (bury-buffer buffer)))) | ||
| 7081 | 7041 | ||
| 7082 | (defvar recenter-last-op nil | 7042 | (defvar recenter-last-op nil |
| 7083 | "Indicates the last recenter operation performed. | 7043 | "Indicates the last recenter operation performed. |
diff --git a/src/ChangeLog b/src/ChangeLog index 1b1a8f67e43..431a515def5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,45 @@ | |||
| 1 | 2011-08-25 Chong Yidong <cyd@stupidchicken.com> | ||
| 2 | |||
| 3 | * buffer.c (Fbury_buffer_internal): Rename from Funrecord_buffer. | ||
| 4 | Change return value to nil. | ||
| 5 | (Frecord_buffer): Delete unused function. | ||
| 6 | |||
| 7 | 2011-08-24 Eli Zaretskii <eliz@gnu.org> | ||
| 8 | |||
| 9 | * xdisp.c (Fcurrent_bidi_paragraph_direction): For unibyte | ||
| 10 | buffers, return left-to-right. | ||
| 11 | (set_cursor_from_row): Consider candidate row a win if its glyph | ||
| 12 | represents a newline and point is on that newline. Fixes cursor | ||
| 13 | positioning on the newline at EOL of R2L text within L2R | ||
| 14 | paragraph, and vice versa. | ||
| 15 | (try_cursor_movement): Check continued rows, in addition to | ||
| 16 | continuation rows. Fixes unwarranted scroll when point enters a | ||
| 17 | continued line of R2L text within an L2R paragraph, or vice versa. | ||
| 18 | (cursor_row_p): Consider the case of point being equal to | ||
| 19 | MATRIX_ROW_END_CHARPOS. Prevents cursor being stuck when moving | ||
| 20 | from the end of a short line to the beginning of a continued line | ||
| 21 | of R2L text within L2R paragraph. | ||
| 22 | (RECORD_MAX_MIN_POS): For max_pos, use IT_CHARPOS even for | ||
| 23 | composed characters. | ||
| 24 | |||
| 25 | * bidi.c (bidi_check_type): Use xassert. | ||
| 26 | (bidi_cache_iterator_state): Update the disp_pos and disp_prop_p | ||
| 27 | members. | ||
| 28 | |||
| 29 | 2011-08-23 Eli Zaretskii <eliz@gnu.org> | ||
| 30 | |||
| 31 | * bidi.c (bidi_get_type): Abort if we get zero as the bidi type of | ||
| 32 | a character. | ||
| 33 | |||
| 34 | 2011-08-23 Chong Yidong <cyd@stupidchicken.com> | ||
| 35 | |||
| 36 | * nsfont.m (ns_otf_to_script): Fix typo. | ||
| 37 | |||
| 38 | 2011-08-22 Kenichi Handa <handa@m17n.org> | ||
| 39 | |||
| 40 | * chartab.c (Fset_char_table_extra_slot): Do not inhibit setting a | ||
| 41 | extra slot even if the purpose is char-code-property-table. | ||
| 42 | |||
| 1 | 2011-08-23 Eli Zaretskii <eliz@gnu.org> | 43 | 2011-08-23 Eli Zaretskii <eliz@gnu.org> |
| 2 | 44 | ||
| 3 | * xdisp.c (redisplay_window): When computing centering_position, | 45 | * xdisp.c (redisplay_window): When computing centering_position, |
diff --git a/src/bidi.c b/src/bidi.c index 7517eca5aed..425a0be9578 100644 --- a/src/bidi.c +++ b/src/bidi.c | |||
| @@ -108,8 +108,12 @@ bidi_get_type (int ch, bidi_dir_t override) | |||
| 108 | abort (); | 108 | abort (); |
| 109 | 109 | ||
| 110 | default_type = (bidi_type_t) XINT (CHAR_TABLE_REF (bidi_type_table, ch)); | 110 | default_type = (bidi_type_t) XINT (CHAR_TABLE_REF (bidi_type_table, ch)); |
| 111 | if (default_type == 0) | 111 | /* Every valid character code, even those that are unassigned by the |
| 112 | default_type = STRONG_L; | 112 | UCD, have some bidi-class property, according to |
| 113 | DerivedBidiClass.txt file. Therefore, if we ever get UNKNOWN_BT | ||
| 114 | (= zero) code from CHAR_TABLE_REF, that's a bug. */ | ||
| 115 | if (default_type == UNKNOWN_BT) | ||
| 116 | abort (); | ||
| 113 | 117 | ||
| 114 | if (override == NEUTRAL_DIR) | 118 | if (override == NEUTRAL_DIR) |
| 115 | return default_type; | 119 | return default_type; |
| @@ -142,11 +146,10 @@ bidi_get_type (int ch, bidi_dir_t override) | |||
| 142 | } | 146 | } |
| 143 | } | 147 | } |
| 144 | 148 | ||
| 145 | static void | 149 | static inline void |
| 146 | bidi_check_type (bidi_type_t type) | 150 | bidi_check_type (bidi_type_t type) |
| 147 | { | 151 | { |
| 148 | if (type < UNKNOWN_BT || type > NEUTRAL_ON) | 152 | xassert (UNKNOWN_BT <= type && type <= NEUTRAL_ON); |
| 149 | abort (); | ||
| 150 | } | 153 | } |
| 151 | 154 | ||
| 152 | /* Given a bidi TYPE of a character, return its category. */ | 155 | /* Given a bidi TYPE of a character, return its category. */ |
| @@ -536,6 +539,8 @@ bidi_cache_iterator_state (struct bidi_it *bidi_it, int resolved) | |||
| 536 | bidi_cache[idx].next_for_neutral = bidi_it->next_for_neutral; | 539 | bidi_cache[idx].next_for_neutral = bidi_it->next_for_neutral; |
| 537 | bidi_cache[idx].next_for_ws = bidi_it->next_for_ws; | 540 | bidi_cache[idx].next_for_ws = bidi_it->next_for_ws; |
| 538 | bidi_cache[idx].ignore_bn_limit = bidi_it->ignore_bn_limit; | 541 | bidi_cache[idx].ignore_bn_limit = bidi_it->ignore_bn_limit; |
| 542 | bidi_cache[idx].disp_pos = bidi_it->disp_pos; | ||
| 543 | bidi_cache[idx].disp_prop_p = bidi_it->disp_prop_p; | ||
| 539 | } | 544 | } |
| 540 | 545 | ||
| 541 | bidi_cache_last_idx = idx; | 546 | bidi_cache_last_idx = idx; |
diff --git a/src/buffer.c b/src/buffer.c index 45d6fa36d04..832044ae6f4 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -1698,27 +1698,16 @@ record_buffer (Lisp_Object buffer) | |||
| 1698 | call1 (Vrun_hooks, Qbuffer_list_update_hook); | 1698 | call1 (Vrun_hooks, Qbuffer_list_update_hook); |
| 1699 | } | 1699 | } |
| 1700 | 1700 | ||
| 1701 | DEFUN ("record-buffer", Frecord_buffer, Srecord_buffer, 1, 1, 0, | ||
| 1702 | doc: /* Move BUFFER to the front of the buffer list. | ||
| 1703 | Return BUFFER. */) | ||
| 1704 | (Lisp_Object buffer) | ||
| 1705 | { | ||
| 1706 | CHECK_BUFFER (buffer); | ||
| 1707 | |||
| 1708 | record_buffer (buffer); | ||
| 1709 | |||
| 1710 | return buffer; | ||
| 1711 | } | ||
| 1712 | 1701 | ||
| 1713 | /* Move BUFFER to the end of the buffer (a)lists. Do nothing if the | 1702 | /* Move BUFFER to the end of the buffer (a)lists. Do nothing if the |
| 1714 | buffer is killed. For the selected frame's buffer list this moves | 1703 | buffer is killed. For the selected frame's buffer list this moves |
| 1715 | BUFFER to its end even if it was never shown in that frame. If | 1704 | BUFFER to its end even if it was never shown in that frame. If |
| 1716 | this happens we have a feature, hence `unrecord-buffer' should be | 1705 | this happens we have a feature, hence `unrecord-buffer' should be |
| 1717 | called only when BUFFER was shown in the selected frame. */ | 1706 | called only when BUFFER was shown in the selected frame. */ |
| 1718 | 1707 | ||
| 1719 | DEFUN ("unrecord-buffer", Funrecord_buffer, Sunrecord_buffer, 1, 1, 0, | 1708 | DEFUN ("bury-buffer-internal", Fbury_buffer_internal, Sbury_buffer_internal, |
| 1720 | doc: /* Move BUFFER to the end of the buffer list. | 1709 | 1, 1, 0, |
| 1721 | Return BUFFER. */) | 1710 | doc: /* Move BUFFER to the end of the buffer list. */) |
| 1722 | (Lisp_Object buffer) | 1711 | (Lisp_Object buffer) |
| 1723 | { | 1712 | { |
| 1724 | Lisp_Object aelt, aelt_cons, tem; | 1713 | Lisp_Object aelt, aelt_cons, tem; |
| @@ -1746,7 +1735,7 @@ Return BUFFER. */) | |||
| 1746 | if (!NILP (Vrun_hooks)) | 1735 | if (!NILP (Vrun_hooks)) |
| 1747 | call1 (Vrun_hooks, Qbuffer_list_update_hook); | 1736 | call1 (Vrun_hooks, Qbuffer_list_update_hook); |
| 1748 | 1737 | ||
| 1749 | return buffer; | 1738 | return Qnil; |
| 1750 | } | 1739 | } |
| 1751 | 1740 | ||
| 1752 | DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, Sset_buffer_major_mode, 1, 1, 0, | 1741 | DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, Sset_buffer_major_mode, 1, 1, 0, |
| @@ -6034,8 +6023,7 @@ Functions running this hook are `get-buffer-create', | |||
| 6034 | defsubr (&Sother_buffer); | 6023 | defsubr (&Sother_buffer); |
| 6035 | defsubr (&Sbuffer_enable_undo); | 6024 | defsubr (&Sbuffer_enable_undo); |
| 6036 | defsubr (&Skill_buffer); | 6025 | defsubr (&Skill_buffer); |
| 6037 | defsubr (&Srecord_buffer); | 6026 | defsubr (&Sbury_buffer_internal); |
| 6038 | defsubr (&Sunrecord_buffer); | ||
| 6039 | defsubr (&Sset_buffer_major_mode); | 6027 | defsubr (&Sset_buffer_major_mode); |
| 6040 | defsubr (&Scurrent_buffer); | 6028 | defsubr (&Scurrent_buffer); |
| 6041 | defsubr (&Sset_buffer); | 6029 | defsubr (&Sset_buffer); |
diff --git a/src/chartab.c b/src/chartab.c index 0cabaac4cf5..1d4ac04312a 100644 --- a/src/chartab.c +++ b/src/chartab.c | |||
| @@ -589,8 +589,6 @@ DEFUN ("set-char-table-extra-slot", Fset_char_table_extra_slot, | |||
| 589 | (Lisp_Object char_table, Lisp_Object n, Lisp_Object value) | 589 | (Lisp_Object char_table, Lisp_Object n, Lisp_Object value) |
| 590 | { | 590 | { |
| 591 | CHECK_CHAR_TABLE (char_table); | 591 | CHECK_CHAR_TABLE (char_table); |
| 592 | if (EQ (XCHAR_TABLE (char_table)->purpose, Qchar_code_property_table)) | ||
| 593 | error ("Can't change extra-slot of char-code-property-table"); | ||
| 594 | CHECK_NUMBER (n); | 592 | CHECK_NUMBER (n); |
| 595 | if (XINT (n) < 0 | 593 | if (XINT (n) < 0 |
| 596 | || XINT (n) >= CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (char_table))) | 594 | || XINT (n) >= CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (char_table))) |
diff --git a/src/nsfont.m b/src/nsfont.m index 60f8c5321aa..c4d9123faef 100644 --- a/src/nsfont.m +++ b/src/nsfont.m | |||
| @@ -303,7 +303,7 @@ static NSString | |||
| 303 | { | 303 | { |
| 304 | Lisp_Object script = assq_no_quit (XCAR (otf), Votf_script_alist); | 304 | Lisp_Object script = assq_no_quit (XCAR (otf), Votf_script_alist); |
| 305 | return CONSP (script) | 305 | return CONSP (script) |
| 306 | ? [NSString stringWithUTF8String: SDATA (SYMBOL_NAME XCDR ((script)))] | 306 | ? [NSString stringWithUTF8String: SDATA (SYMBOL_NAME (XCDR ((script))))] |
| 307 | : @""; | 307 | : @""; |
| 308 | } | 308 | } |
| 309 | 309 | ||
diff --git a/src/process.c b/src/process.c index 2125478907f..977cfb964e2 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -5186,6 +5186,9 @@ read_process_output (Lisp_Object proc, register int channel) | |||
| 5186 | p->decoding_carryover = coding->carryover_bytes; | 5186 | p->decoding_carryover = coding->carryover_bytes; |
| 5187 | } | 5187 | } |
| 5188 | if (SBYTES (text) > 0) | 5188 | if (SBYTES (text) > 0) |
| 5189 | /* FIXME: It's wrong to wrap or not based on debug-on-error, and | ||
| 5190 | sometimes it's simply wrong to wrap (e.g. when called from | ||
| 5191 | accept-process-output). */ | ||
| 5189 | internal_condition_case_1 (read_process_output_call, | 5192 | internal_condition_case_1 (read_process_output_call, |
| 5190 | Fcons (outstream, | 5193 | Fcons (outstream, |
| 5191 | Fcons (proc, Fcons (text, Qnil))), | 5194 | Fcons (proc, Fcons (text, Qnil))), |
diff --git a/src/xdisp.c b/src/xdisp.c index f38c2828b8e..580bd59908b 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -13857,7 +13857,14 @@ set_cursor_from_row (struct window *w, struct glyph_row *row, | |||
| 13857 | && glyph->charpos != pt_old))))) | 13857 | && glyph->charpos != pt_old))))) |
| 13858 | return 0; | 13858 | return 0; |
| 13859 | /* If this candidate gives an exact match, use that. */ | 13859 | /* If this candidate gives an exact match, use that. */ |
| 13860 | if (!(BUFFERP (glyph->object) && glyph->charpos == pt_old) | 13860 | if (!((BUFFERP (glyph->object) && glyph->charpos == pt_old) |
| 13861 | /* If this candidate is a glyph created for the | ||
| 13862 | terminating newline of a line, and point is on that | ||
| 13863 | newline, it wins because it's an exact match. */ | ||
| 13864 | || (!row->continued_p | ||
| 13865 | && INTEGERP (glyph->object) | ||
| 13866 | && glyph->charpos == 0 | ||
| 13867 | && pt_old == MATRIX_ROW_END_CHARPOS (row) - 1)) | ||
| 13861 | /* Otherwise, keep the candidate that comes from a row | 13868 | /* Otherwise, keep the candidate that comes from a row |
| 13862 | spanning less buffer positions. This may win when one or | 13869 | spanning less buffer positions. This may win when one or |
| 13863 | both candidate positions are on glyphs that came from | 13870 | both candidate positions are on glyphs that came from |
| @@ -14639,7 +14646,8 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, int *scroll_ste | |||
| 14639 | } | 14646 | } |
| 14640 | ++row; | 14647 | ++row; |
| 14641 | } | 14648 | } |
| 14642 | while ((MATRIX_ROW_CONTINUATION_LINE_P (row) | 14649 | while (((MATRIX_ROW_CONTINUATION_LINE_P (row) |
| 14650 | || row->continued_p) | ||
| 14643 | && MATRIX_ROW_BOTTOM_Y (row) <= last_y) | 14651 | && MATRIX_ROW_BOTTOM_Y (row) <= last_y) |
| 14644 | || (MATRIX_ROW_START_CHARPOS (row) == PT | 14652 | || (MATRIX_ROW_START_CHARPOS (row) == PT |
| 14645 | && MATRIX_ROW_BOTTOM_Y (row) < last_y)); | 14653 | && MATRIX_ROW_BOTTOM_Y (row) < last_y)); |
| @@ -18114,7 +18122,8 @@ cursor_row_p (struct glyph_row *row) | |||
| 18114 | { | 18122 | { |
| 18115 | int result = 1; | 18123 | int result = 1; |
| 18116 | 18124 | ||
| 18117 | if (PT == CHARPOS (row->end.pos)) | 18125 | if (PT == CHARPOS (row->end.pos) |
| 18126 | || PT == MATRIX_ROW_END_CHARPOS (row)) | ||
| 18118 | { | 18127 | { |
| 18119 | /* Suppose the row ends on a string. | 18128 | /* Suppose the row ends on a string. |
| 18120 | Unless the row is continued, that means it ends on a newline | 18129 | Unless the row is continued, that means it ends on a newline |
| @@ -18509,10 +18518,10 @@ display_line (struct it *it) | |||
| 18509 | min_pos = current_pos; \ | 18518 | min_pos = current_pos; \ |
| 18510 | min_bpos = current_bpos; \ | 18519 | min_bpos = current_bpos; \ |
| 18511 | } \ | 18520 | } \ |
| 18512 | if (current_pos > max_pos) \ | 18521 | if (IT_CHARPOS (*it) > max_pos) \ |
| 18513 | { \ | 18522 | { \ |
| 18514 | max_pos = current_pos; \ | 18523 | max_pos = IT_CHARPOS (*it); \ |
| 18515 | max_bpos = current_bpos; \ | 18524 | max_bpos = IT_BYTEPOS (*it); \ |
| 18516 | } \ | 18525 | } \ |
| 18517 | } \ | 18526 | } \ |
| 18518 | while (0) | 18527 | while (0) |
| @@ -19119,7 +19128,8 @@ See also `bidi-paragraph-direction'. */) | |||
| 19119 | buf = XBUFFER (buffer); | 19128 | buf = XBUFFER (buffer); |
| 19120 | } | 19129 | } |
| 19121 | 19130 | ||
| 19122 | if (NILP (BVAR (buf, bidi_display_reordering))) | 19131 | if (NILP (BVAR (buf, bidi_display_reordering)) |
| 19132 | || NILP (BVAR (buf, enable_multibyte_characters))) | ||
| 19123 | return Qleft_to_right; | 19133 | return Qleft_to_right; |
| 19124 | else if (!NILP (BVAR (buf, bidi_paragraph_direction))) | 19134 | else if (!NILP (BVAR (buf, bidi_paragraph_direction))) |
| 19125 | return BVAR (buf, bidi_paragraph_direction); | 19135 | return BVAR (buf, bidi_paragraph_direction); |