Update of /project/lisppaste/cvsroot/lisppaste2
In directory common-lisp.net:/home/bmastenbrook/lisppaste2
Modified Files:
lisppaste.asd clhs-lookup.lisp
Added Files:
abbrev.lisp
Log Message:
Abbreviations for CLHS lookup
Date: Thu Jul 8 10:42:27 2004
Author: bmastenbrook
Index: lisppaste2/lisppaste.asd
diff -u lisppaste2/lisppaste.asd:1.13 lisppaste2/lisppaste.asd:1.14
--- lisppaste2/lisppaste.asd:1.13 Thu Jun 17 06:10:04 2004
+++ lisppaste2/lisppaste.asd Thu Jul 8 10:42:26 2004
@@ -1,5 +1,5 @@
;;;; Silly emacs, this is -*- Lisp -*-
-;;;; $Id: lisppaste.asd,v 1.13 2004/06/17 13:10:04 bmastenbrook Exp $
+;;;; $Id: lisppaste.asd,v 1.14 2004/07/08 17:42:26 bmastenbrook Exp $
;;;; $Source: /project/lisppaste/cvsroot/lisppaste2/lisppaste.asd,v $
;;;; See the LICENSE file for licensing information.
@@ -29,7 +29,8 @@
(:file "colorize-package")
(:file "coloring-css" :depends-on ("colorize-package"))
(:file "colorize" :depends-on ("colorize-package" "coloring-css"))
- (:file "clhs-lookup" :depends-on ("encode-for-pre"))
+ (:file "abbrev")
+ (:file "clhs-lookup" :depends-on ("encode-for-pre" "abbrev"))
(:file "r5rs-lookup" :depends-on ("encode-for-pre"))
(:file "elisp-lookup" :depends-on ("encode-for-pre"))
(:file "lisppaste"
Index: lisppaste2/clhs-lookup.lisp
diff -u lisppaste2/clhs-lookup.lisp:1.6 lisppaste2/clhs-lookup.lisp:1.7
--- lisppaste2/clhs-lookup.lisp:1.6 Thu Jun 17 05:59:17 2004
+++ lisppaste2/clhs-lookup.lisp Thu Jul 8 10:42:26 2004
@@ -3,7 +3,7 @@
:spec-lookup))
(in-package :clhs-lookup)
-(defparameter *hyperspec-pathname* #p"/home/chandler/public_html/HyperSpec/")
+(defparameter *hyperspec-pathname* #p"/home/bmastenbrook/HyperSpec/")
(defparameter *hyperspec-map-file* (merge-pathnames "Data/Map_Sym.txt" *hyperspec-pathname*))
@@ -16,6 +16,8 @@
(defvar *symbol-table* (make-hash-table :test 'equalp))
+(defvar *abbrev-table* (make-hash-table :test 'equalp))
+
(defvar *section-table* (make-hash-table :test 'equalp))
(defvar *format-table* (make-hash-table :test 'equalp))
@@ -43,10 +45,16 @@
(format *trace-output* "Warning: could not find hyperspec map file. Adjust the path at the top of clhs-lookup.lisp to get links to the HyperSpec.~%")
(setf *last-warn-time* (get-universal-time)))
(return-from populate-table nil))
- (do ((symbol-name (read-line s nil s) (read-line s nil s))
- (url (read-line s nil s) (read-line s nil s)))
- ((eq url s) 'done)
- (setf (gethash symbol-name *symbol-table*) (concatenate 'string *hyperspec-root* (subseq url 3))))
+ (flet ((set-symbol (sym url)
+ (setf (gethash sym *symbol-table*) url)
+ (let ((abbrev (abbrev:abbrev sym)))
+ (and abbrev
+ (pushnew sym (gethash abbrev *abbrev-table* nil)
+ :test #'string-equal)))))
+ (do ((symbol-name (read-line s nil s) (read-line s nil s))
+ (url (read-line s nil s) (read-line s nil s)))
+ ((eq url s) 'done)
+ (set-symbol symbol-name (concatenate 'string *hyperspec-root* (subseq url 3)))))
;; add in section references.
(let ((*default-pathname-defaults* *hyperspec-pathname*))
;; Yuk. I know. Fixes welcome.
@@ -126,6 +134,17 @@
(setf (gethash (concatenate 'string "MOP:" symbol-name) *symbol-table*) (concatenate 'string *mop-root* url))))
(setf *populated-p* t)))
+(defun abbrev-lookup (term)
+ (let ((abbrevs (gethash term *abbrev-table* nil)))
+ (if (eql (length abbrevs) 0)
+ nil
+ (if (eql (length abbrevs) 1)
+ (format nil "~A: ~A"
+ (car abbrevs)
+ (gethash (car abbrevs) *symbol-table*))
+ (format nil "Matches: ~{~A~^ ~}"
+ abbrevs)))))
+
(defun spec-lookup (term &key (type :all))
(unless *populated-p*
(populate-table))
@@ -133,7 +152,10 @@
(:all
(or (gethash term *symbol-table*)
(gethash term *section-table*)
- (gethash term *format-table*)))
+ (gethash term *format-table*)
+ (abbrev-lookup term)))
+ (:abbrev
+ (abbrev-lookup term))
(:symbol
(gethash term *symbol-table*))
(:section