Function: compose-chars-after

compose-chars-after is a byte-compiled function defined in composite.el.gz.

Signature

(compose-chars-after POS &optional LIMIT OBJECT)

Documentation

Compose characters in current buffer after position POS.

It looks up the char-table composition-function-table (which see) by a character at POS, and compose characters after POS according to the contents of composition-function-table.

Optional 2nd arg LIMIT, if non-nil, limits characters to compose.

Optional 3rd arg OBJECT, if non-nil, is a string that contains the text to compose. In that case, POS and LIMIT index into the string.

This function is the default value of compose-chars-after-function.

Source Code

;; Defined in /usr/src/emacs/lisp/composite.el.gz
(defun compose-chars-after (pos &optional limit object)
  "Compose characters in current buffer after position POS.

It looks up the char-table `composition-function-table' (which
see) by a character at POS, and compose characters after POS
according to the contents of `composition-function-table'.

Optional 2nd arg LIMIT, if non-nil, limits characters to compose.

Optional 3rd arg OBJECT, if non-nil, is a string that contains the
text to compose.  In that case, POS and LIMIT index into the string.

This function is the default value of `compose-chars-after-function'."
  (let ((tail (aref composition-function-table (char-after pos)))
	(font-obj (and (display-multi-font-p)
		       (and (not (stringp object))
			    (font-at pos (selected-window)))))
	pattern func result)
    (or limit
	(setq limit (if (stringp object) (length object) (point-max))))
    (when (and font-obj tail)
      (save-match-data
	(save-excursion
	  (while tail
	    (if (functionp (car tail))
		(setq pattern nil func (car tail))
	      (setq pattern (car (car tail))
		    func (cdr (car tail))))
	    (goto-char pos)
	    (if pattern
		(if (and (if (stringp object)
			     (eq (string-match pattern object) 0)
			   (looking-at pattern))
			 (<= (match-end 0) limit))
		    (setq result
			  (funcall func pos (match-end 0) font-obj object nil)))
	      (setq result (funcall func pos limit font-obj  object nil)))
	    (if result (setq tail nil))))))
    result))