summaryrefslogtreecommitdiff
path: root/lisp/international/ucs-normalize.el
diff options
context:
space:
mode:
authorNoam Postavsky <npostavs@gmail.com>2016-07-15 22:10:33 -0400
committerNoam Postavsky <npostavs@gmail.com>2016-07-16 13:01:04 -0400
commite333157cba3b4ffd7c25f8210a6aa5a21ae10de7 (patch)
tree79efedb617ab550d12981778eccc7258fdea0ad4 /lisp/international/ucs-normalize.el
parenteed3b46ca184b5bca1dc341e3204f1539b831104 (diff)
downloademacs-e333157cba3b4ffd7c25f8210a6aa5a21ae10de7.tar.gz
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.
Diffstat (limited to 'lisp/international/ucs-normalize.el')
-rw-r--r--lisp/international/ucs-normalize.el34
1 files changed, 18 insertions, 16 deletions
diff --git a/lisp/international/ucs-normalize.el b/lisp/international/ucs-normalize.el
index 4b364ee4ebb..ac2a0d9e778 100644
--- a/lisp/international/ucs-normalize.el
+++ b/lisp/international/ucs-normalize.el
@@ -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) "\\|[가-힣]"))