diff options
| author | Kim F. Storm | 2008-02-27 22:53:11 +0000 |
|---|---|---|
| committer | Kim F. Storm | 2008-02-27 22:53:11 +0000 |
| commit | 20e70daf7f4a7d1cf8a03fb668d64496d87791e0 (patch) | |
| tree | dd16f412a7e15bc510eef32540dc922b2eb7f947 | |
| parent | a6fa701eb167558fad7cfcc12951222665f92635 (diff) | |
| download | emacs-20e70daf7f4a7d1cf8a03fb668d64496d87791e0.tar.gz emacs-20e70daf7f4a7d1cf8a03fb668d64496d87791e0.zip | |
(make-glyph-code): Encode as cons if face id > 63.
(glyph-char, glyph-face): Handle cons encoding.
| -rw-r--r-- | lisp/disp-table.el | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lisp/disp-table.el b/lisp/disp-table.el index a71ef02e8cb..9124353884b 100644 --- a/lisp/disp-table.el +++ b/lisp/disp-table.el | |||
| @@ -190,19 +190,27 @@ X frame." | |||
| 190 | "Return a glyph code representing char CHAR with face FACE." | 190 | "Return a glyph code representing char CHAR with face FACE." |
| 191 | ;; Due to limitations on Emacs integer values, faces with | 191 | ;; Due to limitations on Emacs integer values, faces with |
| 192 | ;; face id greater that 512 are silently ignored. | 192 | ;; face id greater that 512 are silently ignored. |
| 193 | (if (and face (<= (face-id face) #x1ff)) | 193 | (if (not face) |
| 194 | (logior char (lsh (face-id face) 22)) | 194 | char |
| 195 | char)) | 195 | (let ((fid (face-id face))) |
| 196 | (cond | ||
| 197 | ((not fid) (error "unknown face")) | ||
| 198 | ((< fid 64) ; we have 32 - 3(LSB) - 1(SIGN) - 22(CHAR) = 6 bits for face id | ||
| 199 | (logior char (lsh fid 22))) | ||
| 200 | (t (cons char fid)))))) | ||
| 196 | 201 | ||
| 197 | ;;;###autoload | 202 | ;;;###autoload |
| 198 | (defun glyph-char (glyph) | 203 | (defun glyph-char (glyph) |
| 199 | "Return the character of glyph code GLYPH." | 204 | "Return the character of glyph code GLYPH." |
| 200 | (logand glyph #x3fffff)) | 205 | (if (consp glyph) |
| 206 | (car glyph) | ||
| 207 | (logand glyph #x3fffff))) | ||
| 201 | 208 | ||
| 202 | ;;;###autoload | 209 | ;;;###autoload |
| 203 | (defun glyph-face (glyph) | 210 | (defun glyph-face (glyph) |
| 204 | "Return the face of glyph code GLYPH, or nil if glyph has default face." | 211 | "Return the face of glyph code GLYPH, or nil if glyph has default face." |
| 205 | (let ((face-id (lsh glyph -22))) | 212 | |
| 213 | (let ((face-id (if (consp glyph) (cdr glyph) (lsh glyph -22)))) | ||
| 206 | (and (> face-id 0) | 214 | (and (> face-id 0) |
| 207 | (car (delq nil (mapcar (lambda (face) | 215 | (car (delq nil (mapcar (lambda (face) |
| 208 | (and (eq (get face 'face) face-id) | 216 | (and (eq (get face 'face) face-id) |