--- layout: ../Site.layout.js --- # Crystallizing lisp fragments into ASDF - «.eev-mode» (to "eev-mode") - «.cloning-screwlisps-knowledge» (to "cloning-screwlisps-knowledge") - «.source» (to "source") - «.useage» (to "useage") - «.next» (to "next") It seems from this blog that I need to follow every current lisp compiler to ASDF. ASDF is Fare's Another System Definition Facility for lisp. This reconciles the need for one-line invocations, suitable for `eev` with multi-line out-of-the-way source. I will use `asdf`'s `package-inferred-system` idiom. My *source* for every article will reside in a single `git` named `screwlisp` at [codeberg.org/tfw/screwlisps-knowledge.git](https://codeberg.org/tfw/screwlisps-knowledge.git). Each knowledge fragment will be its own file=package using the `package-inferred-system` feature. Tying each source file to one complete package definition dispenses with the need to know about files and with the need to find how the file was packaged. I will use [quicklisp.org](https://quicklisp.org) as the de facto way to drag in many git repositories for projects that warrant that, such `McCLIM` but my source is not intended to be `quicklisp`y. This article continues viz setting up the repository. # eev-mode - «eev-mode» (to ".eev-mode") [Is Eduardo Ochs'. I use a lot of eepitch.](http://anggtwu.net/eepitch.html) # Cloning and linking the git - «cloning-screwlisps-knowledge» (to ".cloning-screwlisps-knowledge") (I made it in codeberg's web interface) ```  (eepitch-shell) mkdir -p ~/gits cd ~/gits git clone ssh://git@codeberg.org/tfw/screwlisps-knowledge.git mkdir -p ~/common-lisp cd ~/common-lisp ln -s ~/gits/screwlisps-knowledge ``` # About ASDF I use [asdf](https://github.com/fare/asdf/blob/master/doc/best_practices.md)'s `:class :package-inferred-system` idiom. The gist is that source goes into files in your file-system like this: ## another system definition asd file ``` (defsystem "screwlisps-knowledge" :class :package-inferred-system :depends-on (:screwlisps-knowledge/all)) ``` ## A Source definition - «source» (to ".source") ```screwlisps-knowledge/example.lisp (uiop:define-package :screwlisps-knowledge/example (:export #:*hello*)) (in-package :screwlisps-knowledge/example) (defvar *hello* 'world) ``` ## package useage - «useage» (to ".useage") supporting this useage: ```  (setq inferior-lisp-program "sbcl")  (slime)  (setq eepitch-buffer-name "*slime-repl sbcl*") (asdf:load-system :screwlisps-knowledge/example) (use-package :screwlisps-knowledge/example) *hello* ``` whence over there ``` CL-USER> (use-package :screwlisps-knowledge/example) T CL-USER> *hello* :WORLD CL-USER> ``` # Next - «next» (to ".next") Alright, I am going to recapitulate all my initial blogs into this, so that they work via a git, not a picture-perfect recreation of my personal emacs session. Say hi on [the mastodon](https://gamerplus.org/@screwlisp/114571539424235034). Also I suggest reading the transcript of Kent's reading of his previously unpublished essay Whither Original Thought and checking out the conversation surrounding it on the Mastodon. Boosting Mastodon toots like that one help with the world's discovery of otherwise little or unknown lisp cultural history.