Có một sự thay thế tốt hơn cho chức năng này mà tôi sử dụng để loại bỏ các parens quanh một khu vực không? Tôi đang tìm kiếm một nội dung Emacs, hoặc một cái gì đó được viết tốt hơn, thứ gì đó sẽ loại bỏ bất kỳ cặp nào xung quanh khu vực đã chọn (ví dụ: ngoặc, ngoặc nhọn, dấu ngoặc kép, dấu ngoặc đơn)
(defun my-delete-surrounded-parens ()
(interactive)
;; save where region begins & ends
(let ((beginning (region-beginning))
(end (region-end)))
(cond ((not (eq (char-after beginning) ?\())
;; if region not begins by (, trigger error
(error "Char at region-begin not an open-parens"))
((not (eq (char-before end) ?\)))
;; if region not ends by ), trigger error
(error "Char at region-end not a close-parens"))
;; save mark, pt, current buffer & execute body
((save-excursion
(goto-char beginning)
(forward-sexp)
(not (eq (point) end)))
;; if parens are not balanced, trigger error
(error "parens not balanced"))
(t (save-excursion
(goto-char end)
(delete-char -1)
(goto-char beginning)
(delete-char 1))))))