summary refs log tree commit diff
path: root/legacy/stklos/lisp.stk
diff options
context:
space:
mode:
authorLudovic Court`es2005-11-02 10:08:38 +0000
committerLudovic Court`es2005-11-02 10:08:38 +0000
commitb76d5e1b252967521f210eac10ddbf089dde8c6a (patch)
tree00fc81c51256991c04799d79a749bbdd5b9fad30 /legacy/stklos/lisp.stk
parentba63b8d4780428d9f63f6ace7f49361b77401112 (diff)
parentf553cb65b157b6df9563cefa593902d59301461b (diff)
downloadskribilo-b76d5e1b252967521f210eac10ddbf089dde8c6a.tar.gz
skribilo-b76d5e1b252967521f210eac10ddbf089dde8c6a.tar.lz
skribilo-b76d5e1b252967521f210eac10ddbf089dde8c6a.zip
Cleaned up the source tree and the installation process.
Patches applied:

 * lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-6
   Cosmetic changes.

 * lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-7
   Removed useless files, integrated packages.

 * lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-8
   Removed useless files, integrated packages.

 * lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-9
   Moved the STkLos and Bigloo code to `legacy'.

 * lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-10
   Installed Autoconf/Automake machinery.  Fixed a few things.

 * lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-11
   Changes related to source-highlighting and to the manual.


git-archimport-id: lcourtes@laas.fr--2004-libre/skribilo--devel--1.2--patch-10
Diffstat (limited to 'legacy/stklos/lisp.stk')
-rw-r--r--legacy/stklos/lisp.stk294
1 files changed, 294 insertions, 0 deletions
diff --git a/legacy/stklos/lisp.stk b/legacy/stklos/lisp.stk
new file mode 100644
index 0000000..9bfe75a
--- /dev/null
+++ b/legacy/stklos/lisp.stk
@@ -0,0 +1,294 @@
+;;;;
+;;;; lisp.stk	-- Lisp Family Fontification
+;;;; 
+;;;; Copyright © 2003-2004 Erick Gallesio - I3S-CNRS/ESSI <eg@essi.fr>
+;;;; 
+;;;; 
+;;;; This program is free software; you can redistribute it and/or modify
+;;;; it under the terms of the GNU General Public License as published by
+;;;; the Free Software Foundation; either version 2 of the License, or
+;;;; (at your option) any later version.
+;;;; 
+;;;; This program is distributed in the hope that it will be useful,
+;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;;; GNU General Public License for more details.
+;;;; 
+;;;; You should have received a copy of the GNU General Public License
+;;;; along with this program; if not, write to the Free Software
+;;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 
+;;;; USA.
+;;;; 
+;;;;           Author: Erick Gallesio [eg@essi.fr]
+;;;;    Creation date: 16-Oct-2003 22:17 (eg)
+;;;; Last file update: 28-Oct-2004 21:14 (eg)
+;;;;
+
+(require "lex-rt")	;; to avoid module problems
+
+(define-module SKRIBE-LISP-MODULE
+  (export skribe scheme stklos bigloo lisp)
+  (import SKRIBE-SOURCE-MODULE)
+
+(include "lisp-lex.stk")		;; SILex generated
+  
+(define *bracket-highlight* #f)
+(define *class-highlight*   #f)
+(define *the-keys*	    #f)
+
+(define *lisp-keys*	    #f)
+(define *scheme-keys*       #f)
+(define *skribe-keys*	    #f)
+(define *stklos-keys*	    #f)
+(define *lisp-keys*	    #f)
+
+
+;;;
+;;; DEFINITION-SEARCH
+;;;
+(define (definition-search inp tab test)
+  (let Loop ((exp (%read inp)))
+    (unless (eof-object? exp)
+      (if (test exp)
+	  (let ((start (and (%epair? exp) (%epair-line exp)))
+		(stop  (port-current-line inp)))
+	    (source-read-lines (port-file-name inp) start stop tab))
+	  (Loop (%read inp))))))
+
+
+(define (lisp-family-fontifier s)
+  (let ((lex (lisp-lex (open-input-string s))))
+    (let Loop ((token (lexer-next-token lex))
+	       (res   '()))
+      (if (eq? token 'eof)
+	  (reverse! res)
+	  (Loop (lexer-next-token lex)
+		(cons token res))))))
+
+;;;; ======================================================================
+;;;;
+;;;; 				LISP
+;;;;
+;;;; ======================================================================
+(define (lisp-extractor iport def tab)
+  (definition-search
+    iport
+    tab
+    (lambda (exp)
+      (match-case exp
+	 (((or defun defmacro) ?fun ?- . ?-)
+	  	(and (eq? def fun) exp))
+	 ((defvar ?var . ?-)
+	 	(and (eq? var def) exp))
+	 (else
+	  	#f)))))
+
+(define (init-lisp-keys)
+  (unless *lisp-keys*
+    (set! *lisp-keys*
+      (append  ;; key
+               (map (lambda (x) (cons x '&source-keyword))
+		    '(setq if let let* letrec cond case else progn lambda))
+	       ;; define
+	       (map (lambda (x) (cons x '&source-define))
+		    '(defun defclass defmacro)))))
+  *lisp-keys*)
+
+(define (lisp-fontifier s)
+  (fluid-let ((*the-keys* 	   (init-lisp-keys))
+	      (*bracket-highlight* #f)
+	      (*class-highlight*   #f))
+    (lisp-family-fontifier s)))
+
+
+(define lisp
+  (new language
+       (name "lisp")
+       (fontifier lisp-fontifier)
+       (extractor lisp-extractor)))
+
+;;;; ======================================================================
+;;;;
+;;;; 				SCHEME
+;;;;
+;;;; ======================================================================
+(define (scheme-extractor iport def tab)
+  (definition-search
+    iport
+    tab
+    (lambda (exp)
+      (match-case exp
+	 (((or define define-macro) (?fun . ?-) . ?-)
+	     (and (eq? def fun) exp))
+	 ((define (and (? symbol?) ?var) . ?-)
+	     (and (eq? var def) exp))
+	 (else
+	     #f)))))
+
+
+(define (init-scheme-keys)
+  (unless *scheme-keys*
+    (set! *scheme-keys*
+      (append ;; key
+       	      (map (lambda (x) (cons x '&source-keyword))
+		   '(set! if let let* letrec quote cond case else begin do lambda))
+	      ;; define
+	      (map (lambda (x) (cons x '&source-define))
+		 '(define define-syntax)))))
+  *scheme-keys*)
+
+
+(define (scheme-fontifier s)
+  (fluid-let ((*the-keys* 	   (init-scheme-keys))
+	      (*bracket-highlight* #f)
+	      (*class-highlight*   #f))
+    (lisp-family-fontifier s)))
+  
+
+(define scheme
+  (new language
+       (name "scheme")
+       (fontifier scheme-fontifier)
+       (extractor scheme-extractor)))
+
+;;;; ======================================================================
+;;;;
+;;;; 				STKLOS
+;;;;
+;;;; ======================================================================
+(define (stklos-extractor iport def tab)
+  (definition-search
+    iport
+    tab
+    (lambda (exp)
+      (match-case exp
+	 (((or define define-generic define-method define-macro)
+	   (?fun . ?-) . ?-)
+	        (and (eq? def fun) exp))
+	 (((or define define-module) (and (? symbol?) ?var) . ?-)
+	  	(and (eq? var def) exp))
+	 (else
+	  	#f)))))
+
+
+(define (init-stklos-keys)
+  (unless *stklos-keys*
+    (init-scheme-keys)
+    (set! *stklos-keys* (append *scheme-keys*
+				;; Markups
+				(map (lambda (x) (cons x '&source-key))
+				     '(select-module import export))
+				;; Key
+				(map (lambda (x) (cons x '&source-keyword))
+				     '(case-lambda dotimes match-case match-lambda))
+				;; Define
+				(map (lambda (x) (cons x '&source-define))
+				     '(define-generic define-class
+				       define-macro define-method define-module))
+				;; error
+				(map (lambda (x) (cons x '&source-error))
+				     '(error call/cc)))))
+  *stklos-keys*)
+
+
+(define (stklos-fontifier s)
+  (fluid-let ((*the-keys* 	   (init-stklos-keys))
+	      (*bracket-highlight* #t)
+	      (*class-highlight*   #t))
+    (lisp-family-fontifier s)))
+
+
+(define stklos
+  (new language
+       (name "stklos")
+       (fontifier stklos-fontifier)
+       (extractor stklos-extractor)))
+
+;;;; ======================================================================
+;;;;
+;;;; 				SKRIBE
+;;;;
+;;;; ======================================================================
+(define (skribe-extractor iport def tab)
+  (definition-search
+    iport
+    tab
+    (lambda (exp)
+      (match-case exp
+	(((or define define-macro define-markup) (?fun . ?-) . ?-)
+	   (and (eq? def fun) exp))
+	((define (and (? symbol?) ?var) . ?-)
+	   (and (eq? var def) exp))
+	((markup-output (quote ?mk) . ?-)
+	   (and (eq? mk def) exp))
+	(else
+	   #f)))))
+
+
+(define (init-skribe-keys)
+  (unless *skribe-keys*
+    (init-stklos-keys)
+    (set! *skribe-keys* (append *stklos-keys*
+				;; Markups
+				(map (lambda (x) (cons x '&source-markup))
+				     '(bold it emph tt color ref index underline
+				       roman figure center pre flush hrule
+				       linebreak image kbd code var samp
+				       sc sf sup sub
+				       itemize description enumerate item
+				       table tr td th item prgm author
+				       prgm hook font
+				       document chapter section subsection
+				       subsubsection paragraph p handle resolve
+				       processor abstract margin toc
+				       table-of-contents current-document
+				       current-chapter current-section
+				       document-sections* section-number
+				       footnote print-index include skribe-load
+				       slide))
+				;; Define
+				(map (lambda (x) (cons x '&source-define))
+				     '(define-markup)))))
+  *skribe-keys*)
+    
+
+(define (skribe-fontifier s)
+  (fluid-let ((*the-keys* 	   (init-skribe-keys))
+	      (*bracket-highlight* #t)
+	      (*class-highlight*   #t))
+    (lisp-family-fontifier s)))
+
+
+(define skribe
+  (new language
+       (name "skribe")
+       (fontifier skribe-fontifier)
+       (extractor skribe-extractor)))
+
+;;;; ======================================================================
+;;;;
+;;;; 				BIGLOO
+;;;;
+;;;; ======================================================================
+(define (bigloo-extractor iport def tab)
+  (definition-search
+    iport
+    tab
+    (lambda (exp)
+      (match-case exp
+	 (((or define define-inline define-generic
+	       define-method define-macro define-expander)
+	   (?fun . ?-) . ?-)
+	        (and (eq? def fun) exp))
+	 (((or define define-struct define-library) (and (? symbol?) ?var) . ?-)
+	  	(and (eq? var def) exp))
+	 (else
+	  	#f)))))
+
+(define bigloo
+  (new language
+       (name "bigloo")
+       (fontifier scheme-fontifier)
+       (extractor bigloo-extractor)))
+
+)