Subject: bug#22147: Obsolete search-forward-lax-whitespace

From: Drew Adams <[email-masked]>
Date: Sat, 14 May 2016 15:27:05 -0700 (PDT)

> IIUC, Drew was offering an implementation of symmetric char folding,
> whereas the release blocking aspect of this bug is to add a
> char-folding-ad-hoc variable. 

That makes sense.

That too is in `character-fold+.el', which I attached to my previous message.
Dunno whether what I have there is exactly what you want/need.  This is it:

(defcustom char-fold-ad-hoc '((?\" "＂" "“" "”" "”" "„" "⹂" "〞" "‟" "‟" "❞" "❝"
                               "❠" "“" "„" "〝" "〟" "🙷" "🙶" "🙸" "«" "»")
                              (?' "❟" "❛" "❜" "‘" "’" "‚" "‛" "‚" "󠀢" "❮" "❯" "‹" "›")
                              (?` "❛" "‘" "‛" "󠀢" "❮" "‹"))
  "Ad hoc character foldings.
Each entry is a list of a character and the strings that fold into it.

The default value includes those ad hoc foldings provided by vanilla
Emacs."
  :set (lambda (sym defs)
         (custom-set-default sym defs)
         (update-char-fold-table))
  :type '(repeat (cons
                  (character :tag "Fold to character")
                  (repeat (string :tag "Fold from string"))))
  :group 'isearch)

And this is where it is used:

;; Add some manual entries.
(dolist (it  char-fold-ad-hoc)
  (let ((idx        (car it))
        (chr-strgs  (cdr it)))
    (aset equiv idx (append chr-strgs (aref equiv idx)))))