On 10/30/2013 04:06 PM, Zach Beane wrote:
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
Thank you, Zach.
But what about the very common (for me, at least) case where I want to experiment around with some code that is not intended to go in a package. It's experimental code - say I have some data I'm want to read and process. I'm in the data directory when I start lisp. Its not in an ASDF path and don't really want to modify that search tree everytime I write a one-off piece of code.
I can quickload cl-fad, say, cl-ppcre, and all kinds of packages and write code in the REPL and it works fine. But I don't want to have to retype all this code everytime I revisit the data. I want to be able to type it in a local file, say, test.lisp" and C-c C-c on the lines again tomorrow if I want to run them again. Or maybe C-c, k the whole file and run it that way. So in this context how can I load packages as lines in this file without losing the ability to navigate within their functions? Are you saying that I either have to enter each package load and subsequent commands in the REPL or build a formal package with an .asd and package file, and tell ASD about it?
I've been writing code like this for years - it's only recently that it started behaving differently.
Regards, --Jeff