Mercurial > hg > xemacs-beta
comparison lisp/modes/linuxdoc-sgml.el @ 167:85ec50267440 r20-3b10
Import from CVS: tag r20-3b10
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:45:46 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
166:7a77eb660975 | 167:85ec50267440 |
---|---|
1 ;;; linuxdoc-sgml.el --- sgml-mode enhancements for linuxdoc | |
2 | |
3 ;; Copyright (C) 1996 by Free Software Foundation, Inc. | |
4 | |
5 ;; Author: Arun Sharma <asharma@sco.com> | |
6 ;; Keywords: docs, languages | |
7 | |
8 ;; This file is part of GNU Emacs. | |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
12 ;; the Free Software Foundation; either version 2, or (at your option) | |
13 ;; any later version. | |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
21 ;; along with GNU Emacs; see the file COPYING. If not, write to | |
22 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
24 | |
25 ;;; Commentary: | |
26 | |
27 ;; Installation: | |
28 ;; Make sure that this file is in your load-path and put this line | |
29 ;; in your .emacs. | |
30 ;; (autoload 'linuxdoc-sgml-mode "linuxdoc-sgml" t t) | |
31 ;; (setq auto-mode-alist (cons '("\\.sgml$" . linuxdoc-sgml-mode) | |
32 ;; auto-mode-alist)) | |
33 ;; | |
34 ;; Optionally: | |
35 ;; (add-hook 'linuxdoc-sgml-mode-hook 'turn-on-font-lock) | |
36 ;; | |
37 ;; Caveat: I've had problems getting sgml/html code to work with | |
38 ;; lazy-lock. Currently under investigation. | |
39 ;;; Code: | |
40 | |
41 (require 'sgml-mode) | |
42 | |
43 (defvar linuxdoc-sgml-tag-alist | |
44 (let* ((htmlurl '(("ftp:") ("file:") ("finger:") | |
45 ("gopher:") ("http:") ("mailto:") ("news:") | |
46 ("rlogin:") ("telnet:") ("tn3270:") ("wais:") | |
47 ("/cgi-bin/"))) | |
48 (name '(str)) | |
49 (id '(str))) | |
50 `(("abstract" \n) | |
51 ("article" \n) | |
52 ("author" t) | |
53 ("bf") | |
54 ("date" t) | |
55 ("descrip" \n) | |
56 ("enum" \n) | |
57 ("footnote") | |
58 ("htmlurl" t ("url" ,@htmlurl) ("name" ,@name)) | |
59 ("item" t) | |
60 ("itemize" \n) | |
61 ("label" ("id" ,@id)) | |
62 ("p" t) | |
63 ("quote" \n) | |
64 ("ref" t ("id") ("name" ,@name)) | |
65 ("sect" (t (setq str (read-input "Sect: ")) "\n<p>\n")) | |
66 ("sect1" (t (setq str (read-input "Sect1: ")) "\n<p>\n")) | |
67 ("sect2" (t (setq str (read-input "Sect2: ")) "\n<p>\n")) | |
68 ("sect3" (t (setq str (read-input "Sect3: ")) "\n<p>\n")) | |
69 ("sect4" (t (setq str (read-input "Sect4: ")) "\n<p>\n")) | |
70 ("tag //" t) | |
71 ("title" (t (setq str (read-input "Title: ")) "\n")) | |
72 ("toc" t) | |
73 ("tscreen") | |
74 ("tt" (nil (setq str (read-input "Text: ")))) | |
75 ("url" t ("url" ,@htmlurl) ("name" ,@name)) | |
76 ("verb" \n))) | |
77 "Linuxdoc specific tags") | |
78 | |
79 (defvar linuxdoc-sgml-tag-help | |
80 '(("abstract" . "Abstract of the document") | |
81 ("article" . "Beginning of the article") | |
82 ("author" . "Name of the Author") | |
83 ("bf" . "Bold font") | |
84 ("date" . "Date") | |
85 ("descrip" . "Description environment") | |
86 ("enum" . "Enumerated items") | |
87 ("footnote" . "Footnotes") | |
88 ("htmlurl" . "Insert a URL that shows up only in the HTML version") | |
89 ("item" . "An enumerated or unordered item") | |
90 ("itemize" . "Unordered list") | |
91 ("label" . "A label for cross reference") | |
92 ("p" . "Marks the end of the sect* tag") | |
93 ("quote" . "Quote a piece of text") | |
94 ("ref" . "Cross reference") | |
95 ("sect" . "Main section heading") | |
96 ("sect1" . "Level 1 section heading") | |
97 ("sect2" . "Level 2 section heading") | |
98 ("sect3" . "Level 3 section heading") | |
99 ("sect4" . "Level 4 section heading") | |
100 ("tag //" . "A description tag") | |
101 ("title" . "Title of the document") | |
102 ("toc" . "The table of contents") | |
103 ("tscreen" . "Indents the text and uses tt font") | |
104 ("tt" . "Uses the tt font") | |
105 ("url" . "Insert a URL") | |
106 ("verb" . "The text will be typed verbatim")) | |
107 "Help for linuxdoc specific tags") | |
108 | |
109 (defvar linuxdoc-sgml-tag-face-alist | |
110 '(("abstract" . underline) | |
111 ("article" . italic) | |
112 ("author" . italic) | |
113 ("bf" . bold) | |
114 ("date" . italic) | |
115 ("descrip" . font-lock-reference-face) | |
116 ("enum" . font-lock-type-face) | |
117 ("footnote" . font-lock-keyword-face) | |
118 ("htmlurl" . font-lock-string-face) | |
119 ("item" . font-lock-function-name-face) | |
120 ("itemize" . font-lock-type-face) | |
121 ("label" . font-lock-comment-face) | |
122 ("p" . default) | |
123 ("quote" . underline) | |
124 ("ref" . font-lock-comment-face) | |
125 ("sect" . underline) | |
126 ("sect1" . underline) | |
127 ("sect2" . underline) | |
128 ("sect3" . underline) | |
129 ("sect4" . underline) | |
130 ("tag" . font-lock-function-name-face) | |
131 ("title" . underline) | |
132 ("toc" . default) | |
133 ("tscreen" . underline) | |
134 ("tt" . underline) | |
135 ("url" . font-lock-string-face) | |
136 ("verb" . underline)) | |
137 "Value of `sgml-tag-face-alist' for linuxdoc-sgml mode.") | |
138 | |
139 (defvar linuxdoc-sgml-font-lock-keywords | |
140 '(("<\\([^>]*\\)>" . font-lock-comment-face)) | |
141 "Patterns to highlight in LD-SGML buffers.") | |
142 | |
143 ;;;###autoload | |
144 (defun linuxdoc-sgml-mode () | |
145 "Major mode based on SGML mode for editing linuxdoc-sgml documents. | |
146 See the documentation on sgml-mode for more info. This mode | |
147 understands the linuxdoc-sgml tags." | |
148 (interactive) | |
149 (sgml-mode-common linuxdoc-sgml-tag-face-alist nil) | |
150 (use-local-map sgml-mode-map) | |
151 (make-local-variable 'sgml-tag-alist) | |
152 (make-local-variable 'sgml-face-tag-alist) | |
153 (make-local-variable 'sgml-tag-help) | |
154 (make-local-variable 'outline-regexp) | |
155 (make-local-variable 'outline-heading-end-regexp) | |
156 (make-local-variable 'outline-level) | |
157 (make-local-variable 'sgml-font-lock-keywords) | |
158 (setq mode-name "LD-SGML" | |
159 major-mode 'linuxdoc-sgml-mode | |
160 sgml-tag-alist linuxdoc-sgml-tag-alist | |
161 sgml-face-tag-alist linuxdoc-sgml-tag-face-alist | |
162 sgml-tag-help linuxdoc-sgml-tag-help | |
163 outline-regexp "^.*<sect[1-4]\\>" | |
164 outline-heading-end-regexp "<p>" | |
165 sgml-font-lock-keywords-1 (append sgml-font-lock-keywords-1 | |
166 linuxdoc-sgml-font-lock-keywords | |
167 sgml-font-lock-keywords) | |
168 | |
169 outline-level (lambda () | |
170 (char-after (1- (match-end 0))))) | |
171 (run-hooks 'linuxdoc-sgml-mode-hook)) | |
172 | |
173 | |
174 (provide 'linuxdoc-sgml) | |
175 | |
176 ;;; linuxdoc-sgml.el ends here |