cl-interpol-cvs
Threads by month
- ----- 2026 -----
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
April 2004
- 1 participants
- 2 discussions
Update of /project/cl-interpol/cvsroot/cl-interpol/doc
In directory common-lisp.net:/tmp/cvs-serv31054/doc
Modified Files:
index.html
Log Message:
pre-0.1.2 including hyperdoc support
Date: Fri Apr 23 20:26:54 2004
Author: eweitz
Index: cl-interpol/doc/index.html
diff -u cl-interpol/doc/index.html:1.1.1.1 cl-interpol/doc/index.html:1.2
--- cl-interpol/doc/index.html:1.1.1.1 Tue Jan 6 20:06:28 2004
+++ cl-interpol/doc/index.html Fri Apr 23 20:26:54 2004
@@ -48,7 +48,6 @@
<br> <br><h3><a class=none name="contents">Contents</a></h3>
<ol>
<li><a href="#install">Download and installation</a>
- <li><a href="#mail">Support and mailing lists</a>
<li><a href="#syntax">Syntax</a>
<ol>
<li><a href="#backslash">Backslashes</a>
@@ -70,7 +69,7 @@
</ol>
<li><a href="#bugs">Bugs and problems</a>
<ol>
- <li><a href="#lispworks">CL-INTERPOL doesn't work with LispWorks</a>
+ <li><a href="#lispworks">CL-INTERPOL doesn't work with LispWorks 4.3</a>
<li><a href="#slow">Reading of large forms can be slow</a>
<li><a href="#curly"><code>{n,m}</code> modifiers in extended mode</a>
</ol>
@@ -129,17 +128,6 @@
syntax you have to enable it with <a
href="#enable-interpol-syntax"><code>ENABLE-INTERPOL-SYNTAX</code></a>.
-<br> <br><h3><a name="mail" class=none>Support and mailing lists</a></h3>
-
-For questions, bug reports, feature requests, improvements, or patches
-please use the <a
-href="http://common-lisp.net/mailman/listinfo/cl-interpol-devel">cl-interpol-devel
-mailing list</a>. If you want to be notified about future releases
-subscribe to the <a
-href="http://common-lisp.net/mailman/listinfo/cl-interpol-announce">cl-interpol-announce
-mailing list</a>. These mailing lists were made available thanks to
-the services of <a href="http://common-lisp.net/">common-lisp.net</a>.
-
<br> <br><h3><a name="syntax" class=none>Syntax</a></h3>
CL-INTERPOL installs <code class=yellow>?</code> (question mark) as a
@@ -753,11 +741,11 @@
<br> <br><h3><a class=none name="bugs">Bugs and problems</a></h3>
-<h4><a name="lispworks" class=none>CL-INTERPOL doesn't work with LispWorks</a></h4>
+<h4><a name="lispworks" class=none>CL-INTERPOL doesn't work with LispWorks 4.3</a></h4>
-<a
+At least on my machine <a
href="http://www.lispworks.com/">LispWorks</a>
-(4.3.6 professional on Linux, maybe other versions too) has an error which prevents
+(4.3.6 professional on Linux) has an error which prevents
CL-INTERPOL from working correctly. You can check for yourself by
evaluating the following form in a LispWorks listener:
@@ -771,8 +759,7 @@
</pre>
This should of course return <code>1</code> but signals an error for
-me. If you also encounter this error you can contact Xanalys support
-for a patch.
+me. I have reported this as a bug to Xanalys support.
<h4><a name="slow" class=none>Reading of large forms can be slow</a></h4>
@@ -812,7 +799,7 @@
Thanks to Peter Seibel who had the idea to do this to make <a href="http://weitz.de/cl-ppcre/">CL-PPCRE</a> more convenient. Read <a href="http://www.apress.com/book/bookDisplay.html?bID=237">his book</a> when it is released!!!
<p>
-$Header: /project/cl-interpol/cvsroot/cl-interpol/doc/index.html,v 1.1.1.1 2004/01/07 01:06:28 eweitz Exp $
+$Header: /project/cl-interpol/cvsroot/cl-interpol/doc/index.html,v 1.2 2004/04/24 00:26:54 eweitz Exp $
<p><a href="http://weitz.de/index.html">BACK TO MY HOMEPAGE</a>
</body>
1
0
Update of /project/cl-interpol/cvsroot/cl-interpol
In directory common-lisp.net:/tmp/cvs-serv31054
Modified Files:
CHANGELOG README cl-interpol.asd cl-interpol.system load.lisp
packages.lisp read.lisp specials.lisp test.lisp test.pl
test2.lisp unicode.lisp util.lisp
Log Message:
pre-0.1.2 including hyperdoc support
Date: Fri Apr 23 20:26:53 2004
Author: eweitz
Index: cl-interpol/CHANGELOG
diff -u cl-interpol/CHANGELOG:1.1.1.1 cl-interpol/CHANGELOG:1.2
--- cl-interpol/CHANGELOG:1.1.1.1 Tue Jan 6 20:05:17 2004
+++ cl-interpol/CHANGELOG Fri Apr 23 20:26:52 2004
@@ -1,3 +1,8 @@
+Version 0.1.2
+????-??-??
+Added hyperdoc support
+Added :CL-INTERPOL to *FEATURES*
+
Version 0.1.1
2003-12-21
Fixed an embarrassing bug where COLLECTOR was re-used in read.lisp (reported by Hans Hübner)
Index: cl-interpol/README
diff -u cl-interpol/README:1.1.1.1 cl-interpol/README:1.2
--- cl-interpol/README:1.1.1.1 Tue Jan 6 20:05:01 2004
+++ cl-interpol/README Fri Apr 23 20:26:52 2004
@@ -1,6 +1,10 @@
Complete documentation for CL-INTERPOL can be found in the 'doc'
directory.
+CL-INTERPOL also supports Nikodemus Siivola's HYPERDOC, see
+<http://common-lisp.net/project/hyperdoc/> and
+<http://www.cliki.net/hyperdoc>.
+
1. Installation
1.1. Probably the easiest way is
Index: cl-interpol/cl-interpol.asd
diff -u cl-interpol/cl-interpol.asd:1.1.1.1 cl-interpol/cl-interpol.asd:1.2
--- cl-interpol/cl-interpol.asd:1.1.1.1 Tue Jan 6 20:05:01 2004
+++ cl-interpol/cl-interpol.asd Fri Apr 23 20:26:52 2004
@@ -1,5 +1,5 @@
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-USER; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/cl-interpol.asd,v 1.1.1.1 2004/01/07 01:05:01 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/cl-interpol.asd,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2003, Dr. Edmund Weitz. All rights reserved.
Index: cl-interpol/cl-interpol.system
diff -u cl-interpol/cl-interpol.system:1.1.1.1 cl-interpol/cl-interpol.system:1.2
--- cl-interpol/cl-interpol.system:1.1.1.1 Tue Jan 6 20:05:17 2004
+++ cl-interpol/cl-interpol.system Fri Apr 23 20:26:52 2004
@@ -1,5 +1,5 @@
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-USER; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/cl-interpol.system,v 1.1.1.1 2004/01/07 01:05:17 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/cl-interpol.system,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2003, Dr. Edmund Weitz. All rights reserved.
Index: cl-interpol/load.lisp
diff -u cl-interpol/load.lisp:1.1.1.1 cl-interpol/load.lisp:1.2
--- cl-interpol/load.lisp:1.1.1.1 Tue Jan 6 20:05:01 2004
+++ cl-interpol/load.lisp Fri Apr 23 20:26:52 2004
@@ -1,5 +1,5 @@
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-USER; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/load.lisp,v 1.1.1.1 2004/01/07 01:05:01 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/load.lisp,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2002-2003, Dr. Edmund Weitz. All rights reserved.
Index: cl-interpol/packages.lisp
diff -u cl-interpol/packages.lisp:1.1.1.1 cl-interpol/packages.lisp:1.2
--- cl-interpol/packages.lisp:1.1.1.1 Tue Jan 6 20:05:01 2004
+++ cl-interpol/packages.lisp Fri Apr 23 20:26:52 2004
@@ -1,5 +1,5 @@
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-USER; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/packages.lisp,v 1.1.1.1 2004/01/07 01:05:01 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/packages.lisp,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2003, Dr. Edmund Weitz. All rights reserved.
@@ -41,7 +41,8 @@
#:*short-unicode-names-p*
#:*unicode-scripts*
#:*outer-delimiters*
- #:*inner-delimiters*))
+ #:*inner-delimiters*
+ #:*optional-delimiters-p*))
#+:cormanlisp
(defpackage "CL-INTERPOL"
@@ -56,3 +57,5 @@
"*UNICODE-SCRIPTS*"
"*OUTER-DELIMITERS*"
"*INNER-DELIMITERS*"))
+
+(pushnew :cl-interpol *features*)
\ No newline at end of file
Index: cl-interpol/read.lisp
diff -u cl-interpol/read.lisp:1.1.1.1 cl-interpol/read.lisp:1.2
--- cl-interpol/read.lisp:1.1.1.1 Tue Jan 6 20:05:20 2004
+++ cl-interpol/read.lisp Fri Apr 23 20:26:52 2004
@@ -1,5 +1,5 @@
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-INTERPOL; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/read.lisp,v 1.1.1.1 2004/01/07 01:05:20 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/read.lisp,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2003, Dr. Edmund Weitz. All rights reserved.
@@ -202,6 +202,63 @@
(concatenate 'string "\\" (string result)))
(t result)))))
+(declaim (inline normal-name-char-p)
+ (inline never-name-char-p))
+
+(defun normal-name-char-p (c)
+ (and c (or (alphanumericp c)
+ (member c '(#\_ #\- #\+ #\*)))))
+
+(defun never-name-char-p (c)
+ (or (not c)
+ (get-macro-character c)
+ (member c '(#\$ #\@))))
+
+(defvar quell-warnings-form
+ #+sbcl '(declare (optimize (sb-ext:inhibit-warnings 3)))
+ #-sbcl nil
+ "A declaration form to quiet warnings about unbound variables
+ within a lexical environment.")
+
+(defun read-longest-name ()
+ (coerce
+ (loop until (never-name-char-p (peek-char nil *stream* nil nil t))
+ collect (read-char*))
+ 'string))
+
+(defun read-optional-delimited ()
+ "Read the stuff following an optional delimiter, returning a form
+that tries to deal correctly with lexical variables."
+ (flet ((try-pos (name i form)
+ (let ((ostr (gensym)))
+ `(handler-case
+ (with-output-to-string (,ostr)
+ (princ ,(read-from-string (subseq name 0 i)) ,ostr)
+ (princ ,(subseq name i) ,ostr)
+ ,ostr)
+ (unbound-variable () ,form)))))
+
+ (loop
+ with name = (read-longest-name)
+ with form = `(error ,(format nil "Interpolation error in ~s~%" name))
+ with ostr = (gensym)
+ for i = (position-if-not #'normal-name-char-p name)
+ then (position-if-not #'normal-name-char-p name :start (1+ i))
+
+ unless i
+ return `(let () ,quell-warnings-form
+ (handler-case
+ (with-output-to-string (,ostr)
+ (princ ,(read-from-string name) ,ostr)
+ ,ostr)
+ (unbound-variable () ,form)))
+
+ if (> i 0)
+ do (setq form (try-pos name i form))
+
+ if (< i (length name))
+ do (setq form (try-pos name (1+ i) form)))))
+
(declaim (inline read-form))
(defun read-form ()
"Reads and returns one or more Lisp forms from *STREAM* if the
@@ -210,7 +267,9 @@
(let* ((start-delimiter (peek-char*))
(end-delimiter (get-end-delimiter start-delimiter *inner-delimiters*)))
(cond ((null end-delimiter)
- nil)
+ (if *optional-delimiters-p*
+ (read-optional-delimited)
+ nil))
(t
`(progn
,@(progn
Index: cl-interpol/specials.lisp
diff -u cl-interpol/specials.lisp:1.1.1.1 cl-interpol/specials.lisp:1.2
--- cl-interpol/specials.lisp:1.1.1.1 Tue Jan 6 20:05:17 2004
+++ cl-interpol/specials.lisp Fri Apr 23 20:26:52 2004
@@ -1,5 +1,5 @@
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-INTERPOL; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/specials.lisp,v 1.1.1.1 2004/01/07 01:05:17 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/specials.lisp,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2003, Dr. Edmund Weitz. All rights reserved.
@@ -63,6 +63,11 @@
"The Unicode scripts which are to be tried if a name couldn't be
resolved otherwise.")
+(defvar *optional-delimiters-p* nil
+ "Whether text following $ or @ should interpolate even without a
+following delimiter. Lexical variables are handled correctly,
+but the rules are somewhat complex -- see the docs for details.")
+
(defmacro defvar-unbound (variable-name documentation)
"Like DEFVAR, but the variable will be unbound rather than getting
an initial value. This is useful for variables which should have no
@@ -96,4 +101,23 @@
(defvar-unbound *readtable-copy*
"Bound to the current readtable if it has to be temporarily
-modified.")
\ No newline at end of file
+modified.")
+
+;; stuff for Nikodemus Siivola's HYPERDOC
+;; see <http://common-lisp.net/project/hyperdoc/>
+;; and <http://www.cliki.net/hyperdoc>
+
+(defvar *hyperdoc-base-uri* "http://weitz.de/cl-interpol/")
+
+(let ((exported-symbols-alist
+ (loop for symbol being the external-symbols of :cl-interpol
+ collect (cons symbol
+ (concatenate 'string
+ "#"
+ (string-downcase symbol))))))
+ (defun hyperdoc-lookup (symbol type)
+ (declare (ignore type))
+ (cdr (assoc symbol
+ exported-symbols-alist
+ :test #'eq))))
+
\ No newline at end of file
Index: cl-interpol/test.lisp
diff -u cl-interpol/test.lisp:1.1.1.1 cl-interpol/test.lisp:1.2
--- cl-interpol/test.lisp:1.1.1.1 Tue Jan 6 20:05:17 2004
+++ cl-interpol/test.lisp Fri Apr 23 20:26:52 2004
@@ -1,5 +1,5 @@
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-INTERPOL; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/test.lisp,v 1.1.1.1 2004/01/07 01:05:17 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/test.lisp,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2002-2003, Dr. Edmund Weitz. All rights reserved.
@@ -29,6 +29,10 @@
(in-package #:cl-interpol)
+;; Otherwise it's impossible to see which tests are failing for all
+;; the "helpful" warnings.
+#+sbcl (declaim (optimize (sb-ext:inhibit-warnings 3)))
+
(defvar *temp*)
(defparameter *cl-interpol-base-directory*
@@ -153,6 +157,14 @@
(test #?"The result is ${(let ((y 2)) (+ x y))}"
"The result is 42")
(test #?"${#?'${a} ${c}'} ${x}" "foo bar 40"))
+
+(setq cl-interpol:*optional-delimiters-p* t)
+(test (let ((% 23)) #?"$%a%b%") "23a%b%")
+(test (let ((%a 23)) #?"$%a%b%") "23%b%")
+(test (let ((%a% 23)) #?"$%a%b%") "23b%")
+(test (let ((%a%b 23)) #?"$%a%b%") "23%")
+(test (let ((%a%b% 23)) #?"$%a%b%") "23")
+(setq cl-interpol:*optional-delimiters-p* nil)
(load (merge-pathnames "test2.lisp"
*cl-interpol-base-directory*))
Index: cl-interpol/test.pl
diff -u cl-interpol/test.pl:1.1.1.1 cl-interpol/test.pl:1.2
--- cl-interpol/test.pl:1.1.1.1 Tue Jan 6 20:05:17 2004
+++ cl-interpol/test.pl Fri Apr 23 20:26:52 2004
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-### $Header: /project/cl-interpol/cvsroot/cl-interpol/test.pl,v 1.1.1.1 2004/01/07 01:05:17 eweitz Exp $
+### $Header: /project/cl-interpol/cvsroot/cl-interpol/test.pl,v 1.2 2004/04/24 00:26:52 eweitz Exp $
### Copyright (c) 2002-2003, Dr. Edmund Weitz. All rights reserved.
@@ -49,7 +49,7 @@
print <<'HEAD';
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-INTERPOL; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/test.pl,v 1.1.1.1 2004/01/07 01:05:17 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/test.pl,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2002-2003, Dr. Edmund Weitz. All rights reserved.
Index: cl-interpol/test2.lisp
diff -u cl-interpol/test2.lisp:1.1.1.1 cl-interpol/test2.lisp:1.2
--- cl-interpol/test2.lisp:1.1.1.1 Tue Jan 6 20:05:17 2004
+++ cl-interpol/test2.lisp Fri Apr 23 20:26:52 2004
@@ -1,5 +1,5 @@
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-INTERPOL; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/test2.lisp,v 1.1.1.1 2004/01/07 01:05:17 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/test2.lisp,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2002-2003, Dr. Edmund Weitz. All rights reserved.
Index: cl-interpol/unicode.lisp
diff -u cl-interpol/unicode.lisp:1.1.1.1 cl-interpol/unicode.lisp:1.2
--- cl-interpol/unicode.lisp:1.1.1.1 Tue Jan 6 20:06:26 2004
+++ cl-interpol/unicode.lisp Fri Apr 23 20:26:52 2004
@@ -1,5 +1,5 @@
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-INTERPOL; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/unicode.lisp,v 1.1.1.1 2004/01/07 01:06:26 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/unicode.lisp,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2003, Dr. Edmund Weitz. All rights reserved.
Index: cl-interpol/util.lisp
diff -u cl-interpol/util.lisp:1.1.1.1 cl-interpol/util.lisp:1.2
--- cl-interpol/util.lisp:1.1.1.1 Tue Jan 6 20:05:20 2004
+++ cl-interpol/util.lisp Fri Apr 23 20:26:52 2004
@@ -1,5 +1,5 @@
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-INTERPOL; Base: 10 -*-
-;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/util.lisp,v 1.1.1.1 2004/01/07 01:05:20 eweitz Exp $
+;;; $Header: /project/cl-interpol/cvsroot/cl-interpol/util.lisp,v 1.2 2004/04/24 00:26:52 eweitz Exp $
;;; Copyright (c) 2003, Dr. Edmund Weitz. All rights reserved.
1
0