Moje 5 centów również tutaj.
(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)
Następny rada pozwoli Backspace celu usunięcie pary: a (|) 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))))
Następny rada uczyni backward-kill-word
(dla mnie jest M-Backspace) aby usunąć pasujący par, nawet jeśli jest oddzielony innym tekstem; bardzo przydatny.
(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))
Próbuję teraz przejść do pared.
Użyłem takiego makra wcześniej, ale używam tak wielu różnych edytorów dzisiaj (emacs, vs, eclipse, pn), że nie mogłem polegać na takiej funkcji. Zamiast tego zinternalizowałem to zachowanie i ledwo mogłem wpisać lewą stronę bez odruchowego wstawiania odpowiedniego zrównoważonego znaku. Nie-programiści, którzy widzą, że to robię, uważają mnie za dziwaka. – Zano