# HG changeset patch # User Steve Losh # Date 1467501547 0 # Node ID 60462d4304de4b60c9bb5c3c780682e8b0053562 # Parent cfbc5d205fbdd85f50b4aa56a67067281b64c83a Use in-package for arglist lookup diff -r cfbc5d205fbd -r 60462d4304de src/middleware/documentation.lisp --- a/src/middleware/documentation.lisp Sat Jul 02 17:20:41 2016 +0000 +++ b/src/middleware/documentation.lisp Sat Jul 02 23:19:07 2016 +0000 @@ -20,7 +20,7 @@ t) (values nil nil))) -(defun find-symbol-harder (name) +(defun find-symbol-harder (name &optional in-package) "Return the symbol object with the given `name`. This should work with names like: @@ -40,11 +40,12 @@ (cons nil s))))) (destructuring-bind (package-name . symbol-name) (split-string (string-upcase name) #\:) - (find-symbol symbol-name - (cond - ((null package-name) *package*) ; no : at all - ((string= "" package-name) (find-package "KEYWORD")) ; :keyw - (t (find-package package-name))))))) ; pack:sym + (find-symbol + symbol-name + (cond + ((null package-name) (parse-in-package in-package)) ; no : at all + ((string= "" package-name) (find-package "KEYWORD")) ; :keyw + (t (find-package package-name))))))) ; pack:sym (define-middleware wrap-documentation "documentation" message @@ -64,10 +65,12 @@ (princ-to-string (cons s arglist)))))))) (define-middleware wrap-arglist "arglist" message - (let ((s (find-symbol-harder (fset:lookup message "symbol")))) + (let ((s (find-symbol-harder + (fset:lookup message "symbol") + (fset:lookup message "in-package")))) (respond message (with-when - (make-map "status" '("done")) + (make-map "status" '("done")) "function-arglist" (multiple-value-bind (arglist foundp) (find-lambda-list s) diff -r cfbc5d205fbd -r 60462d4304de src/middleware/eval.lisp --- a/src/middleware/eval.lisp Sat Jul 02 17:20:41 2016 +0000 +++ b/src/middleware/eval.lisp Sat Jul 02 23:19:07 2016 +0000 @@ -69,10 +69,6 @@ #-sbcl "dunno")))))) (eval form)))) -(defun parse-in-package (in-package) - (if (null in-package) - *package* - (find-package (read-from-string in-package)))) (defun evaluate-forms (message forms &optional in-package) "Evaluate each form in `forms` and shuttle back the responses. diff -r cfbc5d205fbd -r 60462d4304de src/utils.lisp --- a/src/utils.lisp Sat Jul 02 17:20:41 2016 +0000 +++ b/src/utils.lisp Sat Jul 02 23:19:07 2016 +0000 @@ -73,3 +73,7 @@ :using (hash-value value) :collect (list key value)))) +(defun parse-in-package (in-package) + (if (null in-package) + *package* + (find-package (read-from-string in-package))))