diff options
author | Kenichi Handa <handa@m17n.org> | 2008-06-26 04:17:19 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 2008-06-26 04:17:19 +0000 |
commit | 3617b1eb8da69a836148741cd35a7d8ec59191af (patch) | |
tree | 8889d2bbc8aac3c059979fb8df41d38f33d4b532 /lisp/composite.el | |
parent | e889393b2e5594a11a55147bb99ef1d0cc3c91f6 (diff) | |
download | emacs-3617b1eb8da69a836148741cd35a7d8ec59191af.tar.gz |
(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.
Diffstat (limited to 'lisp/composite.el')
-rw-r--r-- | lisp/composite.el | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/lisp/composite.el b/lisp/composite.el index 3106f726ed5..0d4912be747 100644 --- a/lisp/composite.el +++ b/lisp/composite.el @@ -436,26 +436,32 @@ See also the documentation of `auto-composition-mode'.") (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 @@ This function is the default value of `auto-composition-function' (which see)." (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 @@ This function is the default value of `auto-composition-function' (which see)." (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) |