# HG changeset patch # User Kim F. Storm # Date 1171452520 0 # Node ID da8eab1082810447e5732c9e74438adf5a106f54 # Parent a527b46e9ab26917f3a72c8dad37a9a4871921b1 (make-glyph-code, glyph-char, glyph-face): New defuns. (standard-display-underline): Use make-glyph-code. diff -r a527b46e9ab2 -r da8eab108281 lisp/disp-table.el --- a/lisp/disp-table.el Wed Feb 14 11:28:31 2007 +0000 +++ b/lisp/disp-table.el Wed Feb 14 11:28:40 2007 +0000 @@ -172,7 +172,7 @@ (aset standard-display-table c (vector (if window-system - (logior uc (lsh (face-id 'underline) 19)) + (make-glyph-code uc 'underline) (create-glyph (concat "\e[4m" (char-to-string uc) "\e[m")))))) ;;;###autoload @@ -187,6 +187,30 @@ (1- (length glyph-table))) ;;;###autoload +(defun make-glyph-code (char &optional face) + "Return a glyph code representing char CHAR with face FACE." + ;; Due to limitations on Emacs integer values, faces with + ;; face id greater that 4091 are silently ignored. + (if (and face (<= (face-id face) #xfff)) + (logior char (lsh (face-id face) 19)) + char)) + +;;;###autoload +(defun glyph-char (glyph) + "Return the character of glyph code GLYPH." + (logand glyph #x7ffff)) + +;;;###autoload +(defun glyph-face (glyph) + "Return the face of glyph code GLYPH, or nil if glyph has default face." + (let ((face-id (lsh glyph -19))) + (and (> face-id 0) + (car (delq nil (mapcar (lambda (face) + (and (eq (get face 'face) face-id) + face)) + (face-list))))))) + +;;;###autoload (defun standard-display-european (arg) "Semi-obsolete way to toggle display of ISO 8859 European characters.