(defun gb-expand-slot-def () (interactive "") (let* ((p1 (point)) (p2 (progn (backward-sexp) (point))) (slot (buffer-substring p1 p2)) (class nil)) (delete-region p1 p2) (save-excursion (backward-up-list 2) (down-list) (forward-sexp) ;defclass (forward-sexp) ;end of class name (setf p2 (point)) (backward-sexp) ;start of class name (setf p1 (point))) (setf class (buffer-substring p1 p2)) (insert-string "(") (insert-string slot) (insert-string " :initarg :") (insert-string slot) (insert-string " :initform nil") (insert-string " :accessor ") (insert-string class) (insert-string "-") (insert-string slot) (insert-string ")")))