1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-29 07:58:28 +00:00

(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.
This commit is contained in:
Kenichi Handa 2008-06-26 04:17:19 +00:00
parent e889393b2e
commit 3617b1eb8d
2 changed files with 24 additions and 6 deletions

View File

@ -1,3 +1,13 @@
2008-06-26 Kenichi Handa <handa@m17n.org>
* composite.el (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.
2008-06-26 Glenn Morris <rgm@gnu.org>
* calendar/calendar.el (calendar-date-echo-text): Doc fix.

View File

@ -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)