changeset 89720:3a4e30359ac0

(diacritic-composition-function): Fix for the case that POS is at the head. Allow combining with more characters.
author Kenichi Handa <handa@m17n.org>
date Tue, 20 Jan 2004 08:27:17 +0000
parents d91b7816539c
children b51aeccceaec
files lisp/language/european.el
diffstat 1 files changed, 35 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/language/european.el	Sun Jan 18 23:45:31 2004 +0000
+++ b/lisp/language/european.el	Tue Jan 20 08:27:17 2004 +0000
@@ -686,43 +686,41 @@
 or nil if no characters are composed."
   (setq pos (1- pos))
   (if string
-      (let ((ch (aref string pos))
-	    start end components ch composition)
-	(when (and (>= pos 0)
-		   ;; Previous character is latin.
-		   (aref (char-category-set ch) ?l)
-		   (/= ch 32))
-	  (setq start pos
-		end (length string)
-		components (list ch)
-		pos (1+ pos))
-	  (while (and
-		  (< pos end)
-		  (setq ch (aref string pos)
-			composition
-			(get-char-code-property ch 'diacritic-composition)))
-	    (setq components (cons ch (cons composition components))
-		  pos (1+ pos)))
-	  (compose-string string start pos (nreverse components))
-	  pos))
-    (let ((ch (char-after pos))
-	  start end components composition)
-      (when (and (>= pos (point-min))
-		 (aref (char-category-set ch) ?l)
-		 (/= ch 32))
-	(setq start pos
-	      end (point-max)
-	      components (list ch)
-	      pos (1+ pos))
-	(while (and
-		(< pos end)
-		(setq ch (char-after pos)
-		      composition
-		      (get-char-code-property ch 'diacritic-composition)))
-	  (setq components (cons ch (cons composition components))
-		pos (1+ pos)))
-	(compose-region start pos (nreverse components))
-	pos))))
+      (if (>= pos 0)
+	  (let ((ch (aref string pos))
+		start end components ch composition)
+	    (when (and (>= ch 32) (or (< ch 127) (>= ch 160)))
+	      (setq start pos
+		    end (length string)
+		    components (list ch)
+		    pos (1+ pos))
+	      (while (and
+		      (< pos end)
+		      (setq ch (aref string pos)
+			    composition
+			    (get-char-code-property ch
+						    'diacritic-composition)))
+		(setq components (cons ch (cons composition components))
+		      pos (1+ pos)))
+	      (compose-string string start pos (nreverse components))
+	      pos)))
+    (if (>= pos (point-min))
+	(let ((ch (char-after pos))
+	      start end components composition)
+	  (when (and (>= ch 32) (or (< ch 127) (>= ch 160)))
+	    (setq start pos
+		  end (point-max)
+		  components (list ch)
+		  pos (1+ pos))
+	    (while (and
+		    (< pos end)
+		    (setq ch (char-after pos)
+			  composition
+			  (get-char-code-property ch 'diacritic-composition)))
+	      (setq components (cons ch (cons composition components))
+		    pos (1+ pos)))
+	    (compose-region start pos (nreverse components))
+	    pos)))))
 
 (provide 'european)