>From 91bc06b1aeae857e005ddb4636876bc4a09b7fb1 Mon Sep 17 00:00:00 2001
From: Morgan Veyret
Date: Wed, 9 Apr 2008 22:34:53 +0200
Subject: [PATCH] Fixed manual generation with clisp.
Now it shouldn't crash anymore but the generated documentation lacks functions and commands arguments list.
---
Makefile.in | 12 +++++----
manual.lisp | 77 +++++++++++++++++++++++++++++++++++-----------------------
2 files changed, 53 insertions(+), 36 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index 8339627..0f103a2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +1,11 @@
address@hidden@
-clisp_OPTS=-K full -on-error exit ./make-image.lisp
-sbcl_OPTS=--load ./make-image.lisp
+clisp_BUILDOPTS=-K full -on-error exit ./make-image.lisp
+sbcl_BUILDOPTS=--load ./make-image.lisp
+
+clisp_INFOOPTS=-K full -on-error exit -x "(asdf:operate 'asdf:load-op :stumpwm) (load \"manual.lisp\")(stumpwm::generate-manual)(ext:exit)"
+sbcl_INFOOPTS=--eval "(progn (require 'asdf) (require 'stumpwm) (load \"manual.lisp\"))" --eval "(progn (stumpwm::generate-manual) (sb-ext:quit))"
-LISP_OPTS= $(@address@hidden)
# You shouldn't have to edit past this
@@ -18,10 +20,10 @@ stumpwm.info: stumpwm.texi
# FIXME: This rule is too hardcoded
stumpwm.texi: stumpwm.texi.in
- sbcl --eval "(progn (require 'asdf) (require 'stumpwm) (load \"manual.lisp\"))" --eval "(progn (stumpwm::generate-manual) (sb-ext:quit))"
+ $(LISP) $(@address@hidden)
stumpwm: $(FILES)
- $(LISP) $(LISP_OPTS)
+ $(LISP) $(@address@hidden)
release:
git-archive --format=tar address@hidden@/ HEAD > address@hidden@.tar
diff --git a/manual.lisp b/manual.lisp
index 45ca14a..c63dba3 100644
--- a/manual.lisp
+++ b/manual.lisp
@@ -28,51 +28,66 @@
(defun generate-function-doc (s line)
(ppcre:register-groups-bind (name) ("^@@@ (.*)" line)
- (let ((fn (if (find #\( name :test 'char=)
- ;; handle (setf ) functions
- (with-standard-io-syntax
- (let ((*package* (find-package :stumpwm)))
- (fdefinition (read-from-string name))))
- (symbol-function (find-symbol (string-upcase name) :stumpwm))))
- (*print-pretty* nil))
- (format s "@defun ~a ~{~a~^ ~}~%~a~&@end defun~%~%"
- name (sb-impl::%simple-fun-arglist fn)
- (documentation fn 'function))
- t)))
+ (let ((fn (if (find #\( name :test 'char=)
+ ;; handle (setf ) functions
+ (with-standard-io-syntax
+ (let ((*package* (find-package :stumpwm)))
+ (fdefinition (read-from-string name))))
+ (symbol-function (find-symbol (string-upcase name)
+ :stumpwm))))
+ (*print-pretty* nil))
+ #+sbcl (format s "@defun ~a ~{~a~^ ~}~%~a~&@end defun~%~%"
+ name (sb-impl::%simple-fun-arglist fn)
+ (documentation fn 'function))
+ #+clisp (format s "@defun ~a ~{~a~^ ~}~%~a~&@end defun~%~%"
+ name (ext:arglist fn)
+ (documentation fn 'function))
+ #-(or clisp sbcl)
+ (format s "@defun ~a ~%~a~&@end defun~%~%"
+ name
+ (documentation fn 'function))
+ t)))
(defun generate-macro-doc (s line)
(declare (ignore s line)))
(defun generate-variable-doc (s line)
(ppcre:register-groups-bind (name) ("^### (.*)" line)
- (let ((sym (find-symbol (string-upcase name) :stumpwm)))
- (format s "@defvar ~a~%~a~&@end defvar~%~%"
- name (documentation sym 'variable))
- t)))
+ (let ((sym (find-symbol (string-upcase name) :stumpwm)))
+ (format s "@defvar ~a~%~a~&@end defvar~%~%"
+ name (documentation sym 'variable))
+ t)))
(defun generate-hook-doc (s line)
(ppcre:register-groups-bind (name) ("^\\$\\$\\$ (.*)" line)
- (let ((sym (find-symbol (string-upcase name) :stumpwm)))
- (format s "@defvr {Hook} ~a~%~a~&@end defvr~%~%"
- name (documentation sym 'variable))
- t)))
+ (let ((sym (find-symbol (string-upcase name) :stumpwm)))
+ (format s "@defvr {Hook} ~a~%~a~&@end defvr~%~%"
+ name (documentation sym 'variable))
+ t)))
(defun generate-command-doc (s line)
(ppcre:register-groups-bind (name) ("^!!! (.*)" line)
- (let ((cmd (symbol-function (find-symbol (string-upcase name) :stumpwm))))
- (format s "@deffn {Command} ~a ~{~a~^ ~}~%~a~&@end deffn~%~%"
- name (sb-impl::%simple-fun-arglist cmd)
- (documentation cmd 'function))
- t)))
+ (let ((cmd (symbol-function (find-symbol (string-upcase name) :stumpwm))))
+ #+sbcl (format s "@deffn {Command} ~a ~{~a~^ ~}~%~a~&@end deffn~%~%"
+ name (sb-impl::%simple-fun-arglist cmd)
+ (documentation cmd 'function))
+ #+clisp (format s "@deffn {Command} ~a ~{~a~^ ~}~%~a~&@end deffn~%~%"
+ name (ext:arglist cmd)
+ (documentation cmd 'function))
+ #-(or clisp sbcl)
+ (format s "@deffn {Command} ~a ~%~a~&@end deffn~%~%"
+ name ;(sb-impl::%simple-fun-arglist cmd)
+ (documentation cmd 'function))
+ t)))
(defun generate-manual (&key (in #p"stumpwm.texi.in") (out #p"stumpwm.texi"))
(with-open-file (os out :direction :output :if-exists :supersede)
(with-open-file (is in :direction :input)
(loop for line = (read-line is nil is)
- until (eq line is) do
- (or (generate-function-doc os line)
- (generate-macro-doc os line)
- (generate-hook-doc os line)
- (generate-variable-doc os line)
- (generate-command-doc os line)
- (write-line line os))))))
+ until (eq line is) do
+ (or (generate-function-doc os line)
+ (generate-macro-doc os line)
+ (generate-hook-doc os line)
+ (generate-variable-doc os line)
+ (generate-command-doc os line)
+ (write-line line os))))))
--
1.5.4.5