]> git.eshelyaron.com Git - emacs.git/commitdiff
Teach Electric Pair mode about prefix arguments
authorEshel Yaron <me@eshelyaron.com>
Sat, 21 Sep 2024 10:15:16 +0000 (12:15 +0200)
committerEshel Yaron <me@eshelyaron.com>
Mon, 23 Sep 2024 11:59:02 +0000 (13:59 +0200)
* lisp/elec-pair.el (electric-pair--insert): New arg TIMES.
(electric-pair-inhibit-if-helps-balance)
(electric-pair-post-self-insert-function)
(electric-pair-open-newline-between-pairs-psif)
(electric-pair-skip-if-helps-balance): Respect prefix arg.
(electric-pair-delete-pair): Delete ARG chars, not just 1.
* test/lisp/electric-tests.el (autowrapping-multi-1)
(autowrapping-multi-2): New tests.
* doc/emacs/programs.texi (Matching): Mention prefix arg
support in Electric Pair mode documentation.
* etc/NEWS: Announce it.  (Bug#72437)

(cherry picked from commit a7192fd7b7355f13ff3002dba14c6acdabad5b5e)

doc/emacs/programs.texi
etc/NEWS
test/lisp/electric-tests.el

index d5be29dfd2399475f45ef16d3fd6acaf8c447ae0..7694ed1a7066724cdce6ebb8b45b1b9884a3e877 100644 (file)
@@ -1029,7 +1029,9 @@ one, no insertion takes places, and that position is simply skipped
 over.  If the region is active (@pxref{Mark}), insertion of a
 delimiter operates on the region: the characters in the region are
 enclosed in a pair of matching delimiters, leaving point after the
-delimiter you typed.
+delimiter you typed.  If you provide a prefix argument when inserting
+a delimiter, the numeric value of that prefix argument specifies the
+number of pairs to insert.
 
 These variables control additional features of Electric Pair mode:
 
index 541e5edfe8082e0051e990eda7442dbee4546f15..30b8c8fae9871f5bd828764e46d0e8db256582fe 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -133,6 +133,12 @@ This option, if non-nil, makes 'delete-pair' push a mark at the end of
 the region enclosed by the deleted delimiters.  This makes it easy to
 act on that region.  For example, we can highlight it using 'C-x C-x'.
 
++++
+** Electric Pair mode can now pair multiple delimiters at once.
+You can now insert or wrap text with multiple sets of parentheses and
+other matching delimiters at once with Electric Pair mode, by providing
+a prefix argument when inserting one of the delimiters.
+
 \f
 * Changes in Specialized Modes and Packages in Emacs 31.1
 
index 41f0550e71185b0c4b3690fe0ceaad9d6d5affd4..8d10ea80073d3527cbd78797e2767d5cb93b8d1d 100644 (file)
@@ -628,6 +628,22 @@ baz\"\""
                 (skip-chars-backward "\"")
                 (mark-sexp -1)))
 
+(define-electric-pair-test autowrapping-multi-1
+ "foo" "(" :expected-string "(((((foo)))))" :expected-point 6
+  :bindings '((current-prefix-arg . 5))
+  :fixture-fn (lambda ()
+                (electric-pair-mode 1)
+                (mark-sexp 1)))
+
+(define-electric-pair-test autowrapping-multi-2
+ "foo" ")" :expected-string "(((((foo)))))" :expected-point 14
+  :bindings '((current-prefix-arg . 5))
+  :fixture-fn (lambda ()
+                (electric-pair-mode 1)
+                (goto-char (point-max))
+                (skip-chars-backward "\"")
+                (mark-sexp -1)))
+
 \f
 ;;; Electric quotes
 (define-electric-pair-test electric-quote-string