Jeffrey Cunningham jeffrey@jkcunningham.com writes:
On 10/30/2013 02:22 PM, Christophe Rhodes wrote:
As I have said in other mails, this is not the normal way of using the system. Using REQUIRE in source files is unusual; so too is not having the depended-on systems already compiled, which perhaps explains why it's taken this long just to understand your problem. (In general triggering a file compilation from within LOAD or COMPILE-FILE is hazardous; it doesn't completely surprise me that not everything is actually totally correct). You would make your life easier by writing your own defsystem forms which declare the relevant dependencies on other systems. Christophe
Okay, I tried the following in a new source file test2.lisp with a fresh emacs and slime environment.
(asdf:defsystem #:test2 :depends-on (:cl-ppcre))) (asdf:load-system "test2") (describe 'cl-ppcre:regex-apropos)
I compiled each of these lines with C-c C-c. The behavior is the same as before:
Source file: /home/jcunningham/slime/test1.lisp
If I am not implementing this in the "normal" way of using the system, perhaps you could give me some guidance here. What is the minimal code I need to write in a file so I can load, say, cl-ppcre, write a line of code that calls one of its functions, and allows me to navigate to it by Alt-. ?
I thought I was doing it the normal way.
That code should go in test2.asd:
;;;; test2.asd
(asdf:defsystem #:test2 :depends-on (#:cl-ppcre) :serial t :components ((:file "package") (:file "test2")))
Then you have package.lisp:
(defpackage #:test2 (:use #:cl) (:export #:my-great-test))
Then you can put this in test2.lisp:
;;;; test2.lisp
(in-package #:test2)
(defun my-great-test () (describe 'cl-ppcre:regex-apropos))
Put those files somewhere ASDF knows about. I like to put it in something like ~/quicklisp/local-projects/test2/, so you can, from the repl, use this:
(ql:quickload "test2")
Then you should be able to evaluate, in the REPL:
(test2:my-great-test)
Many people automate the process of setting up project directories, system files, and initial sources. My automation of it is the quickproject utility; there are several others.
I don't recommend putting calls to code-loading functions directly in source files, most of the time.
Zach