Optimize ucs-normalize.el compilation

* lisp/international/ucs-normalize.el (ucs-normalize-combining-chars-regexp):
(quick-check-list-to-regexp): Use regexp-opt-charset instead of
regexp-opt.
* lisp/international/ucs-normalize.el (quick-check-list): Reuse a single
temp buffer for the whole loop.
This commit is contained in:
Noam Postavsky 2016-07-15 22:10:33 -04:00
parent eed3b46ca1
commit e333157cba

View file

@ -263,7 +263,7 @@ Note that Hangul are excluded.")
(defvar ucs-normalize-combining-chars-regexp nil
"Regular expression to match sequence of combining characters.")
(setq ucs-normalize-combining-chars-regexp
(eval-when-compile (concat (regexp-opt (mapcar 'char-to-string combining-chars)) "+")))
(eval-when-compile (concat (regexp-opt-charset combining-chars) "+")))
(declare-function decomposition-translation-alist "ucs-normalize"
(decomposition-function))
@ -396,20 +396,22 @@ If COMPOSITION-PREDICATE is not given, then do nothing."
It includes Singletons, CompositionExclusions, and Non-Starter
decomposition."
(let (entries decomposition composition)
(mapc
(lambda (start-end)
(cl-do ((i (car start-end) (+ i 1))) ((> i (cdr start-end)))
(setq decomposition
(string-to-list
(with-temp-buffer
(insert i)
(translate-region 1 2 decomposition-translation)
(buffer-string))))
(setq composition
(ucs-normalize-block-compose-chars decomposition composition-predicate))
(when (not (equal composition (list i)))
(setq entries (cons i entries)))))
check-range)
(with-temp-buffer
(mapc
(lambda (start-end)
(cl-do ((i (car start-end) (+ i 1))) ((> i (cdr start-end)))
(setq decomposition
(string-to-list
(progn
(erase-buffer)
(insert i)
(translate-region 1 2 decomposition-translation)
(buffer-string))))
(setq composition
(ucs-normalize-block-compose-chars decomposition composition-predicate))
(when (not (equal composition (list i)))
(setq entries (cons i entries)))))
check-range))
;;(remove-duplicates
(append entries
ucs-normalize-composition-exclusions
@ -431,7 +433,7 @@ decomposition."
(setq hfs-nfc-quick-check-list (quick-check-list 'ucs-normalize-hfs-nfd-table t ))
(defun quick-check-list-to-regexp (quick-check-list)
(regexp-opt (mapcar 'char-to-string (append quick-check-list combining-chars))))
(regexp-opt-charset (append quick-check-list combining-chars)))
(defun quick-check-decomposition-list-to-regexp (quick-check-list)
(concat (quick-check-list-to-regexp quick-check-list) "\\|[가-힣]"))