Subject: bug#23928: 25.0.95; Performance regression observable with smartparens

From: Eli Zaretskii <[email-masked]>
Date: Sun, 10 Jul 2016 22:01:29 +0300

> Cc: [email-masked], [email-masked]
> From: Dmitry Gutov <[email-masked]>
> Date: Sun, 10 Jul 2016 21:42:50 +0300
> 
> > Then setting case-fold-search locally in the buffer (with setq-local
> > and its ilk) should do the trick.
> 
> Do you mean something like
> 
> (let (was-local was-value)
>    (unwind-protect
>        (progn
>          (when (local-variable-p 'case-fold-search)
>            (setq was-local t
>                  local-value case-fold-search))
>          (setq-local case-fold-search nil)
>          do-stuff)
>      (if was-local
>          (setq-local case-fold-search was-value)
>        (kill-local-variable 'case-fold-search))))
> 
> ?

Yes, something like that.  I admit I didn't study the code well enough
to figure out the details.

> (Minor modes are generally not expected to leave behind themselves 
> changes buffer-local values of general-purpose variables).

Of course.