]> git.eshelyaron.com Git - emacs.git/commitdiff
(compose-region): Insert then delete
authorKenichi Handa <handa@m17n.org>
Mon, 26 Oct 1998 08:00:11 +0000 (08:00 +0000)
committerKenichi Handa <handa@m17n.org>
Mon, 26 Oct 1998 08:00:11 +0000 (08:00 +0000)
to preserve markers.
(decompose-region): Use search-forward for efficiency.

lisp/international/mule-util.el

index 39eb9e3a9b1ec9512ae5af6a9ec81d4e692d6b18..7e237a6ea5634b6144b97ad996a997dff0e0ea9b 100644 (file)
@@ -370,8 +370,8 @@ positions (integers or markers) specifying the region."
   (save-excursion
     (let ((str (buffer-substring start end)))
       (goto-char start)
-      (delete-region start end)
-      (insert (compose-string str)))))
+      (insert (compose-string str))
+      (delete-char (- end start)))))
 
 ;;;###autoload
 (defun decompose-region (start end)
@@ -384,13 +384,14 @@ positions (integers or markers) specifying the region."
     (save-restriction
       (narrow-to-region start end)
       (goto-char (point-min))
-      (while (not (eobp))
-       (let ((ch (following-char)))
-         (if (>= ch min-composite-char)
-             (progn
-               (delete-char 1)
-               (insert (decompose-composite-char ch)))
-           (forward-char 1)))))))
+      (let ((cmpchar-head (char-to-string leading-code-composition)))
+       (while (search-forward cmpchar-head nil t)
+         (let ((ch (preceding-char)))
+           (if (>= ch min-composite-char)
+               (progn
+                 (delete-char -1)
+                 (insert (decompose-composite-char ch)))
+             (forward-char 1))))))))
 
 ;;;###autoload
 (defun decompose-string (string)