(defvar auto-compose-current-font nil
"The current font-object used for characters being composed automatically.")
-(defun auto-compose-chars (pos string font-object)
+(defun auto-compose-chars (pos string window)
"Compose characters after the buffer position POS.
If STRING is non-nil, it is a string, and POS is an index into the string.
In that case, compose characters in the string.
-FONT-OBJECT is a font selected for the character at POS.
+WINDOW is a window displaying the current buffer.
This function is the default value of `auto-composition-function' (which see)."
(save-buffer-state nil
(condition-case nil
(let ((start pos)
(limit (if string (length string) (point-max)))
- (auto-compose-current-font font-object)
(table (if (display-graphic-p)
composition-function-table
terminal-composition-function-table))
+ auto-compose-current-font
ch func newpos)
(setq limit
(or (text-property-any pos limit 'auto-composed t string)
(throw 'tag (1+ pos)))
(setq func (aref table ch))
(if (and (functionp func)
+ (setq auto-compose-current-font
+ (and window
+ (font-at pos window string)))
(setq newpos (funcall func pos string))
(> newpos pos))
(setq pos newpos)
(throw 'tag (1+ pos)))
(setq func (aref table ch))
(if (and (functionp func)
+ (setq auto-compose-current-font
+ (and window (font-at pos window)))
(setq newpos (funcall func pos string))
(> newpos pos))
(setq pos newpos)