Commit 7fd918b0 authored by Robert Strandh's avatar Robert Strandh

Added <ul>...</ul> and <li>...</li> elements.

Modified some html files to be conform.
parent 79355109
<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 @@ preliminary name of which is "Climacs" :</p>
<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>
\ No newline at end of file
......@@ -12,36 +12,36 @@ construit il y a plus de 20 ans maintenant, et les choix techniques de
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 @@ projets d'
<li><a href="syntax.text">Description du protocole "syntax"</a></li>
<li><a href="climacs.tar.gz">Code Lisp</a></li>
</ul>
</body>
</HTML>
\ No newline at end of file
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment