Subject: bug#31155: 26.1; electric-pair-mode sometimes inserts extra ) in process buffers

From: Noam Postavsky <[email-masked]>
Date: Mon, 23 Apr 2018 19:23:15 -0400

Alex Branham <[email-masked]> writes:

> Sorry for taking so long to respond, it is difficult to capture this
> happening.

No worries, it takes as long as it takes.

> 1 -> (electric-pair-syntax-info 91)
> 1 <- electric-pair-syntax-info: (40 93 nil 79153)
> ======================================================================
> 1 -> (electric-pair--balance-info 1 79153)
> 1 <- electric-pair--balance-info: ((nil . 93) nil . 93)

> This happened when I typed (in an inferior R buffer):
>
> Rhats[[

Ah, this is a slightly different scenario than I thought, we're missing
close brackets, rather than inserting too many.  The
electric-pair--balance-info seems to be saying that you're inside a
string or comment.  Was that the case?  Or was there a stray quote in
the buffer?

Anyway, I think tracing a few more functions will be helpful:

    (dolist (fun '(electric-pair--balance-info
                   electric-pair-skip-if-helps-balance
                   electric-pair-inhibit-if-helps-balance
                   electric-pair-syntax-info
                   electric-pair-default-inhibit
                   electric-pair-default-skip-self
                   electric-pair-post-self-insert-function))
      (trace-function-background fun))