Apakah ada alternatif yang lebih baik untuk fungsi ini yang saya gunakan untuk menghapus parens di sekitar suatu wilayah? Saya mencari bawaan Emacs, atau sesuatu yang ditulis lebih baik, sesuatu yang akan menghilangkan pasangan di sekitar wilayah yang dipilih (mis: kurung, kurung keriting, tanda kutip ganda, tanda kutip tunggal)
(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))))))
sumber