GNU bug report logs -
#72437
Unexpected behavior when inserting with prefix arg in electric-pair-mode
Previous Next
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 72437 in the body.
You can then email your comments to 72437 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
eliz <at> gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 03 Aug 2024 07:14:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Joseph Turner <joseph <at> breatheoutbreathe.in>
:
New bug report received and forwarded. Copy sent to
eliz <at> gnu.org, bug-gnu-emacs <at> gnu.org
.
(Sat, 03 Aug 2024 07:14:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Migrated from this thread on the devel mailing list:
https://yhetil.org/emacs-devel/86ikwiumza.fsf <at> gnu.org/T/#t
On Emacs 29.4, with emacs -Q
Turn on electric-pair-mode
(electric-pair-mode +1)
Then press "C-2 ("
Expected result:
Either (()) or ()()
Actual result:
(()
I noticed the unexpected behavior when attempting to surround some text
with multiple braces in order to create Anki flashcards.
More or less, I wanted to go from "foo" to "{{foo}}", and I thought
perhaps that with the whole word selected, pressing "C-2 {" would DTRT.
In general, I'm not sure whether "{}{}" or "{{}}"is more useful or
expected, but I suspect both are better than "{{}".
Thank you!
Joseph
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 03 Aug 2024 09:13:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 72437 <at> debbugs.gnu.org (full text, mbox):
> Cc: eliz <at> gnu.org
> From: Joseph Turner <joseph <at> breatheoutbreathe.in>
> Date: Sat, 03 Aug 2024 00:12:33 -0700
>
> Migrated from this thread on the devel mailing list:
>
> https://yhetil.org/emacs-devel/86ikwiumza.fsf <at> gnu.org/T/#t
>
>
> On Emacs 29.4, with emacs -Q
>
> Turn on electric-pair-mode
>
> (electric-pair-mode +1)
>
> Then press "C-2 ("
>
> Expected result:
>
> Either (()) or ()()
>
> Actual result:
>
> (()
>
>
> I noticed the unexpected behavior when attempting to surround some text
> with multiple braces in order to create Anki flashcards.
>
> More or less, I wanted to go from "foo" to "{{foo}}", and I thought
> perhaps that with the whole word selected, pressing "C-2 {" would DTRT.
>
> In general, I'm not sure whether "{}{}" or "{{}}"is more useful or
> expected, but I suspect both are better than "{{}".
Making it produce "{}{}" is relatively easy: we just need to call the
post-self-insert-hook for each of the ARG inserted characters. OTOH,
to produce "{{}}" we'd probably need to rewrite the
electric-pair-mode's hook function, but I have no idea how to rewrite
it to do that.
Stefan, any suggestions?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 03 Aug 2024 11:06:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 72437 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> Cc: eliz <at> gnu.org
>> From: Joseph Turner <joseph <at> breatheoutbreathe.in>
>> Date: Sat, 03 Aug 2024 00:12:33 -0700
>>
>> Migrated from this thread on the devel mailing list:
>>
>> https://yhetil.org/emacs-devel/86ikwiumza.fsf <at> gnu.org/T/#t
>>
>>
>> On Emacs 29.4, with emacs -Q
>>
>> Turn on electric-pair-mode
>>
>> (electric-pair-mode +1)
>>
>> Then press "C-2 ("
>>
>> Expected result:
>>
>> Either (()) or ()()
>>
>> Actual result:
>>
>> (()
>>
>>
>> I noticed the unexpected behavior when attempting to surround some text
>> with multiple braces in order to create Anki flashcards.
>>
>> More or less, I wanted to go from "foo" to "{{foo}}", and I thought
>> perhaps that with the whole word selected, pressing "C-2 {" would DTRT.
>>
>> In general, I'm not sure whether "{}{}" or "{{}}"is more useful or
>> expected, but I suspect both are better than "{{}".
>
> Making it produce "{}{}" is relatively easy: we just need to call the
> post-self-insert-hook for each of the ARG inserted characters. OTOH,
> to produce "{{}}" we'd probably need to rewrite the
> electric-pair-mode's hook function, but I have no idea how to rewrite
> it to do that.
>
> Stefan, any suggestions?
I'm no Stefan, but I took a quick stab at it. The following diff
teaches electric-pair-mode about numeric prefix arguments:
diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el
index 40618e9ef38..1fae0ba6ba4 100644
--- a/lisp/elec-pair.el
+++ b/lisp/elec-pair.el
@@ -260,7 +260,7 @@ electric-pair-syntax-info
(list ?\( (cdr direct) t string-or-comment)))
(reverse (list ?\) (car reverse) t string-or-comment)))))
-(defun electric-pair--insert (char)
+(defun electric-pair--insert (char times)
(let ((last-command-event char)
(blink-matching-paren nil)
(electric-pair-mode nil)
@@ -271,7 +271,7 @@ electric-pair--insert
;; us to add these newlines, and is probably about to kick in
;; again after we add the closer.
(electric-layout-allow-duplicate-newlines t))
- (self-insert-command 1)))
+ (self-insert-command times)))
(defun electric-pair--syntax-ppss (&optional pos where)
"Like `syntax-ppss', but sometimes fallback to `parse-partial-sexp'.
@@ -455,7 +455,8 @@ electric-pair-inhibit-if-helps-balance
(atomic-change-group
;; Don't use `delete-char'; that may modify the head of the
;; undo list.
- (delete-region (point) (1- (point)))
+ (delete-region (- (point) (prefix-numeric-value current-prefix-arg))
+ (point))
(throw
'done
(cond ((eq ?\( syntax)
@@ -474,25 +475,26 @@ electric-pair-skip-if-helps-balance
Works by first removing the character from the buffer, then doing
some list calculations, finally restoring the situation as if nothing
happened."
- (pcase (electric-pair-syntax-info char)
- (`(,syntax ,pair ,_ ,s-or-c)
- (unwind-protect
- (progn
- (delete-char -1)
- (cond ((eq syntax ?\))
- (let* ((pair-data
- (electric-pair--balance-info
- -1 s-or-c))
- (innermost (car pair-data))
- (outermost (cdr pair-data)))
- (and
- (cond ((car outermost)
- (car innermost))
- ((car innermost)
- (not (eq (cdr outermost) pair)))))))
- ((eq syntax ?\")
- (electric-pair--inside-string-p char))))
- (insert char)))))
+ (let ((num (prefix-numeric-value current-prefix-arg)))
+ (pcase (electric-pair-syntax-info char)
+ (`(,syntax ,pair ,_ ,s-or-c)
+ (unwind-protect
+ (progn
+ (delete-char (- num))
+ (cond ((eq syntax ?\))
+ (let* ((pair-data
+ (electric-pair--balance-info
+ (- num) s-or-c))
+ (innermost (car pair-data))
+ (outermost (cdr pair-data)))
+ (and
+ (cond ((car outermost)
+ (car innermost))
+ ((car innermost)
+ (not (eq (cdr outermost) pair)))))))
+ ((eq syntax ?\")
+ (electric-pair--inside-string-p char))))
+ (insert (make-string num char)))))))
(defun electric-pair-default-skip-self (char)
(if electric-pair-preserve-balance
@@ -527,11 +529,14 @@ electric-pair-post-self-insert-function
`electric-pair-inhibit-predicate', `electric-pair-skip-self'
and `electric-pair-skip-whitespace' (which see)."
(let* ((pos (and electric-pair-mode (electric--after-char-pos)))
+ (num (when pos (prefix-numeric-value current-prefix-arg)))
+ (beg (when num (- pos num)))
(skip-whitespace-info))
(pcase (electric-pair-syntax-info last-command-event)
(`(,syntax ,pair ,unconditional ,_)
(cond
((null pos) nil)
+ ((zerop num) nil)
;; Wrap a pair around the active region.
;;
((and (memq syntax '(?\( ?\) ?\" ?\$)) (use-region-p))
@@ -545,23 +550,24 @@ electric-pair-post-self-insert-function
(>= (mark) (point))))
(save-excursion
(goto-char (mark))
- (electric-pair--insert pair))
- (delete-region pos (1- pos))
- (electric-pair--insert pair)
+ (electric-pair--insert pair num))
+ (delete-region beg pos)
+ (electric-pair--insert pair num)
(goto-char (mark))
- (electric-pair--insert last-command-event)))
+ (electric-pair--insert last-command-event num)))
;; Backslash-escaped: no pairing, no skipping.
((save-excursion
- (goto-char (1- pos))
+ (goto-char beg)
(not (zerop (% (skip-syntax-backward "\\") 2))))
- nil)
+ (let ((current-prefix-arg (1- num)))
+ (electric-pair-post-self-insert-function)))
;; Skip self.
((and (memq syntax '(?\) ?\" ?\$))
(and (or unconditional
(if (functionp electric-pair-skip-self)
(electric-pair--save-literal-point-excursion
- (goto-char pos)
- (funcall electric-pair-skip-self last-command-event))
+ (goto-char pos)
+ (funcall electric-pair-skip-self last-command-event))
electric-pair-skip-self))
(save-excursion
(when (and (not (and unconditional
@@ -580,19 +586,19 @@ electric-pair-post-self-insert-function
;; live with it for now.
(when skip-whitespace-info
(funcall electric-pair-skip-whitespace-function))
- (delete-region (1- pos) (if (eq skip-whitespace-info 'chomp)
- (point)
- pos))
- (forward-char))
+ (delete-region beg (if (eq skip-whitespace-info 'chomp)
+ (point)
+ pos))
+ (forward-char num))
;; Insert matching pair.
((and (memq syntax '(?\( ?\" ?\$))
(not overwrite-mode)
(or unconditional
(not (electric-pair--save-literal-point-excursion
- (goto-char pos)
- (funcall electric-pair-inhibit-predicate
- last-command-event)))))
- (save-excursion (electric-pair--insert pair))))))))
+ (goto-char pos)
+ (funcall electric-pair-inhibit-predicate
+ last-command-event)))))
+ (save-excursion (electric-pair--insert pair num))))))))
(defun electric-pair-open-newline-between-pairs-psif ()
"Honor `electric-pair-open-newline-between-pairs'.
@@ -604,7 +610,8 @@ electric-pair-open-newline-between-pairs-psif
(< (1+ (point-min)) (point) (point-max))
(eq (save-excursion
(skip-chars-backward "\t\s")
- (char-before (1- (point))))
+ (char-before (- (point)
+ (prefix-numeric-value current-prefix-arg))))
(matching-paren (char-after))))
(save-excursion (newline 1 t))))
@@ -618,7 +625,7 @@ electric-pair-delete-pair
ARG and KILLP are passed directly to
`backward-delete-char-untabify', which see."
(interactive "*p\nP")
- (delete-char 1)
+ (delete-char arg)
(backward-delete-char-untabify arg killp))
(defvar electric-pair-mode-map
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 03 Aug 2024 15:42:01 GMT)
Full text and
rfc822 format available.
Message #14 received at 72437 <at> debbugs.gnu.org (full text, mbox):
> From: Eshel Yaron <me <at> eshelyaron.com>
> Cc: Joseph Turner <joseph <at> breatheoutbreathe.in>, Stefan Monnier
> <monnier <at> iro.umontreal.ca>, 72437 <at> debbugs.gnu.org
> Date: Sat, 03 Aug 2024 13:04:58 +0200
>
> Eli Zaretskii <eliz <at> gnu.org> writes:
>
> > post-self-insert-hook for each of the ARG inserted characters. OTOH,
> > to produce "{{}}" we'd probably need to rewrite the
> > electric-pair-mode's hook function, but I have no idea how to rewrite
> > it to do that.
> >
> > Stefan, any suggestions?
>
> I'm no Stefan, but I took a quick stab at it. The following diff
> teaches electric-pair-mode about numeric prefix arguments:
Thanks, but isn't it cleaner if we simply call the hook from cmds.c
the same number of times as we insert a character?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 03 Aug 2024 18:19:01 GMT)
Full text and
rfc822 format available.
Message #17 received at 72437 <at> debbugs.gnu.org (full text, mbox):
Hi Eli,
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: Eshel Yaron <me <at> eshelyaron.com>
>> Cc: Joseph Turner <joseph <at> breatheoutbreathe.in>, Stefan Monnier
>> <monnier <at> iro.umontreal.ca>, 72437 <at> debbugs.gnu.org
>> Date: Sat, 03 Aug 2024 13:04:58 +0200
>>
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>
>> > post-self-insert-hook for each of the ARG inserted characters. OTOH,
>> > to produce "{{}}" we'd probably need to rewrite the
>> > electric-pair-mode's hook function, but I have no idea how to rewrite
>> > it to do that.
>> >
>> > Stefan, any suggestions?
>>
>> I'm no Stefan, but I took a quick stab at it. The following diff
>> teaches electric-pair-mode about numeric prefix arguments:
>
> Thanks, but isn't it cleaner if we simply call the hook from cmds.c
> the same number of times as we insert a character?
Interesting, it might work for electric-pair-mode, though I suspect that
not all functions that people put on post-self-insert-hook are prepared
to be invoked repeatedly following a single self-insert-command.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 03 Aug 2024 18:47:02 GMT)
Full text and
rfc822 format available.
Message #20 received at 72437 <at> debbugs.gnu.org (full text, mbox):
> From: Eshel Yaron <me <at> eshelyaron.com>
> Cc: joseph <at> breatheoutbreathe.in, monnier <at> iro.umontreal.ca,
> 72437 <at> debbugs.gnu.org
> Date: Sat, 03 Aug 2024 20:18:06 +0200
>
> >> I'm no Stefan, but I took a quick stab at it. The following diff
> >> teaches electric-pair-mode about numeric prefix arguments:
> >
> > Thanks, but isn't it cleaner if we simply call the hook from cmds.c
> > the same number of times as we insert a character?
>
> Interesting, it might work for electric-pair-mode, though I suspect that
> not all functions that people put on post-self-insert-hook are prepared
> to be invoked repeatedly following a single self-insert-command.
It isn't a single self-insert-command, since it inserts N characters.
So it is natural to expect the hook to be invoked those same N times.
I think. Let's hear what Stefan thinks (and anyone else who has an
opinion or some case other than electric-pair-mode).
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Wed, 14 Aug 2024 00:59:01 GMT)
Full text and
rfc822 format available.
Message #23 received at 72437 <at> debbugs.gnu.org (full text, mbox):
Hi João,
Do you have a good idea of how to make
C-M-SPC C-2 {
wrap the selected word within two braces?
Stefan
Eli Zaretskii [2024-08-03 12:12:06] wrote:
>> Cc: eliz <at> gnu.org
>> From: Joseph Turner <joseph <at> breatheoutbreathe.in>
>> Date: Sat, 03 Aug 2024 00:12:33 -0700
>>
>> Migrated from this thread on the devel mailing list:
>>
>> https://yhetil.org/emacs-devel/86ikwiumza.fsf <at> gnu.org/T/#t
>>
>>
>> On Emacs 29.4, with emacs -Q
>>
>> Turn on electric-pair-mode
>>
>> (electric-pair-mode +1)
>>
>> Then press "C-2 ("
>>
>> Expected result:
>>
>> Either (()) or ()()
>>
>> Actual result:
>>
>> (()
>>
>>
>> I noticed the unexpected behavior when attempting to surround some text
>> with multiple braces in order to create Anki flashcards.
>>
>> More or less, I wanted to go from "foo" to "{{foo}}", and I thought
>> perhaps that with the whole word selected, pressing "C-2 {" would DTRT.
>>
>> In general, I'm not sure whether "{}{}" or "{{}}"is more useful or
>> expected, but I suspect both are better than "{{}".
>
> Making it produce "{}{}" is relatively easy: we just need to call the
> post-self-insert-hook for each of the ARG inserted characters. OTOH,
> to produce "{{}}" we'd probably need to rewrite the
> electric-pair-mode's hook function, but I have no idea how to rewrite
> it to do that.
>
> Stefan, any suggestions?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Wed, 14 Aug 2024 01:02:02 GMT)
Full text and
rfc822 format available.
Message #26 received at 72437 <at> debbugs.gnu.org (full text, mbox):
> It isn't a single self-insert-command, since it inserts N characters.
> So it is natural to expect the hook to be invoked those same N times.
> I think. Let's hear what Stefan thinks (and anyone else who has an
> opinion or some case other than electric-pair-mode).
I think the requested behavior makes a lot of sense, but I lost touch
with the way elec-pair works and interacts with other electric modes, so
I'm not sure how to make it work without breaking other things.
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Wed, 14 Aug 2024 05:09:02 GMT)
Full text and
rfc822 format available.
Message #29 received at submit <at> debbugs.gnu.org (full text, mbox):
Hi Stefan,
Stefan Monnier writes:
>> Let's hear what Stefan thinks (and anyone else who has an
>> opinion or some case other than electric-pair-mode).
>
> I think the requested behavior makes a lot of sense, but I lost touch
> with the way elec-pair works and interacts with other electric modes, so
> I'm not sure how to make it work without breaking other things.
In case you missed it, the patch I shared upthread might give you
some ideas. It implements the requested behavior, safely, I think.
So I would just ask Joseph to try it out for a while and see if it
works as expected and if any other issues crop up :)
Cheers,
Eshel
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Wed, 14 Aug 2024 05:09:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Wed, 14 Aug 2024 11:41:01 GMT)
Full text and
rfc822 format available.
Message #35 received at 72437 <at> debbugs.gnu.org (full text, mbox):
> In case you missed it, the patch I shared upthread might give you
> some ideas. It implements the requested behavior, safely, I think.
> So I would just ask Joseph to try it out for a while and see if it
> works as expected and if any other issues crop up :)
I missed that, indeed, sorry. Then maybe we should just push it to
`master` (with appropriate regression test(s)).
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Fri, 16 Aug 2024 21:25:02 GMT)
Full text and
rfc822 format available.
Message #38 received at 72437 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Wed, Aug 14, 2024, 01:57 Stefan Monnier <monnier <at> iro.umontreal.ca> wrote:
> Hi João,
>
> Do you have a good idea of how to make
>
> C-M-SPC C-2 {
>
> wrap the selected word within two braces?
>
No great ideas no. Does it even work in the non-wrapping case? The intended
result is as if the command was run twice, no? So maybe try somehow that
the whole thing is run twice/thrice/etc...
João
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 17 Aug 2024 06:10:02 GMT)
Full text and
rfc822 format available.
Message #41 received at 72437 <at> debbugs.gnu.org (full text, mbox):
> Cc: 72437 <at> debbugs.gnu.org, Joseph Turner <joseph <at> breatheoutbreathe.in>
> From: João Távora <joaotavora <at> gmail.com>
> Date: Fri, 16 Aug 2024 22:22:29 +0100
>
> On Wed, Aug 14, 2024, 01:57 Stefan Monnier <monnier <at> iro.umontreal.ca> wrote:
>
> Hi João,
>
> Do you have a good idea of how to make
>
> C-M-SPC C-2 {
>
> wrap the selected word within two braces?
>
> No great ideas no. Does it even work in the non-wrapping case? The intended result is as if the command was
> run twice, no? So maybe try somehow that the whole thing is run twice/thrice/etc...
That's what I suggested, but the result is "{}{}{}{}...", which is not
what was requested. IOW, what is being requested is NOT what happens
when running this command N times, it should be a special handling of
the numerical argument.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 17 Aug 2024 06:30:02 GMT)
Full text and
rfc822 format available.
Message #44 received at 72437 <at> debbugs.gnu.org (full text, mbox):
On August 13, 2024 10:07:23 PM PDT, Eshel Yaron <me <at> eshelyaron.com> wrote:
>Hi Stefan,
>
>Stefan Monnier writes:
>
>>> Let's hear what Stefan thinks (and anyone else who has an
>>> opinion or some case other than electric-pair-mode).
>>
>> I think the requested behavior makes a lot of sense, but I lost touch
>> with the way elec-pair works and interacts with other electric modes, so
>> I'm not sure how to make it work without breaking other things.
>
>In case you missed it, the patch I shared upthread might give you
>some ideas. It implements the requested behavior, safely, I think.
>So I would just ask Joseph to try it out for a while and see if it
>works as expected and if any other issues crop up :)
Thanks for this patch! I am testing it in my daily config. So far so good, and I'll report back after a few weeks of usage.
Warmly,
Joseph
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 17 Aug 2024 06:32:01 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 17 Aug 2024 09:33:01 GMT)
Full text and
rfc822 format available.
Message #50 received at 72437 <at> debbugs.gnu.org (full text, mbox):
On Sat, Aug 17, 2024 at 7:08 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> That's what I suggested, but the result is "{}{}{}{}...", which is not
> what was requested.
If the preconditions are that a word is selected before each command,
I don't see how that can be. At the very least it would be {word}{}{}{}
or something like that. But if you arrange for word to stay selected and
point before it, I don't see why {{{{word}}}} can't be achieved. Doesn't
have to be word at all, could be an arbitrary sexp, IIRC. Anyway,
that's all I have.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 17 Aug 2024 14:05:02 GMT)
Full text and
rfc822 format available.
Message #53 received at 72437 <at> debbugs.gnu.org (full text, mbox):
> That's what I suggested, but the result is "{}{}{}{}...", which is not
For me `C-u 2 (` results in `(()`.
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 17 Aug 2024 14:23:01 GMT)
Full text and
rfc822 format available.
Message #56 received at 72437 <at> debbugs.gnu.org (full text, mbox):
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: João Távora <joaotavora <at> gmail.com>,
> 72437 <at> debbugs.gnu.org,
> joseph <at> breatheoutbreathe.in
> Date: Sat, 17 Aug 2024 10:03:38 -0400
>
> > That's what I suggested, but the result is "{}{}{}{}...", which is not
>
> For me `C-u 2 (` results in `(()`.
I suggested a change which would yield ()(). Without the change, you
shouldn't expect getting anything useful, because the hook is called
just once, not ARG times.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Thu, 19 Sep 2024 05:16:02 GMT)
Full text and
rfc822 format available.
Message #59 received at submit <at> debbugs.gnu.org (full text, mbox):
Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
> On August 13, 2024 10:07:23 PM PDT, Eshel Yaron <me <at> eshelyaron.com> wrote:
>>Hi Stefan,
>>
>>Stefan Monnier writes:
>>
>>>> Let's hear what Stefan thinks (and anyone else who has an
>>>> opinion or some case other than electric-pair-mode).
>>>
>>> I think the requested behavior makes a lot of sense, but I lost touch
>>> with the way elec-pair works and interacts with other electric modes, so
>>> I'm not sure how to make it work without breaking other things.
>>
>>In case you missed it, the patch I shared upthread might give you
>>some ideas. It implements the requested behavior, safely, I think.
>>So I would just ask Joseph to try it out for a while and see if it
>>works as expected and if any other issues crop up :)
>
> Thanks for this patch! I am testing it in my daily config. So far so good, and I'll report back after a few weeks of usage.
I have been running this patch for over a month with no issue. I vote
to merge it!
Thank you!
Joseph
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Thu, 19 Sep 2024 05:16:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 21 Sep 2024 10:25:02 GMT)
Full text and
rfc822 format available.
Message #65 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
> Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
>
>> On August 13, 2024 10:07:23 PM PDT, Eshel Yaron <me <at> eshelyaron.com> wrote:
>>>Hi Stefan,
>>>
>>>Stefan Monnier writes:
>>>
>>>>> Let's hear what Stefan thinks (and anyone else who has an
>>>>> opinion or some case other than electric-pair-mode).
>>>>
>>>> I think the requested behavior makes a lot of sense, but I lost touch
>>>> with the way elec-pair works and interacts with other electric modes, so
>>>> I'm not sure how to make it work without breaking other things.
>>>
>>>In case you missed it, the patch I shared upthread might give you
>>>some ideas. It implements the requested behavior, safely, I think.
>>>So I would just ask Joseph to try it out for a while and see if it
>>>works as expected and if any other issues crop up :)
>>
>> Thanks for this patch! I am testing it in my daily config. So far
>> so good, and I'll report back after a few weeks of usage.
>
> I have been running this patch for over a month with no issue.
That's great, thanks for testing it and for reporting back!
> I vote to merge it!
Agreed. Here's a full patch with tests, doc updates and a NEWS entry:
[0001-Teach-Electric-Pair-mode-about-prefix-arguments.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 21 Sep 2024 10:25:06 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 21 Sep 2024 17:26:02 GMT)
Full text and
rfc822 format available.
Message #71 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Eshel Yaron <me <at> eshelyaron.com> writes:
> Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
>
>> Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
>>
>>> On August 13, 2024 10:07:23 PM PDT, Eshel Yaron <me <at> eshelyaron.com> wrote:
>>>>Hi Stefan,
>>>>
>>>>Stefan Monnier writes:
>>>>
>>>>>> Let's hear what Stefan thinks (and anyone else who has an
>>>>>> opinion or some case other than electric-pair-mode).
>>>>>
>>>>> I think the requested behavior makes a lot of sense, but I lost touch
>>>>> with the way elec-pair works and interacts with other electric modes, so
>>>>> I'm not sure how to make it work without breaking other things.
>>>>
>>>>In case you missed it, the patch I shared upthread might give you
>>>>some ideas. It implements the requested behavior, safely, I think.
>>>>So I would just ask Joseph to try it out for a while and see if it
>>>>works as expected and if any other issues crop up :)
>>>
>>> Thanks for this patch! I am testing it in my daily config. So far
>>> so good, and I'll report back after a few weeks of usage.
>>
>> I have been running this patch for over a month with no issue.
>
> That's great, thanks for testing it and for reporting back!
>
>> I vote to merge it!
>
> Agreed. Here's a full patch with tests, doc updates and a NEWS entry:
Nice! How about also adding a test like the attached patch?
[0001-Test-behavior-with-prefix-argument.patch (text/x-diff, inline)]
From 414a4b1fa09b0b976e74144430871b1b5a9ddbbe Mon Sep 17 00:00:00 2001
From: Joseph Turner <joseph <at> breatheoutbreathe.in>
Date: Sat, 21 Sep 2024 10:23:07 -0700
Subject: [PATCH] Test behavior with prefix argument
* test/lisp/electric-tests.el (electric-pair-backspace-2)
---
test/lisp/electric-tests.el | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el
index 720313511a6..f1742fe3f0b 100644
--- a/test/lisp/electric-tests.el
+++ b/test/lisp/electric-tests.el
@@ -562,6 +562,14 @@ electric-pair-backspace-1
(electric-pair-delete-pair 1)
(should (equal "" (buffer-string))))))
+(ert-deftest electric-pair-backspace-2 ()
+ (save-electric-modes
+ (with-temp-buffer
+ (insert "((()))")
+ (goto-char 4)
+ (electric-pair-delete-pair 2)
+ (should (equal "()" (buffer-string))))))
+
;;; Undoing
(ert-deftest electric-pair-undo-unrelated-state ()
--
2.46.0
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sat, 21 Sep 2024 17:26:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sun, 22 Sep 2024 08:22:02 GMT)
Full text and
rfc822 format available.
Message #77 received at 72437 <at> debbugs.gnu.org (full text, mbox):
close 72437 31.1
quit
Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
> Eshel Yaron <me <at> eshelyaron.com> writes:
>
>> Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
>>
>>> Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
>>>
>>>> On August 13, 2024 10:07:23 PM PDT, Eshel Yaron <me <at> eshelyaron.com> wrote:
>>>>>Hi Stefan,
>>>>>
>>>>>Stefan Monnier writes:
>>>>>
>>>>>>> Let's hear what Stefan thinks (and anyone else who has an
>>>>>>> opinion or some case other than electric-pair-mode).
>>>>>>
>>>>>> I think the requested behavior makes a lot of sense, but I lost touch
>>>>>> with the way elec-pair works and interacts with other electric modes, so
>>>>>> I'm not sure how to make it work without breaking other things.
>>>>>
>>>>>In case you missed it, the patch I shared upthread might give you
>>>>>some ideas. It implements the requested behavior, safely, I think.
>>>>>So I would just ask Joseph to try it out for a while and see if it
>>>>>works as expected and if any other issues crop up :)
>>>>
>>>> Thanks for this patch! I am testing it in my daily config. So far
>>>> so good, and I'll report back after a few weeks of usage.
>>>
>>> I have been running this patch for over a month with no issue.
>>
>> That's great, thanks for testing it and for reporting back!
>>
>>> I vote to merge it!
>>
>> Agreed. Here's a full patch with tests, doc updates and a NEWS entry:
>
> Nice! How about also adding a test like the attached patch?
Looks good :)
I've now pushed my patch to master as a7192fd7b73 followed by your test
addition as 0f4c09d2678. And with that, I'm closing this bug.
Best,
Eshel
bug marked as fixed in version 31.1, send any further explanations to
72437 <at> debbugs.gnu.org and Joseph Turner <joseph <at> breatheoutbreathe.in>
Request was from
Eshel Yaron <me <at> eshelyaron.com>
to
control <at> debbugs.gnu.org
.
(Sun, 22 Sep 2024 08:22:03 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#72437
; Package
emacs
.
(Sun, 22 Sep 2024 19:34:02 GMT)
Full text and
rfc822 format available.
Message #82 received at 72437 <at> debbugs.gnu.org (full text, mbox):
On September 22, 2024 1:21:13 AM PDT, Eshel Yaron <me <at> eshelyaron.com> wrote:
>close 72437 31.1
>quit
>
>Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
>
>> Eshel Yaron <me <at> eshelyaron.com> writes:
>>
>>> Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
>>>
>>>> Joseph Turner <joseph <at> breatheoutbreathe.in> writes:
>>>>
>>>>> On August 13, 2024 10:07:23 PM PDT, Eshel Yaron <me <at> eshelyaron.com> wrote:
>>>>>>Hi Stefan,
>>>>>>
>>>>>>Stefan Monnier writes:
>>>>>>
>>>>>>>> Let's hear what Stefan thinks (and anyone else who has an
>>>>>>>> opinion or some case other than electric-pair-mode).
>>>>>>>
>>>>>>> I think the requested behavior makes a lot of sense, but I lost touch
>>>>>>> with the way elec-pair works and interacts with other electric modes, so
>>>>>>> I'm not sure how to make it work without breaking other things.
>>>>>>
>>>>>>In case you missed it, the patch I shared upthread might give you
>>>>>>some ideas. It implements the requested behavior, safely, I think.
>>>>>>So I would just ask Joseph to try it out for a while and see if it
>>>>>>works as expected and if any other issues crop up :)
>>>>>
>>>>> Thanks for this patch! I am testing it in my daily config. So far
>>>>> so good, and I'll report back after a few weeks of usage.
>>>>
>>>> I have been running this patch for over a month with no issue.
>>>
>>> That's great, thanks for testing it and for reporting back!
>>>
>>>> I vote to merge it!
>>>
>>> Agreed. Here's a full patch with tests, doc updates and a NEWS entry:
>>
>> Nice! How about also adding a test like the attached patch?
>
>Looks good :)
>
>I've now pushed my patch to master as a7192fd7b73 followed by your test
>addition as 0f4c09d2678. And with that, I'm closing this bug.
Thank you!!
Joseph
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Mon, 21 Oct 2024 11:24:05 GMT)
Full text and
rfc822 format available.
This bug report was last modified 301 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.