Hello,
I've attached an extensible browser that I hope is useful and simple enough. It uses a lazy mechanism to expand the information required, so that it can be used to explore large systems. Currently it permits to explore class hierarchies and some xref information. I've a big hack that permits to see trace output in a tree-like fashion, but it's very ugly and implementation dependent and so it hasn't been included.
A small interface in swank.lisp is needed, using the new API to MOP in the swank-backend: (defun class-direct-classes (class-name fn) (let ((class (find-class class-name nil))) (when class (mapcar #'(lambda (x) (symbol-name (class-name x))) (funcall fn class)))))
(defslimefun mop (type symbol-name) "Return info about classes using mop.
When type is: :subclasses - return the list of subclasses of class. :superclasses - return the list of superclasses of class." (let ((symbol (parse-symbol-or-lose symbol-name *buffer-package*))) (ecase type (:subclasses (class-direct-classes symbol #'swank-mop:class-direct-subclasses)) (:superclasses (class-direct-classes symbol #'swank-mop:class-direct-superclasses)))))
Rui Patrocínio
Rui Patrocínio rui.patrocinio@netvisao.pt writes:
I've attached an extensible browser that I hope is useful and simple enough. It uses a lazy mechanism to expand the information required, so that it can be used to explore large systems. Currently it permits to explore class hierarchies and some xref information. I've a big hack that permits to see trace output in a tree-like fashion, but it's very ugly and implementation dependent and so it hasn't been included.
I think this stuff is pretty cool stuff and it's now in CVS. I've taken the freedom to replace the widget code with David Ponce's tree-widget.el which is included in CVS Emacs. I hope his tree widget is up to the task.
Helmut.