]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/character-fold.el: Allow complex chars to match their decomposition
authorArtur Malabarba <bruce.connor.am@gmail.com>
Fri, 27 Nov 2015 12:01:12 +0000 (12:01 +0000)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Fri, 27 Nov 2015 12:01:12 +0000 (12:01 +0000)
(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.

lisp/character-fold.el

index 3d19d29b1f6c79c70e37b0548fb0caa27b4a4f46..4b526c2027716323dedc30465322617d3ec23e44 100644 (file)
       (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 'ä', 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.