Mercurial > emacs
annotate lisp/enriched.el @ 22416:a517da228cb9
(uce-message-text): Change the text of message that is sent.
(uce-reply-to-uce): Do not assume all Received lines
are on top of message without headers like `From' or `To'.
(uce-reply-to-uce): Parse Received lines better.
(uce-mail-reader): New user option.
(uce-reply-to uce): Add support for Gnus. User is supposed to set
uce-mail-reader to `gnus' if using Gnus to read mail. The default is
to assume Rmail. There's no magic to determine what mail reader is
currently active, so it is not possible to mix using uce.el with Rmail
and Gnus.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 09 Jun 1998 23:40:56 +0000 |
parents | 892072fc83d6 |
children | 7f92e74313e7 |
rev | line source |
---|---|
13337 | 1 ;;; enriched.el --- read and save files in text/enriched format |
14169 | 2 |
16022
ac3fea1b270e
Add 1996 to copyright notice.
Richard M. Stallman <rms@gnu.org>
parents:
16021
diff
changeset
|
3 ;; Copyright (c) 1994, 1995, 1996 Free Software Foundation, Inc. |
9676 | 4 |
12082
257af4819582
Change email address for Boris.
Boris Goldowsky <boris@gnu.org>
parents:
11234
diff
changeset
|
5 ;; Author: Boris Goldowsky <boris@gnu.ai.mit.edu> |
9676 | 6 ;; Keywords: wp, faces |
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. | |
14169 | 14 |
9676 | 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. | |
14169 | 19 |
9676 | 20 ;; You should have received a copy of the GNU General Public License |
14169 | 21 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
9676 | 24 |
25 ;;; Commentary: | |
14169 | 26 |
9676 | 27 ;; This file implements reading, editing, and saving files with |
14169 | 28 ;; text-properties such as faces, levels of indentation, and true line |
29 ;; breaks distinguished from newlines just used to fit text into the window. | |
30 | |
9676 | 31 ;; The file format used is the MIME text/enriched format, which is a |
14169 | 32 ;; standard format defined in internet RFC 1563. All standard annotations |
33 ;; are supported except for <smaller> and <bigger>, which are currently not | |
9676 | 34 ;; possible to display. |
14169 | 35 |
9676 | 36 ;; A separate file, enriched.doc, contains further documentation and other |
14169 | 37 ;; important information about this code. It also serves as an example |
38 ;; file in text/enriched format. It should be in the etc directory of your | |
39 ;; emacs distribution. | |
40 | |
41 ;;; Code: | |
9676 | 42 |
43 (provide 'enriched) | |
44 | |
45 ;;; | |
46 ;;; Variables controlling the display | |
47 ;;; | |
48 | |
17426
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
49 (defgroup enriched nil |
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
50 "Read and save files in text/enriched format" |
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
51 :group 'wp) |
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
52 |
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
53 (defcustom enriched-verbose t |
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
54 "*If non-nil, give status messages when reading and writing files." |
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
55 :type 'boolean |
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
56 :group 'enriched) |
9676 | 57 |
58 ;;; | |
59 ;;; Set up faces & display table | |
60 ;;; | |
61 | |
18898
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
62 ;; Emacs doesn't have a "fixed" face by default, since all faces currently |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
63 ;; have to be fixed-width. So we just pick one that looks different from the |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
64 ;; default. |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
65 (defface fixed |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
66 '((t (:bold t))) |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
67 "Face used for text that must be shown in fixed width. |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
68 Currently, emacs can only display fixed-width fonts, but this may change. |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
69 This face is used for text specifically marked as fixed-width, for example |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
70 in text/enriched files." |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
71 :group 'enriched) |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
72 |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
73 (defface excerpt |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
74 '((t (:italic t))) |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
75 "Face used for text that is an excerpt from another document. |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
76 This is used in enriched-mode for text explicitly marked as an excerpt." |
fa6d68fd97b1
(fixed, excerpt): Define with defface. No longer
Richard M. Stallman <rms@gnu.org>
parents:
17426
diff
changeset
|
77 :group 'enriched) |
9676 | 78 |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
79 (defconst enriched-display-table (or (copy-sequence standard-display-table) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
80 (make-display-table))) |
9676 | 81 (aset enriched-display-table ?\f (make-vector (1- (frame-width)) ?-)) |
82 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
83 (defconst enriched-par-props '(left-margin right-margin justification) |
9676 | 84 "Text-properties that usually apply to whole paragraphs. |
85 These are set front-sticky everywhere except at hard newlines.") | |
86 | |
87 ;;; | |
88 ;;; Variables controlling the file format | |
89 ;;; (bidirectional) | |
90 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
91 (defconst enriched-initial-annotation |
9676 | 92 (lambda () |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
93 (format "Content-Type: text/enriched\nText-Width: %d\n\n" |
16021
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
94 fill-column)) |
9676 | 95 "What to insert at the start of a text/enriched file. |
96 If this is a string, it is inserted. If it is a list, it should be a lambda | |
97 expression, which is evaluated to get the string to insert.") | |
98 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
99 (defconst enriched-annotation-format "<%s%s>" |
9676 | 100 "General format of enriched-text annotations.") |
101 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
102 (defconst enriched-annotation-regexp "<\\(/\\)?\\([-A-za-z0-9]+\\)>" |
9676 | 103 "Regular expression matching enriched-text annotations.") |
104 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
105 (defconst enriched-translations |
9676 | 106 '((face (bold-italic "bold" "italic") |
107 (bold "bold") | |
108 (italic "italic") | |
109 (underline "underline") | |
110 (fixed "fixed") | |
111 (excerpt "excerpt") | |
112 (default ) | |
113 (nil enriched-encode-other-face)) | |
114 (left-margin (4 "indent")) | |
115 (right-margin (4 "indentright")) | |
116 (justification (none "nofill") | |
117 (right "flushright") | |
118 (left "flushleft") | |
10519
66c7e651194d
(enriched-annotation-list): property `hard-newline'
Richard M. Stallman <rms@gnu.org>
parents:
9694
diff
changeset
|
119 (full "flushboth") |
9676 | 120 (center "center")) |
121 (PARAMETER (t "param")) ; Argument of preceding annotation | |
122 ;; The following are not part of the standard: | |
123 (FUNCTION (enriched-decode-foreground "x-color") | |
124 (enriched-decode-background "x-bg-color")) | |
125 (read-only (t "x-read-only")) | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
126 (unknown (nil format-annotate-value)) |
9676 | 127 ; (font-size (2 "bigger") ; unimplemented |
128 ; (-2 "smaller")) | |
129 ) | |
130 "List of definitions of text/enriched annotations. | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
131 See `format-annotate-region' and `format-deannotate-region' for the definition |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
132 of this structure.") |
9676 | 133 |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
134 (defconst enriched-ignore |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
135 '(front-sticky rear-nonsticky hard) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
136 "Properties that are OK to ignore when saving text/enriched files. |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
137 Any property that is neither on this list nor dealt with by |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
138 `enriched-translations' will generate a warning.") |
9676 | 139 |
140 ;;; Internal variables | |
141 | |
142 (defvar enriched-mode nil | |
15239 | 143 "True if Enriched mode is in use.") |
9676 | 144 (make-variable-buffer-local 'enriched-mode) |
145 | |
146 (if (not (assq 'enriched-mode minor-mode-alist)) | |
147 (setq minor-mode-alist | |
148 (cons '(enriched-mode " Enriched") | |
149 minor-mode-alist))) | |
150 | |
17426
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
151 (defcustom enriched-mode-hook nil |
15239 | 152 "Functions to run when entering Enriched mode. |
9676 | 153 If you set variables in this hook, you should arrange for them to be restored |
15239 | 154 to their old values if you leave Enriched mode. One way to do this is to add |
17426
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
155 them and their old values to `enriched-old-bindings'." |
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
156 :type 'hook |
5c5fa38a1c79
Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17207
diff
changeset
|
157 :group 'enriched) |
9676 | 158 |
159 (defvar enriched-old-bindings nil | |
160 "Store old variable values that we change when entering mode. | |
161 The value is a list of \(VAR VALUE VAR VALUE...).") | |
162 (make-variable-buffer-local 'enriched-old-bindings) | |
163 | |
164 ;;; | |
165 ;;; Define the mode | |
166 ;;; | |
167 | |
9694
f8aa9230c3fa
(enriched-mode): Add autoload cookie.
Boris Goldowsky <boris@gnu.org>
parents:
9677
diff
changeset
|
168 ;;;###autoload |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
169 (defun enriched-mode (&optional arg) |
9676 | 170 "Minor mode for editing text/enriched files. |
171 These are files with embedded formatting information in the MIME standard | |
172 text/enriched format. | |
15239 | 173 Turning the mode on runs `enriched-mode-hook'. |
9676 | 174 |
15239 | 175 More information about Enriched mode is available in the file |
9676 | 176 etc/enriched.doc in the Emacs distribution directory. |
177 | |
178 Commands: | |
179 | |
180 \\<enriched-mode-map>\\{enriched-mode-map}" | |
181 (interactive "P") | |
182 (let ((mod (buffer-modified-p))) | |
183 (cond ((or (<= (prefix-numeric-value arg) 0) | |
184 (and enriched-mode (null arg))) | |
185 ;; Turn mode off | |
186 (setq enriched-mode nil) | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
187 (setq buffer-file-format (delq 'text/enriched buffer-file-format)) |
9676 | 188 ;; restore old variable values |
189 (while enriched-old-bindings | |
190 (funcall 'set (car enriched-old-bindings) | |
191 (car (cdr enriched-old-bindings))) | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
192 (setq enriched-old-bindings (cdr (cdr enriched-old-bindings))))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
193 |
9676 | 194 (enriched-mode nil) ; Mode already on; do nothing. |
195 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
196 (t (setq enriched-mode t) ; Turn mode on |
16021
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
197 (add-to-list 'buffer-file-format 'text/enriched) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
198 ;; Save old variable values before we change them. |
15239 | 199 ;; These will be restored if we exit Enriched mode. |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
200 (setq enriched-old-bindings |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
201 (list 'buffer-display-table buffer-display-table |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
202 'indent-line-function indent-line-function |
11129
2ce4b0aac50c
(enriched-mode): Use new plist-put and plist-get fns,
Boris Goldowsky <boris@gnu.org>
parents:
11055
diff
changeset
|
203 'default-text-properties default-text-properties)) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
204 (make-local-variable 'indent-line-function) |
11129
2ce4b0aac50c
(enriched-mode): Use new plist-put and plist-get fns,
Boris Goldowsky <boris@gnu.org>
parents:
11055
diff
changeset
|
205 (make-local-variable 'default-text-properties) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
206 (setq indent-line-function 'indent-to-left-margin |
16021
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
207 buffer-display-table enriched-display-table) |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
208 (use-hard-newlines 1 nil) |
11129
2ce4b0aac50c
(enriched-mode): Use new plist-put and plist-get fns,
Boris Goldowsky <boris@gnu.org>
parents:
11055
diff
changeset
|
209 (let ((sticky (plist-get default-text-properties 'front-sticky)) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
210 (p enriched-par-props)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
211 (while p |
16021
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
212 (add-to-list 'sticky (car p)) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
213 (setq p (cdr p))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
214 (if sticky |
11129
2ce4b0aac50c
(enriched-mode): Use new plist-put and plist-get fns,
Boris Goldowsky <boris@gnu.org>
parents:
11055
diff
changeset
|
215 (setq default-text-properties |
2ce4b0aac50c
(enriched-mode): Use new plist-put and plist-get fns,
Boris Goldowsky <boris@gnu.org>
parents:
11055
diff
changeset
|
216 (plist-put default-text-properties |
2ce4b0aac50c
(enriched-mode): Use new plist-put and plist-get fns,
Boris Goldowsky <boris@gnu.org>
parents:
11055
diff
changeset
|
217 'front-sticky sticky)))) |
15239 | 218 (run-hooks 'enriched-mode-hook))) |
9676 | 219 (set-buffer-modified-p mod) |
220 (force-mode-line-update))) | |
221 | |
222 ;;; | |
223 ;;; Keybindings | |
224 ;;; | |
225 | |
226 (defvar enriched-mode-map nil | |
15239 | 227 "Keymap for Enriched mode.") |
9676 | 228 |
229 (if (null enriched-mode-map) | |
230 (fset 'enriched-mode-map (setq enriched-mode-map (make-sparse-keymap)))) | |
231 | |
232 (if (not (assq 'enriched-mode minor-mode-map-alist)) | |
233 (setq minor-mode-map-alist | |
234 (cons (cons 'enriched-mode enriched-mode-map) | |
235 minor-mode-map-alist))) | |
236 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
237 (define-key enriched-mode-map "\C-a" 'beginning-of-line-text) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
238 (define-key enriched-mode-map "\C-m" 'reindent-then-newline-and-indent) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
239 (define-key enriched-mode-map "\C-j" 'reindent-then-newline-and-indent) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
240 (define-key enriched-mode-map "\M-j" 'facemenu-justification-menu) |
10519
66c7e651194d
(enriched-annotation-list): property `hard-newline'
Richard M. Stallman <rms@gnu.org>
parents:
9694
diff
changeset
|
241 (define-key enriched-mode-map "\M-S" 'set-justification-center) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
242 (define-key enriched-mode-map "\C-x\t" 'increase-left-margin) |
10519
66c7e651194d
(enriched-annotation-list): property `hard-newline'
Richard M. Stallman <rms@gnu.org>
parents:
9694
diff
changeset
|
243 (define-key enriched-mode-map "\C-c\C-l" 'set-left-margin) |
66c7e651194d
(enriched-annotation-list): property `hard-newline'
Richard M. Stallman <rms@gnu.org>
parents:
9694
diff
changeset
|
244 (define-key enriched-mode-map "\C-c\C-r" 'set-right-margin) |
9676 | 245 |
246 ;;; | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
247 ;;; Some functions dealing with text-properties, especially indentation |
9676 | 248 ;;; |
249 | |
250 (defun enriched-map-property-regions (prop func &optional from to) | |
251 "Apply a function to regions of the buffer based on a text property. | |
252 For each contiguous region of the buffer for which the value of PROPERTY is | |
253 eq, the FUNCTION will be called. Optional arguments FROM and TO specify the | |
254 region over which to scan. | |
255 | |
256 The specified function receives three arguments: the VALUE of the property in | |
257 the region, and the START and END of each region." | |
258 (save-excursion | |
259 (save-restriction | |
260 (if to (narrow-to-region (point-min) to)) | |
261 (goto-char (or from (point-min))) | |
262 (let ((begin (point)) | |
263 end | |
264 (marker (make-marker)) | |
265 (val (get-text-property (point) prop))) | |
266 (while (setq end (text-property-not-all begin (point-max) prop val)) | |
267 (move-marker marker end) | |
268 (funcall func val begin (marker-position marker)) | |
269 (setq begin (marker-position marker) | |
270 val (get-text-property marker prop))) | |
271 (if (< begin (point-max)) | |
272 (funcall func val begin (point-max))))))) | |
273 | |
274 (put 'enriched-map-property-regions 'lisp-indent-hook 1) | |
275 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
276 (defun enriched-insert-indentation (&optional from to) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
277 "Indent and justify each line in the region." |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
278 (save-excursion |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
279 (save-restriction |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
280 (if to (narrow-to-region (point-min) to)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
281 (goto-char (or from (point-min))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
282 (if (not (bolp)) (forward-line 1)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
283 (while (not (eobp)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
284 (if (eolp) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
285 nil ; skip blank lines |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
286 (indent-to (current-left-margin)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
287 (justify-current-line t nil t)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
288 (forward-line 1))))) |
9676 | 289 |
290 ;;; | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
291 ;;; Encoding Files |
9676 | 292 ;;; |
293 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
294 ;;;###autoload |
16021
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
295 (defun enriched-encode (from to orig-buf) |
9676 | 296 (if enriched-verbose (message "Enriched: encoding document...")) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
297 (save-restriction |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
298 (narrow-to-region from to) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
299 (delete-to-left-margin) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
300 (unjustify-region) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
301 (goto-char from) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
302 (format-replace-strings '(("<" . "<<"))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
303 (format-insert-annotations |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
304 (format-annotate-region from (point-max) enriched-translations |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
305 'enriched-make-annotation enriched-ignore)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
306 (goto-char from) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
307 (insert (if (stringp enriched-initial-annotation) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
308 enriched-initial-annotation |
16021
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
309 (save-excursion |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
310 ;; Eval this in the buffer we are annotating. This |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
311 ;; fixes a bug which was saving incorrect File-Width |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
312 ;; information, since we were looking at local |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
313 ;; variables in the wrong buffer. |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
314 (if orig-buf (set-buffer orig-buf)) |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
315 (funcall enriched-initial-annotation)))) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
316 (enriched-map-property-regions 'hard |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
317 (lambda (v b e) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
318 (if (and v (= ?\n (char-after b))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
319 (progn (goto-char b) (insert "\n")))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
320 (point) nil) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
321 (if enriched-verbose (message nil)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
322 ;; Return new end. |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
323 (point-max))) |
9676 | 324 |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
325 (defun enriched-make-annotation (name positive) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
326 "Format an annotation called NAME. |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
327 If POSITIVE is non-nil, this is the opening annotation, if nil, this is the |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
328 matching close." |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
329 (cond ((stringp name) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
330 (format enriched-annotation-format (if positive "" "/") name)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
331 ;; Otherwise it is an annotation with parameters, represented as a list |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
332 (positive |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
333 (let ((item (car name)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
334 (params (cdr name))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
335 (concat (format enriched-annotation-format "" item) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
336 (mapconcat (lambda (i) (concat "<param>" i "</param>")) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
337 params "")))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
338 (t (format enriched-annotation-format "/" (car name))))) |
9676 | 339 |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
340 (defun enriched-encode-other-face (old new) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
341 "Generate annotations for random face change. |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
342 One annotation each for foreground color, background color, italic, etc." |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
343 (cons (and old (enriched-face-ans old)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
344 (and new (enriched-face-ans new)))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
345 |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
346 (defun enriched-face-ans (face) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
347 "Return annotations specifying FACE." |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
348 (cond ((string-match "^fg:" (symbol-name face)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
349 (list (list "x-color" (substring (symbol-name face) 3)))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
350 ((string-match "^bg:" (symbol-name face)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
351 (list (list "x-bg-color" (substring (symbol-name face) 3)))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
352 ((let* ((fg (face-foreground face)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
353 (bg (face-background face)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
354 (props (face-font face t)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
355 (ans (cdr (format-annotate-single-property-change |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
356 'face nil props enriched-translations)))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
357 (if fg (setq ans (cons (list "x-color" fg) ans))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
358 (if bg (setq ans (cons (list "x-bg-color" bg) ans))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
359 ans)))) |
9676 | 360 |
361 ;;; | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
362 ;;; Decoding files |
9676 | 363 ;;; |
364 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
365 ;;;###autoload |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
366 (defun enriched-decode (from to) |
9676 | 367 (if enriched-verbose (message "Enriched: decoding document...")) |
16021
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
368 (use-hard-newlines 1 'never) |
9676 | 369 (save-excursion |
370 (save-restriction | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
371 (narrow-to-region from to) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
372 (goto-char from) |
16021
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
373 |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
374 ;; Deal with header |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
375 (let ((file-width (enriched-get-file-width))) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
376 (enriched-remove-header) |
9676 | 377 |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
378 ;; Deal with newlines |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
379 (while (search-forward-regexp "\n\n+" nil t) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
380 (if (current-justification) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
381 (delete-char -1)) |
16021
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
382 (set-hard-newline-properties (match-beginning 0) (point))) |
9676 | 383 |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
384 ;; Translate annotations |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
385 (format-deannotate-region from (point-max) enriched-translations |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
386 'enriched-next-annotation) |
9676 | 387 |
16021
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
388 ;; Indent or fill the buffer |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
389 (cond (file-width ; File was filled to this width |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
390 (setq fill-column file-width) |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
391 (if enriched-verbose (message "Indenting...")) |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
392 (enriched-insert-indentation)) |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
393 (t ; File was not filled. |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
394 (if enriched-verbose (message "Filling paragraphs...")) |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
395 (fill-region (point-min) (point-max)))) |
d6a8a05960d5
Don't fill based on window width.
Richard M. Stallman <rms@gnu.org>
parents:
15239
diff
changeset
|
396 (if enriched-verbose (message nil))) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
397 (point-max)))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
398 |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
399 (defun enriched-next-annotation () |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
400 "Find and return next text/enriched annotation. |
13488
71c747dc59ca
(enriched-next-annotation): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
13337
diff
changeset
|
401 Any \"<<\" strings encountered are converted to \"<\". |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
402 Return value is \(begin end name positive-p), or nil if none was found." |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
403 (while (and (search-forward "<" nil 1) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
404 (progn (goto-char (match-beginning 0)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
405 (not (looking-at enriched-annotation-regexp)))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
406 (forward-char 1) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
407 (if (= ?< (char-after (point))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
408 (delete-char 1) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
409 ;; A single < that does not start an annotation is an error, |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
410 ;; which we note and then ignore. |
14340
bf1d862f3673
(enriched-next-annotation): Delete format call inside message.
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
411 (message "Warning: malformed annotation in file at %s" |
bf1d862f3673
(enriched-next-annotation): Delete format call inside message.
Karl Heuer <kwzh@gnu.org>
parents:
14169
diff
changeset
|
412 (1- (point))))) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
413 (if (not (eobp)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
414 (let* ((beg (match-beginning 0)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
415 (end (match-end 0)) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
416 (name (downcase (buffer-substring |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
417 (match-beginning 2) (match-end 2)))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
418 (pos (not (match-beginning 1)))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
419 (list beg end name pos)))) |
9676 | 420 |
421 (defun enriched-get-file-width () | |
422 "Look for file width information on this line." | |
423 (save-excursion | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
424 (if (search-forward "Text-Width: " (+ (point) 1000) t) |
9676 | 425 (read (current-buffer))))) |
426 | |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
427 (defun enriched-remove-header () |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
428 "Remove file-format header at point." |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
429 (while (looking-at "^[-A-Za-z]+: .*\n") |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
430 (delete-region (point) (match-end 0))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
431 (if (looking-at "^\n") |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
432 (delete-char 1))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
433 |
17207
2d0b382efa26
(enriched-decode-foreground, enriched-decode-background):
Richard M. Stallman <rms@gnu.org>
parents:
16022
diff
changeset
|
434 (defun enriched-decode-foreground (from to &optional color) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
435 (let ((face (intern (concat "fg:" color)))) |
17207
2d0b382efa26
(enriched-decode-foreground, enriched-decode-background):
Richard M. Stallman <rms@gnu.org>
parents:
16022
diff
changeset
|
436 (cond ((null color) |
2d0b382efa26
(enriched-decode-foreground, enriched-decode-background):
Richard M. Stallman <rms@gnu.org>
parents:
16022
diff
changeset
|
437 (message "Warning: no color specified for <x-color>")) |
2d0b382efa26
(enriched-decode-foreground, enriched-decode-background):
Richard M. Stallman <rms@gnu.org>
parents:
16022
diff
changeset
|
438 ((internal-find-face face)) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
439 ((and window-system (facemenu-get-face face))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
440 ((make-face face) |
17207
2d0b382efa26
(enriched-decode-foreground, enriched-decode-background):
Richard M. Stallman <rms@gnu.org>
parents:
16022
diff
changeset
|
441 (message "Warning: color `%s' can't be displayed" color))) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
442 (list from to 'face face))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
443 |
17207
2d0b382efa26
(enriched-decode-foreground, enriched-decode-background):
Richard M. Stallman <rms@gnu.org>
parents:
16022
diff
changeset
|
444 (defun enriched-decode-background (from to &optional color) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
445 (let ((face (intern (concat "bg:" color)))) |
17207
2d0b382efa26
(enriched-decode-foreground, enriched-decode-background):
Richard M. Stallman <rms@gnu.org>
parents:
16022
diff
changeset
|
446 (cond ((null color) |
2d0b382efa26
(enriched-decode-foreground, enriched-decode-background):
Richard M. Stallman <rms@gnu.org>
parents:
16022
diff
changeset
|
447 (message "Warning: no color specified for <x-bg-color>")) |
2d0b382efa26
(enriched-decode-foreground, enriched-decode-background):
Richard M. Stallman <rms@gnu.org>
parents:
16022
diff
changeset
|
448 ((internal-find-face face)) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
449 ((and window-system (facemenu-get-face face))) |
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
450 ((make-face face) |
17207
2d0b382efa26
(enriched-decode-foreground, enriched-decode-background):
Richard M. Stallman <rms@gnu.org>
parents:
16022
diff
changeset
|
451 (message "Warning: color `%s' can't be displayed" color))) |
11055
c8790275a636
Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents:
10519
diff
changeset
|
452 (list from to 'face face))) |
9676 | 453 |
454 ;;; enriched.el ends here |