(require 'slime) (require 'slime-cl-indent) (require 'cl-lib) (define-slime-contrib slime-indentation "Contrib interfacing `slime-cl-indent' and SLIME." (:swank-dependencies swank-indentation) (:on-load (setq common-lisp-current-package-function 'slime-current-package))) (defun slime-update-system-indentation (symbol indent packages) (let ((list (gethash symbol common-lisp-system-indentation)) (ok nil)) (if (not list) (puthash symbol (list (cons indent packages)) common-lisp-system-indentation) (dolist (spec list) (cond ((equal (car spec) indent) (dolist (p packages) (unless (member p (cdr spec)) (push p (cdr spec)))) (setf ok t)) (t (setf (cdr spec) (cl-set-difference (cdr spec) packages :test 'equal))))) (unless ok (puthash symbol (cons (cons indent packages) list) common-lisp-system-indentation))))) (provide 'slime-indentation)