From: Artur Malabarba <bruce.connor.am@gmail.com> Date: Fri, 27 Nov 2015 12:01:12 +0000 (+0000) Subject: * lisp/character-fold.el: Allow complex chars to match their decomposition X-Git-Tag: emacs-25.0.90~628 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a5f2970207d792e5f5d40160485007f282a0569d;p=emacs.git * lisp/character-fold.el: Allow complex chars to match their decomposition (character-fold-table): When a character's decomposition does not involve a formatting tag (i.e., if it has an "exact" description via other characters), then this character is allowed to match the decomposition. --- diff --git a/lisp/character-fold.el b/lisp/character-fold.el index 3d19d29b1f6..4b526c20277 100644 --- a/lisp/character-fold.el +++ b/lisp/character-fold.el @@ -38,9 +38,15 @@ (map-char-table (lambda (char decomp) (when (consp decomp) - ;; Discard a possible formatting tag. - (when (symbolp (car decomp)) - (setq decomp (cdr decomp))) + (if (symbolp (car decomp)) + ;; Discard a possible formatting tag. + (setq decomp (cdr decomp)) + ;; If there's no formatting tag, ensure that char matches + ;; its decomp exactly. This is because we want 'ä' to + ;; match 'aÌ', but we don't want '¹' to match '1'. + (aset equiv char + (cons (apply #'string decomp) + (aref equiv char)))) ;; Finally, figure out whether char has a simpler ;; equivalent (char-aux). If so, ensure that char-aux ;; matches char and maybe its decomp too.