Mercurial > emacs
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)