From bd4a85b9ffa6c2f705101eaeb7df9d316198114b Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Fri, 26 Sep 2003 11:24:10 +0000 Subject: [PATCH] (auto-compose-region): New function. --- lisp/composite.el | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lisp/composite.el b/lisp/composite.el index 3db2ff0964..ad1a37f69c 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. -- 2.39.2