Mercurial > emacs
changeset 41875:e31b7be17ab2
(diacritic-composition-pattern): New constant.
(diacritic-compose-region, diacritic-compose-string)
(diacritic-compose-buffer, diacritic-post-read-conversion)
(diacritic-composition-function): New functions.
author | Dave Love <fx@gnu.org> |
---|---|
date | Fri, 07 Dec 2001 14:48:40 +0000 |
parents | 1b93abfcbd87 |
children | 090ae4bf745e |
files | lisp/language/european.el |
diffstat | 1 files changed, 60 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/language/european.el Fri Dec 07 14:47:37 2001 +0000 +++ b/lisp/language/european.el Fri Dec 07 14:48:40 2001 +0000 @@ -542,6 +542,66 @@ (valid-codes (0 . 255)) (mime-charset . macintosh))) ; per IANA, rfc1345 +(defconst diacritic-composition-pattern "\\C^\\c^+") + +;;;###autoload +(defun diacritic-compose-region (beg end) + "Compose diacritic characters in the region. +When called from a program, expects two arguments, +positions (integers or markers) specifying the region." + (interactive "r") + (save-restriction + (narrow-to-region beg end) + (goto-char (point-min)) + (while (re-search-forward diacritic-composition-pattern nil t) + (compose-region (match-beginning 0) (match-end 0))))) + +;;;###autoload +(defun diacritic-compose-string (string) + "Compose diacritic characters in STRING and return the resulting string." + (let ((idx 0)) + (while (setq idx (string-match diacritic-composition-pattern string idx)) + (compose-string string idx (match-end 0)) + (setq idx (match-end 0)))) + string) + +;;;###autoload +(defun diacritic-compose-buffer () + "Compose diacritic characters in the current buffer." + (interactive) + (diacritic-compose-region (point-min) (point-max))) + +;;;###autoload +(defun diacritic-post-read-conversion (len) + (diacritic-compose-region (point) (+ (point) len)) + len) + +;;;###autoload +(defun diacritic-composition-function (from to pattern &optional string) + "Compose diacritic text in the region FROM and TO. +The text matches the regular expression PATTERN. +Optional 4th argument STRING, if non-nil, is a string containing text +to compose. + +The return value is number of composed characters." + (if (< (1+ from) to) + (prog1 (- to from) + (if string + (compose-string string from to) + (compose-region from to)) + (- to from)))) + +;; Register a function to compose Unicode diacrtics and marks. +(let ((patterns '(("\\C^\\c^+" . diacrtic-composition-function)))) + (let ((c #x300)) + (while (<= c #x362) + (aset composition-function-table (decode-char 'ucs c) patterns) + (setq c (1+ c))) + (setq c #x20d0) + (while (<= c #x20e3) + (aset composition-function-table (decode-char 'ucs c) patterns) + (setq c (1+ c))))) + (provide 'european) ;;; european.el ends here