Continue work on the Common Lisp programming section.
* Enable company support in Sly. * Migrate my script to dump sbcl core files from my dotfiles. * Add a section on learning Common Lisp. * Add a section to bootstrap Quicklisp.
This commit is contained in:
parent
6c642fa2fc
commit
bdd3e7784b
93
README.org
93
README.org
@ -706,8 +706,10 @@ Listing [[lst:configure-company]] configures =company=.
|
|||||||
org-mode-hook
|
org-mode-hook
|
||||||
emacs-lisp-mode-hook
|
emacs-lisp-mode-hook
|
||||||
lisp-interaction-mode-hook
|
lisp-interaction-mode-hook
|
||||||
|
lisp-mode-hook
|
||||||
python-mode-hook
|
python-mode-hook
|
||||||
ielm-mode-hook))
|
ielm-mode-hook
|
||||||
|
sly-mrepl-mode-hook))
|
||||||
(add-hook hook #'company-mode))))
|
(add-hook hook #'company-mode))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -1809,16 +1811,17 @@ non-interactive =org-element= functions to an =Emacs-lisp= buffer.
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: sec:common-lisp-programming
|
:CUSTOM_ID: sec:common-lisp-programming
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
Listing [[lst:configure-sly]] configures the [[info:sly#Top][Sly (info)]] Common Lisp IDE for Emacs
|
Listing [[lst:configure-sly]] configures the [[info:sly#Top][Sly (info)]] Common Lisp IDE for Emacs
|
||||||
for use with [[http://www.sbcl.org/][Steel Bank Common Lisp (sbcl)]]:
|
for use with [[http://www.sbcl.org/][Steel Bank Common Lisp (sbcl)]]:
|
||||||
1. It configures =sly-default-lisp= and =sly-lisp-implementations= as in the
|
1. It configures =sly-default-lisp= and =sly-lisp-implementations= as in the
|
||||||
~sly~ documentation string instead of in the [[info:sly#Multiple
|
~sly~ documentation string instead of in the [[info:sly#Multiple Lisps][multiple lisps (info)]] manual.
|
||||||
Lisps][multiple lisps (info)]] manual.
|
|
||||||
2. It ensures the [[info:sly#Auto-SLY][automatic connection to the lisp server (info)]] when opening a
|
2. It ensures the [[info:sly#Auto-SLY][automatic connection to the lisp server (info)]] when opening a
|
||||||
Common Lisp file.
|
Common Lisp file.
|
||||||
3. It configures searching documentation in the [[http://www.lispworks.com/documentation/HyperSpec/Front/][Common Lisp HyperSpec]] according
|
3. It configures searching documentation in the [[http://www.lispworks.com/documentation/HyperSpec/Front/][Common Lisp HyperSpec]] according
|
||||||
to the [[info:sly#Basic customization][basic customization (info)]] manual.
|
to the [[info:sly#Basic customization][basic customization (info)]] manual.
|
||||||
|
Finally, listing [[lst:configure-sly]] uses a technique to [[info:sly#Loading Slynk faster][load Slynk faster (info)]]
|
||||||
|
by means of a custom core file in src_emacs-lisp{no-littering-var-directory}.
|
||||||
|
Listing [[lst:sbcl-core-for-sly]] tangles to a script to dump such a [[http://www.sbcl.org/][SBCL]] core.
|
||||||
|
|
||||||
#+caption[Configure =sly=]:
|
#+caption[Configure =sly=]:
|
||||||
#+caption: Configure =sly=.
|
#+caption: Configure =sly=.
|
||||||
@ -1854,6 +1857,88 @@ for use with [[http://www.sbcl.org/][Steel Bank Common Lisp (sbcl)]]:
|
|||||||
(define-key sly-prefix-map (kbd "M-h") #'sly-documentation-lookup))
|
(define-key sly-prefix-map (kbd "M-h") #'sly-documentation-lookup))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+caption[Script to dump a SBCL core for the Sly Common Lisp IDE]:
|
||||||
|
#+caption: Script to dump a SBCL core for the Sly Common Lisp IDE.
|
||||||
|
#+header: :tangle-mode (identity #o755)
|
||||||
|
#+name: lst:sbcl-core-for-sly
|
||||||
|
#+begin_src shell :noeval :tangle ~/bin/sbcl.core-for-sly
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
sbcl <<EOF
|
||||||
|
(mapc 'require '(sb-bsd-sockets sb-posix sb-introspect sb-cltl2 asdf))
|
||||||
|
(save-lisp-and-die "sbcl.core-for-sly")
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# sh-basic-offset: 2
|
||||||
|
# End:
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** [[https://courses.cs.northwestern.edu/325/][CS 325 AI Programming]]
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: sec:quicklisp
|
||||||
|
:END:
|
||||||
|
The [[https://courses.cs.northwestern.edu/325/][CS 325 AI Programming]] course allows to learn Common Lisp by self-study and
|
||||||
|
the page [[https://courses.cs.northwestern.edu/325/admin/lisp-setup.php][CS 325: Setting up Lisp]] gives instructions how to:
|
||||||
|
1. [[https://courses.cs.northwestern.edu/325/admin/lisp-setup.php#lisp][Download and install common lisp]].
|
||||||
|
2. [[https://courses.cs.northwestern.edu/325/admin/lisp-setup.php#quicklisp][Install Quicklisp]].
|
||||||
|
3. [[https://courses.cs.northwestern.edu/325/admin/lisp-setup.php#install-325][Install the CS325 library]].
|
||||||
|
|
||||||
|
*** [[https://www.quicklisp.org/][Quicklisp]]
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: sec:quicklisp
|
||||||
|
:END:
|
||||||
|
[[https://www.quicklisp.org/][Quicklisp]] is a library manager for Common Lisp. Listing
|
||||||
|
[[lst:download+verify-quicklisp]] downloads the [[https://www.quicklisp.org/][Quicklisp]] file and verifies its
|
||||||
|
signature to prevent tampering. Listing [[lst:bootstrap-quicklisp]] tangles to a
|
||||||
|
shell script allowing to bootstrap [[https://www.quicklisp.org/][Quicklisp]] with [[http://www.sbcl.org/][SBCL]]. Listing
|
||||||
|
[[lst:quicklisp-sbclrc-file]] tangles to the a [[http://www.sbcl.org/][SBCL]] resource file with [[https://www.quicklisp.org/][Quicklisp]]
|
||||||
|
support.
|
||||||
|
|
||||||
|
#+caption[Download and verify =quicklisp=]:
|
||||||
|
#+caption: Download and verify =quicklisp=.
|
||||||
|
#+name: lst:download+verify-quicklisp
|
||||||
|
#+begin_src shell :dir ~ :results none :tangle no
|
||||||
|
curl -sS -O https://beta.quicklisp.org/quicklisp.lisp
|
||||||
|
curl -sS -O https://beta.quicklisp.org/quicklisp.lisp.asc
|
||||||
|
curl -sS -O https://beta.quicklisp.org/release-key.txt
|
||||||
|
gpg --import release-key.txt
|
||||||
|
gpg --verify quicklisp.lisp.asc quicklisp.lisp
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+caption[Bootstrap =quicklisp=]:
|
||||||
|
#+caption: Bootstrap =quicklisp=.
|
||||||
|
#+header: :tangle-mode (identity #o755)
|
||||||
|
#+name: lst:bootstrap-quicklisp
|
||||||
|
#+begin_src shell :noeval :tangle ~/bin/quicklisp-sbcl-bootstrap
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
sbcl --load ~/quicklisp.lisp <<EOF
|
||||||
|
(quicklisp-quickstart:install)
|
||||||
|
(quit)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# sh-basic-offset: 2
|
||||||
|
# End:
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+caption[A =quicklisp= sbclrc file]:
|
||||||
|
#+caption: A =quicklisp= sbclrc file.
|
||||||
|
#+name: lst:quicklisp-sbclrc-file
|
||||||
|
#+begin_src lisp :tangle ~/.sbclrc
|
||||||
|
;;; Hey Emacs, this is my -*- lisp -*- .sbclrc file.
|
||||||
|
#-quicklisp
|
||||||
|
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
|
||||||
|
(user-homedir-pathname))))
|
||||||
|
(when (probe-file quicklisp-init)
|
||||||
|
(load quicklisp-init)))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Emacs-lisp programming
|
** Emacs-lisp programming
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: sec:emacs-lisp-programming
|
:CUSTOM_ID: sec:emacs-lisp-programming
|
||||||
|
Loading…
Reference in New Issue
Block a user