[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#4136: 23.1; delete-pair
From: |
Lars Ingebrigtsen |
Subject: |
bug#4136: 23.1; delete-pair |
Date: |
Mon, 14 Sep 2020 16:08:45 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
martin rudalics <rudalics@gmx.at> writes:
> Ne hlebom jedinnym. Why can't we be generous and provide something like
> the attached?
The patch no longer applied, so I've respun it for Emacs 28 (included
below).
The thread here ended with Martin and Juri both agreeing that this was a
good idea, but it was never applied?
I don't use delete-pair myself regularly, but giving it some testing
now, this new version seems to work fine.
Any comments? (The patch is 11 years old.)
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index 8c18557c79..ac4ba78897 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -735,12 +735,37 @@ insert-parentheses
(insert-pair arg ?\( ?\)))
(defun delete-pair (&optional arg)
- "Delete a pair of characters enclosing ARG sexps following point.
-A negative ARG deletes a pair of characters around preceding ARG sexps."
- (interactive "p")
- (unless arg (setq arg 1))
- (save-excursion (forward-sexp arg) (delete-char (if (> arg 0) -1 1)))
- (delete-char (if (> arg 0) 1 -1)))
+ "Delete a pair of characters enclosing ARG sexps that follow point.
+A negative ARG deletes a pair around the preceding ARG sexps instead."
+ (interactive "P")
+ (if arg
+ (setq arg (prefix-numeric-value arg))
+ (setq arg 1))
+ (if (< arg 0)
+ (save-excursion
+ (skip-chars-backward " \t")
+ (save-excursion
+ (let ((close-char (char-before)))
+ (forward-sexp arg)
+ (unless (member (list (char-after) close-char)
+ (mapcar (lambda (p)
+ (if (= (length p) 3) (cdr p) p))
+ insert-pair-alist))
+ (error "Not after matching pair"))
+ (delete-char 1)))
+ (delete-char -1))
+ (save-excursion
+ (skip-chars-forward " \t")
+ (save-excursion
+ (let ((open-char (char-after)))
+ (forward-sexp arg)
+ (unless (member (list open-char (char-before))
+ (mapcar (lambda (p)
+ (if (= (length p) 3) (cdr p) p))
+ insert-pair-alist))
+ (error "Not before matching pair"))
+ (delete-char -1)))
+ (delete-char 1))))
(defun raise-sexp (&optional arg)
"Raise ARG sexps higher up the tree."
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
- bug#4136: 23.1; delete-pair,
Lars Ingebrigtsen <=
- bug#4136: 23.1; delete-pair, Juri Linkov, 2020/09/14
- bug#4136: 23.1; delete-pair, Lars Ingebrigtsen, 2020/09/15
- bug#4136: 23.1; delete-pair, Juri Linkov, 2020/09/15
- bug#4136: 23.1; delete-pair, Lars Ingebrigtsen, 2020/09/17
- bug#4136: 23.1; delete-pair, Juri Linkov, 2020/09/18
- bug#4136: 23.1; delete-pair, Lars Ingebrigtsen, 2020/09/18
- bug#4136: 23.1; delete-pair, Juri Linkov, 2020/09/21
- bug#4136: 23.1; delete-pair, Lars Ingebrigtsen, 2020/09/22
- bug#4136: 23.1; delete-pair, Juri Linkov, 2020/09/22
- bug#4136: 23.1; delete-pair, Lars Ingebrigtsen, 2020/09/23