Tagged as lisp
Written on 2020-02-21
Quick lisp tip for enabling cl-annot reader macros across an entire asdf project.
cl-annot enables @
annotation syntax for some Common Lisp operations.
For example, using cl-annot you can export a function like so:
@export
(defun foo ()
"foo")
;; expands to ->
(progn
(export 'foo)
(defun foo ()
"foo"))
Using cl-annot requires adding this code to the header of each .lisp
file:
(annot:enable-annot-syntax)
This can be cumbersome for large asdf projects, which have many files. If you'd like to avoid pasting that header everywhere, you can use asdf's :around-compile
hook:
(defsystem your-project
:name "your-project"
:components
(...)
:around-compile "(lambda (compile-fn)
(annot:enable-annot-syntax)
(funcall compile-fn))")
The string defining the lambda will enable annotations before each file in your project is compiled.
Now you can use cl-annot for any file in your project.