annotate lisp/psgml/psgml-fs.el @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents ac2d302a0011
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
ac2d302a0011 Import from CVS: tag r19-15b2
cvs
parents: 0
diff changeset
1 ;;; psgml-fs.el --- Format a SGML-file according to a style file
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 ;; Copyright (C) 1995 Lennart Staflin
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 ;; Author: Lennart Staflin <lenst@lysator.liu.se>
70
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents: 2
diff changeset
5 ;; Version: $Id: psgml-fs.el,v 1.1.1.1 1996/12/18 22:43:36 steve Exp $
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 ;; Keywords:
2
ac2d302a0011 Import from CVS: tag r19-15b2
cvs
parents: 0
diff changeset
7 ;; Last edited: Thu Mar 21 22:32:27 1996 by lenst@triton.lstaflin.pp.se (Lennart Staflin)
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 ;;; This program is free software; you can redistribute it and/or modify
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 ;;; it under the terms of the GNU General Public License as published by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 ;;; the Free Software Foundation; either version 1, or (at your option)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 ;;; any later version.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 ;;; This program is distributed in the hope that it will be useful,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 ;;; GNU General Public License for more details.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 ;;; A copy of the GNU General Public License can be obtained from this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 ;;; program's author (send electronic mail to lenst@lysator.liu.se) or from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 ;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 ;;; 02139, USA.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 ;;; Commentary:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25
2
ac2d302a0011 Import from CVS: tag r19-15b2
cvs
parents: 0
diff changeset
26 ;; The function `style-format' formats the SGML-file in the current
ac2d302a0011 Import from CVS: tag r19-15b2
cvs
parents: 0
diff changeset
27 ;; buffer according to the style defined in the file `psgml-style.fs'
ac2d302a0011 Import from CVS: tag r19-15b2
cvs
parents: 0
diff changeset
28 ;; (or the file given by the variable `fs-style').
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 ;; To try it load this file and open the test file example.sgml. Then
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31 ;; run the emacs command `M-x style-format'.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 ;; The style file should contain a single Lisp list. The elements of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 ;; this list, are them self lists, describe the style for an element type.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 ;; The sublists begin with the generic identifier for the element types and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 ;; the rest of the list are characteristic/value pairs.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 ;; E.g. ("p" block t left 4 top 2)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 ;; Defines the style for p-elements to be blocks with left margin 4 and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 ;; at least to blank lines before the block.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 ;;; Code:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 (require 'psgml-api)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 ;;;; Formatting parameters
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 (defvar fs-char
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 '((left . 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 (first . nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 (default-top . 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 (default-bottom . 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 (ignore-empty-para . nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 (literal . nil)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 (defvar fs-special-styles
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 '(top bottom before after hang-from text)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 "Style attribues that should not be entered in the characteristics table.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 ;;;; Formatting engine
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 (defun fs-char (p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 (cdr (assq p fs-char)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 (defvar fs-para-acc ""
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 "Accumulate text of paragraph")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 (defvar fs-hang-from nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 "Hanging indent of current pargraph")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 (defvar fs-first-indent nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 (defvar fs-left-indent nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 (defvar fs-vspace 0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 "Vertical space after last paragraph")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 (defun fs-addvspace (n)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 (when (> n fs-vspace)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81 (princ (make-string (- n fs-vspace) ?\n))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 (setq fs-vspace n)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 (defun fs-para ()
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 (when (if (fs-char 'ignore-epmty-para)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 (string-match "[^\t\n ]" fs-para-acc)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88 fs-left-indent)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89 (assert fs-left-indent)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 (fs-output-para fs-para-acc fs-first-indent fs-left-indent
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91 fs-hang-from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92 (fs-char 'literal))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 (setq fs-vspace 0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94 fs-hang-from nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 (setq fs-para-acc ""
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 fs-first-indent nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 fs-left-indent nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99 (defun fs-paraform-data (data)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100 (unless fs-left-indent
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101 (setq fs-left-indent (fs-char 'left)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102 fs-first-indent (fs-char 'first)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
103 (setq fs-para-acc (concat fs-para-acc data)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
104
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105 (defun fs-output-para (text first-indent indent hang-from literal)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
106 (sgml-push-to-string text)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
107 (let ((indent-tabs-mode nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
108 (fill-prefix (make-string indent ? )))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
109 (cond
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
110 (literal
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
111 (goto-char (point-max))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
112 (unless (bolp)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
113 (insert ?\n))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
114 (goto-char (point-min))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
115 (while (not (eobp))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
116 (insert fill-prefix)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
117 (beginning-of-line 2)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
118 (t
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
119 (while (re-search-forward "[ \t\n\r]+" nil t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
120 (replace-match " "))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
121 (goto-char (point-min))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
122 (delete-horizontal-space)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
123 (insert
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
124 (if hang-from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
125 hang-from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
126 (make-string (or first-indent indent) ? )))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
127 (fill-region-as-paragraph (point-min) (point-max))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
128 ))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
129 (princ (buffer-string)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
130 (sgml-pop-entity))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
131
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
132 (defun fs-element-content (e)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
133 (let ((fs-para-acc ""))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
134 (sgml-map-content e
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
135 (function fs-paraform-phrase)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
136 (function fs-paraform-data)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
137 nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
138 (function fs-paraform-entity))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
139 fs-para-acc))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
140
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
141 (defun fs-paraform-phrase (e)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
142 (sgml-map-content e
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
143 (function fs-paraform-phrase)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
144 (function fs-paraform-data)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
145 nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
146 (function fs-paraform-entity)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
147
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
148 (defun fs-paraform-entity (entity)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
149 (let ((entity-map (fs-char 'entity-map))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
150 (text nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
151 (when entity-map
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
152 (setq text
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
153 (loop for (name val) on entity-map by 'cddr
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
154 thereis (if (equal name (sgml-entity-name entity))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
155 val))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
156 (unless text
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
157 (setq text (sgml-entity-text entity)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
158 (fs-paraform-data text)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
159
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
160 ;;;; Style driven engine
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
161
2
ac2d302a0011 Import from CVS: tag r19-15b2
cvs
parents: 0
diff changeset
162 (defvar fs-style "psgml-style.fs"
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
163 "*Style sheet to use for `style-format'.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
164 The value can be the style-sheet list, or it can be a file name
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
165 \(string) of a file containing the style sheet or it can be the name
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
166 \(symbol) of a variable containing the style sheet." )
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
167
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
168 (defvar fs-cached-styles nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
169
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
170 (defun fs-get-style (style)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
171 (cond ((stringp style)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
172 (sgml-cache-catalog style
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
173 'fs-cached-styles
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
174 (function (lambda ()
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
175 (read (current-buffer))))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
176 ((symbolp style)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
177 (fs-get-style (symbol-value style)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
178 ((listp style)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
179 style)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
180 (t
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
181 (error "Illegal style value: %s" style))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
182
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
183 (defun fs-engine (e)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
184 (fs-do-style e
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
185 (cdr (or (assoc (sgml-element-gi e) fs-style)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
186 (assq t fs-style)))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
187
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
188 (defun fs-do-style (e style)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
189 (let ((hang-from (getf style 'hang-from)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
190 (when hang-from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
191 (setq fs-hang-from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
192 (format "%s%s "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
193 (make-string (fs-char 'left) ? )
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
194 (eval hang-from)))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
195 (let ((fs-char (nconc
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
196 (loop for st on style by 'cddr
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
197 unless (memq (car st) fs-special-styles)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
198 collect (cons (car st)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
199 (eval (cadr st))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
200 fs-char)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
201 (when (getf style 'block)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
202 (fs-para)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
203 (fs-addvspace (or (getf style 'top)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
204 (fs-char 'default-top))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
205 (let ((before (getf style 'before)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
206 (when before
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
207 (fs-do-style e before)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
208 (cond ((getf style 'text)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
209 (fs-paraform-data (eval (getf style 'text))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
210 (t
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
211 (sgml-map-content e
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
212 (function fs-engine)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
213 (function fs-paraform-data)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
214 nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
215 (function fs-paraform-entity))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
216 (let ((after (getf style 'after)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
217 (when after
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
218 (fs-do-style e after)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
219 (when (getf style 'block)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
220 (fs-para)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
221 (fs-addvspace (or (getf style 'bottom)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
222 (fs-char 'default-bottom))))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
223
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
224 ;;;###autoload
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
225 (defun style-format ()
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
226 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
227 (setq fs-para-acc "")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
228 (let ((fs-style (fs-get-style fs-style)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
229 (with-output-to-temp-buffer "*Formatted*"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
230 (fs-engine (sgml-top-element))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
231 (fs-para))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
232
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
233
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
234
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
235 ;;;; Helper functions for use in style sheet
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
236
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
237 (defun fs-attval (name)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
238 (sgml-element-attval e name))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
239
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
240
2
ac2d302a0011 Import from CVS: tag r19-15b2
cvs
parents: 0
diff changeset
241 ;;; psgml-fs.el ends here