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

From: Dmitry Gutov <[email-masked]>
Date: Sun, 10 Jul 2016 21:42:50 +0300

On 07/10/2016 08:14 PM, Eli Zaretskii wrote:

>>  Does smartparens really care about this? Why?
>>
>> I’d imagine because of things like ruby’s do/end. It wouldn’t want to match DO/Do/etc.
>
> 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))))

?

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