Mercurial > emacs
changeset 96301:66839d3799fe
(terminal-composition-base-character-p): New
funciton.
(terminal-composition-function): Use
terminal-composition-base-character-p. Include the base character
in the composition.
(auto-compose-chars): Don't check font-object for terminal
display.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Thu, 26 Jun 2008 04:16:09 +0000 |
parents | c0227e195a0e |
children | b3db7e68c460 |
files | lisp/composite.el |
diffstat | 1 files changed, 14 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/composite.el Thu Jun 26 03:43:18 2008 +0000 +++ b/lisp/composite.el Thu Jun 26 04:16:09 2008 +0000 @@ -436,26 +436,32 @@ (put 'save-buffer-state 'lisp-indent-function 1) +(defsubst terminal-composition-base-character-p (ch) + (not (memq (get-char-code-property ch 'general-category) + '(Mn Mc Me Zs Zl Zp Cc Cf Cs)))) + (defun terminal-composition-function (from to font-object string) "General composition function used on terminal. Non-spacing characters are composed with the preceding spacing character. All non-spacing characters has this function in `terminal-composition-function-table'." - (let ((pos (1+ from))) + (let ((pos from)) (if string (progn (while (and (< pos to) (= (aref char-width-table (aref string pos)) 0)) (setq pos (1+ pos))) - (if (> from 0) + (if (and (> from 0) + (terminal-composition-base-character-p (aref string (1- from)))) (compose-string string (1- from) pos) (compose-string string from pos (concat " " (buffer-substring from pos))))) (while (and (< pos to) (= (aref char-width-table (char-after pos)) 0)) (setq pos (1+ pos))) - (if (> from (point-min)) - (compose-region (1- from) pos (buffer-substring from pos)) + (if (and (> from (point-min)) + (terminal-composition-base-character-p (char-after pos))) + (compose-region (1- from) pos) (compose-region from pos (concat " " (buffer-substring from pos))))) pos)) @@ -496,7 +502,8 @@ (elt (aref table ch)) font-obj newpos) (when (and elt - (setq font-obj (font-at from window string))) + (or (not (display-graphic-p)) + (setq font-obj (font-at from window string)))) (if (functionp elt) (setq newpos (funcall elt from to font-obj string)) (while (and elt @@ -517,7 +524,8 @@ (elt (aref table ch)) func pattern font-obj newpos) (when (and elt - (setq font-obj (font-at from window))) + (or (not (display-graphic-p)) + (setq font-obj (font-at from window)))) (if (functionp elt) (setq newpos (funcall elt from to font-obj nil)) (goto-char from)