(defun categorize-symbols (paths package)
(mapcar (lambda (assoc)
(let ((home (car assoc))
- (symbols (sort (mapcan (lambda (sym)
- (multiple-value-bind
- (symbol foundp)
- (find-symbol (symbol-name sym)
- package)
- (and foundp (list symbol))))
- (cdr assoc))
- #'string< :key #'symbol-name)))
+ (symbols (delete-duplicates
+ (sort (mapcan (lambda (sym)
+ (multiple-value-bind
+ (symbol foundp)
+ (find-symbol
+ (symbol-name sym)
+ package)
+ (and foundp (list symbol))))
+ (cdr assoc))
+ #'string< :key #'symbol-name))))
(cons home (mapcar (lambda (symbol)
(cons symbol (categorize symbol)))
symbols))))
(let* ((pkg (symbol-package symbol))
(exportp (member symbol (list-exported-symbols pkg))))
(format nil "~(~:[~A:~:[:~;~]~;~2*~]~A~)"
- (and exportp (eq pkg package)) (best-package-name pkg)
+ (and exportp (eq pkg package))
+ (if (keywordp symbol) "" (best-package-name pkg))
exportp (symbol-name symbol))))
(defun analyse-classes (package)
(pretty-symbol-name sym package)
(cdr def))))
(terpri)))
+ (format t "Classes:~%")
(analyse-classes package)
(terpri))