aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim F. Storm2008-02-27 22:53:11 +0000
committerKim F. Storm2008-02-27 22:53:11 +0000
commit20e70daf7f4a7d1cf8a03fb668d64496d87791e0 (patch)
treedd16f412a7e15bc510eef32540dc922b2eb7f947
parenta6fa701eb167558fad7cfcc12951222665f92635 (diff)
downloademacs-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.el18
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)