Mi 5 centavos aquí también.
(setq skeleton-pair t)
(defvar skeletons-alist
'((?\(. ?\))
(?\" . ?\")
(?[ . ?])
(?{ . ?})
(?$ . ?$)))
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\'") 'skeleton-pair-insert-maybe)
siguiente consejo permitirá al retroceso que elimina los pares: un (|) b -> ab
(defadvice delete-backward-char (before delete-empty-pair activate)
(if (eq (cdr (assq (char-before) skeletons-alist)) (char-after))
(and (char-after) (delete-char 1))))
consejos A continuación hará backward-kill-word
(para mí es M-retroceso) para eliminar el par coincidente incluso si está separado por otro texto; muy útil.
(defadvice backward-kill-word (around delete-pair activate)
(if (eq (char-syntax (char-before)) ?\()
(progn
(backward-char 1)
(save-excursion
(forward-sexp 1)
(delete-char -1))
(forward-char 1)
(append-next-kill)
(kill-backward-chars 1))
ad-do-it))
Estoy tratando de pasar ahora a ser un crédito, sin embargo.
He usado un macro como antes, pero uso tantos editores diferentes hoy (emacs, vs, eclipse, pn) que no podía confiar en tal característica. En cambio, interioricé este comportamiento y apenas puedo escribir un carácter del lado izquierdo sin insertar reflexivamente el carácter equilibrado correspondiente. Los no programadores que me ven haciendo esto piensan que soy raro. – Zano