From: Kenichi Handa Date: Fri, 26 Sep 2003 11:24:10 +0000 (+0000) Subject: (auto-compose-region): New function. X-Git-Tag: emacs-pretest-23.0.90~8295^2~1820 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=bd4a85b9ffa6c2f705101eaeb7df9d316198114b;p=emacs.git (auto-compose-region): New function. --- diff --git a/lisp/composite.el b/lisp/composite.el index 3db2ff09644..ad1a37f69cb 100644 --- a/lisp/composite.el +++ b/lisp/composite.el @@ -456,6 +456,32 @@ With arg, enable it iff arg is positive." (save-restriction (widen) (put-text-property (point-min) (point-max) 'auto-composed nil))))) + +(defun auto-compose-region (from to) + "Force automatic character composition on the region FROM and TO." + (save-excursion + (if (get-text-property from 'auto-composed) + (setq from (next-single-property-change from 'auto-composed nil to))) + (goto-char from) + (let ((modified-p (buffer-modified-p)) + (inhibit-read-only '(composition auto-composed)) + (stop (next-single-property-change (point) 'auto-composed nil to))) + (while (< (point) to) + (if (= (point) stop) + (progn + (goto-char (next-single-property-change (point) + 'auto-composed nil to)) + (setq stop (next-single-property-change (point) + 'auto-composed nil to))) + (let ((func (aref composition-function-table (following-char))) + (pos (point))) + (if (functionp func) + (goto-char (funcall func (point) nil))) + (if (<= (point) pos) + (forward-char 1))))) + (put-text-property from to 'auto-composed t) + (set-buffer-modified-p modified-p)))) + ;;; The following codes are only for backward compatibility with Emacs ;;; 20.4 and earlier.