Update of /project/climacs/cvsroot/climacs In directory common-lisp.net:/tmp/cvs-serv31704
Modified Files: climacs-en.html climacs.html html-syntax.lisp Log Message: Added <ul>...</ul> and <li>...</li> elements.
Modified some html files to be conform.
Date: Fri Apr 8 16:37:00 2005 Author: rstrandh
Index: climacs/climacs-en.html diff -u climacs/climacs-en.html:1.3 climacs/climacs-en.html:1.4 --- climacs/climacs-en.html:1.3 Thu Dec 16 07:29:01 2004 +++ climacs/climacs-en.html Fri Apr 8 16:36:59 2005 @@ -1,7 +1,7 @@ <HTML><HEAD><TITLE>Climacs, a modern version of the Emacs editor</TITLE></HEAD> <BODY>
-<a href="climacs.html">Version française.</a> +<p><a href="climacs.html">Version française.</a></p>
<h1>Climacs, a modern version of the Emacs editor</h1>
@@ -11,33 +11,33 @@ problems today. :</p>
<ul> -<li>Emacs Lisp is a language that was specially designed in order to +<li><p>Emacs Lisp is a language that was specially designed in order to implement Emacs. Since the design of GNU Emacs and of Emacs Lisp, Common Lisp has been standardized, and gives both better performance than that of Emacs Lisp (because Emacs Lisp is implemented as an interpreter written in C) and more sophisticated functionalities (macros, CLOS, etc). The natural choice for - implementing Emacs today is thus Common Lisp.</li> + implementing Emacs today is thus Common Lisp.</p></li>
-<li>GNU Emacs was designed before the existence of the Unicode +<li><p>GNU Emacs was designed before the existence of the Unicode standard. Unfortunately, the internal representation of a buffer does not allow the representation of all Unicode characters in a compact way. An internal representation allowing both all of Unicode and a compact representation for the ISO-latin-1 subset is - desirable.</li> + desirable.</p></li>
-<li>Twenty years ago, graphic user interfaces practically did not +<li><p>Twenty years ago, graphic user interfaces practically did not exist. GNU Emacs was designed for a text-only terminal. Today better modes of interaction exist. In particular, with CLIM (Common LIsp Interface Manager) it is both possible and desirable - to have an interface based on the concept of "presentation types".</li> + to have an interface based on the concept of "presentation types".</p></li>
-<li>Because of the limited power of computers at the time, GNU Emacs +<li><p>Because of the limited power of computers at the time, GNU Emacs uses a certain number of approximations in order to analyze the contents of a buffer, in particular when that contents is the text of a program. These approximations are no longer necessary, and with current technology, it is possible to maintain a complete - syntactic analysis of the buffer text. + syntactic analysis of the buffer text. </p></li>
</ul>
@@ -67,5 +67,5 @@ <li><a href="syntax.text">Description of the "syntax" protocol</a></li> <li><a href="climacs.tar.gz">Lisp code</a></li> </ul> - +</body> </HTML>
Index: climacs/climacs.html diff -u climacs/climacs.html:1.4 climacs/climacs.html:1.5 --- climacs/climacs.html:1.4 Fri Apr 8 10:30:42 2005 +++ climacs/climacs.html Fri Apr 8 16:36:59 2005 @@ -12,36 +12,36 @@ l'époque posent quelques problèmes aujourd'hui :</p>
<ul> -<li>Emacs Lisp est un langage spécialement conçu pour implémenter +<li><p>Emacs Lisp est un langage spécialement conçu pour implémenter Emacs. Depuis la conception de GNU Emacs et du langage Emacs LIsp, Common Lisp a été normalisé et propose à la fois une efficacité bien supérieure à celle de Emacs Lisp (car Emacs Lisp est implémenté sous la forme d'un interpréteur écrit en C) et des fonctionnalités plus sophistiqués (macros, CLOS, etc). Le choix naturelle pour implémenter Emacs aujourd'hui est donc Common - Lisp.</li> + Lisp.</p></li>
-<li>GNU Emacs a été conçu avant l'existence de la norme +<li><p>GNU Emacs a été conçu avant l'existence de la norme Unicode. Malheureusement, la représentation interne d'un tampon (buffer) permet difficilement de représenter des caractères Unicode de manière compacte et efficace. Une représentation interne permettant à la fois l'ensemble des caractères Unicode et une représentation compacte du sous ensemble - ISO-latin-1 est souhaitable.</li> + ISO-latin-1 est souhaitable.</p></li>
-<li>Il y a 20 ans, les interfaces graphiques n'existait pratiquement +<li><p>Il y a 20 ans, les interfaces graphiques n'existait pratiquement pas. GNU Emacs a été conçu pour un terminal texte. D'autres modes d'interaction sont possibles aujourd'hui. En particulier, avec CLIM (Common Lisp Interface Manager) une interface basée sur la notion de "types de présentation" est à la - fois possible et souhaitable. </li> + fois possible et souhaitable. </p></li>
-<li>Pour des raisons de la performance limitée des ordinateurs de +<li><p>Pour des raisons de la performance limitée des ordinateurs de l'époque, GNU Emacs se sert d'un certain nombre d'approximations pour analyser le contenu d'un tampon, en particulier lorsque ce contenu est un programme. Ces approximations n'ont plus raison d'être, et avec la technologie d'aujourd'hui, il est possible de - maintenir un analyseur syntaxique incrémental et complet. + maintenir un analyseur syntaxique incrémental et complet.</p></li>
</ul>
@@ -71,7 +71,5 @@ <li><a href="syntax.text">Description du protocole "syntax"</a></li> <li><a href="climacs.tar.gz">Code Lisp</a></li> </ul> - - - +</body> </HTML>
Index: climacs/html-syntax.lisp diff -u climacs/html-syntax.lisp:1.25 climacs/html-syntax.lisp:1.26 --- climacs/html-syntax.lisp:1.25 Fri Apr 8 10:30:42 2005 +++ climacs/html-syntax.lisp Fri Apr 8 16:36:59 2005 @@ -117,8 +117,6 @@ (define-tag-pair <head> </head> "head") (define-tag-pair <title> </title> "title") (define-tag-pair <body> </body> "body") -(define-tag-pair <ul> </ul> "ul") -(define-tag-pair <li> </li> "li")
(defmacro define-list (name item-name) (let ((empty-name (gensym)) @@ -301,7 +299,8 @@ (defmethod display-parse-tree ((entity heading) (syntax html-syntax) pane) (with-slots (start contents end) entity (display-parse-tree start syntax pane) - (display-parse-tree contents syntax pane) + (with-text-face (pane :bold) + (display-parse-tree contents syntax pane)) (display-parse-tree end syntax pane))) (defmacro define-heading (class-name tag-string start-tag-name end-tag-name) @@ -410,6 +409,103 @@ (display-parse-tree contents syntax pane) (display-parse-tree </p> syntax pane)))
+;;;;;;;;;;;;;;; li element + +(defclass <li> (html-tag) + ((start :initarg :start) + (name :initarg :name) + (attributes :initarg :attributes) + (end :initarg :end))) + +(add-html-rule (<li> -> (tag-start + (word (and (= (end-offset tag-start) (start-offset word)) + (word-is word "li"))) + common-attributes + tag-end) + :start tag-start + :name word + :attributes common-attributes + :end tag-end)) + +(defmethod display-parse-tree ((entity <li>) (syntax html-syntax) pane) + (with-slots (start name attributes end) entity + (display-parse-tree start syntax pane) + (display-parse-tree name syntax pane) + (display-parse-tree attributes syntax pane) + (display-parse-tree end syntax pane))) + +(define-end-tag </li> "li") + +(defclass li-item (html-nonterminal) + ((item :initarg :item))) + +(add-html-rule (li-item -> (block-level-element) :item block-level-element)) +(add-html-rule (li-item -> (inline-element) :item inline-element)) + +(defmethod display-parse-tree ((entity li-item) (syntax html-syntax) pane) + (with-slots (item) entity + (display-parse-tree item syntax pane))) + +(define-list li-items li-item) + +(defclass li-element (html-nonterminal) + ((<li> :initarg :<li>) + (items :initarg :items) + (</li> :initarg :</li>))) + +(add-html-rule (li-element -> (<li> li-items </li>) + :<li> <li> :items li-items :</li> </li>)) + +(defmethod display-parse-tree ((entity li-element) (syntax html-syntax) pane) + (with-slots (<li> items </li>) entity + (display-parse-tree <li> syntax pane) + (display-parse-tree items syntax pane) + (display-parse-tree </li> syntax pane))) + + +;;;;;;;;;;;;;;; ul element + +(defclass <ul> (html-tag) + ((start :initarg :start) + (name :initarg :name) + (attributes :initarg :attributes) + (end :initarg :end))) + +(add-html-rule (<ul> -> (tag-start + (word (and (= (end-offset tag-start) (start-offset word)) + (word-is word "ul"))) + common-attributes + tag-end) + :start tag-start + :name word + :attributes common-attributes + :end tag-end)) + +(defmethod display-parse-tree ((entity <ul>) (syntax html-syntax) pane) + (with-slots (start name attributes end) entity + (display-parse-tree start syntax pane) + (display-parse-tree name syntax pane) + (display-parse-tree attributes syntax pane) + (display-parse-tree end syntax pane))) + +(define-end-tag </ul> "ul") + +(define-list li-elements li-element) + +(defclass ul-element (block-level-element) + ((<ul> :initarg :<ul>) + (items :initarg :items) + (</ul> :initarg :</ul>))) + +(add-html-rule (ul-element -> (<ul> li-elements </ul>) + :<ul> <ul> :items li-elements :</ul> </ul>)) + +(defmethod display-parse-tree ((entity ul-element) (syntax html-syntax) pane) + (with-slots (<ul> items </ul>) entity + (display-parse-tree <ul> syntax pane) + (display-parse-tree items syntax pane) + (display-parse-tree </ul> syntax pane))) + ;;;;;;;;;;;;;;; body element
(defclass body-item (html-nonterminal) @@ -603,7 +699,7 @@ :stream pane)))))
(defmethod display-parse-tree :around ((entity html-tag) (syntax html-syntax) pane) - (with-drawing-options (pane :ink +green+) + (with-drawing-options (pane :ink +green4+) (call-next-method)))
(defmethod display-parse-tree :before ((entity html-token) (syntax html-syntax) pane)