|
|
- (eval-and-compile
- (require 'slime))
-
- (define-slime-contrib slime-fancy-inspector
- "Fancy inspector for CLOS objects."
- (:authors "Marco Baringer <mb@bese.it> and others")
- (:license "GPL")
- (:slime-dependencies slime-parse)
- (:swank-dependencies swank-fancy-inspector)
- (:on-load
- (add-hook 'slime-edit-definition-hooks 'slime-edit-inspector-part))
- (:on-unload
- (remove-hook 'slime-edit-definition-hooks 'slime-edit-inspector-part)))
-
- (defun slime-inspect-definition ()
- "Inspect definition at point"
- (interactive)
- (slime-inspect (slime-definition-at-point)))
-
- (defun slime-disassemble-definition ()
- "Disassemble definition at point"
- (interactive)
- (slime-eval-describe `(swank:disassemble-form
- ,(slime-definition-at-point t))))
-
- (defun slime-edit-inspector-part (name &optional where)
- (and (eq major-mode 'slime-inspector-mode)
- (cl-destructuring-bind (&optional property value)
- (slime-inspector-property-at-point)
- (when (eq property 'slime-part-number)
- (let ((location (slime-eval `(swank:find-definition-for-thing
- (swank:inspector-nth-part ,value))))
- (name (format "Inspector part %s" value)))
- (when (and (consp location)
- (not (eq (car location) :error)))
- (slime-edit-definition-cont
- (list (make-slime-xref :dspec `(,name)
- :location location))
- name
- where)))))))
-
- (provide 'slime-fancy-inspector)
|