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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13337
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 12371
diff changeset
1 ;;; enriched.el --- read and save files in text/enriched format
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
6 ;; Keywords: wp, faces
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
7
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
9
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
13 ;; any later version.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
14
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
19
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
23 ;; Boston, MA 02111-1307, USA.
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
24
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
26
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
27 ;; This file implements reading, editing, and saving files with
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
28 ;; text-properties such as faces, levels of indentation, and true line
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
29 ;; breaks distinguished from newlines just used to fit text into the window.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
30
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
31 ;; The file format used is the MIME text/enriched format, which is a
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
32 ;; standard format defined in internet RFC 1563. All standard annotations
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
33 ;; are supported except for <smaller> and <bigger>, which are currently not
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
34 ;; possible to display.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
35
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
36 ;; A separate file, enriched.doc, contains further documentation and other
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
37 ;; important information about this code. It also serves as an example
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
38 ;; file in text/enriched format. It should be in the etc directory of your
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
39 ;; emacs distribution.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
40
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13488
diff changeset
41 ;;; Code:
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
42
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
43 (provide 'enriched)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
44
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
45 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
46 ;;; Variables controlling the display
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
47 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
57
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
58 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
59 ;;; Set up faces & display table
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
60 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
81 (aset enriched-display-table ?\f (make-vector (1- (frame-width)) ?-))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
84 "Text-properties that usually apply to whole paragraphs.
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
85 These are set front-sticky everywhere except at hard newlines.")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
86
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
87 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
88 ;;; Variables controlling the file format
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
89 ;;; (bidirectional)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
95 "What to insert at the start of a text/enriched file.
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
96 If this is a string, it is inserted. If it is a list, it should be a lambda
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
97 expression, which is evaluated to get the string to insert.")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
100 "General format of enriched-text annotations.")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
103 "Regular expression matching enriched-text annotations.")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
104
11055
c8790275a636 Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents: 10519
diff changeset
105 (defconst enriched-translations
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
106 '((face (bold-italic "bold" "italic")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
107 (bold "bold")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
108 (italic "italic")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
109 (underline "underline")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
110 (fixed "fixed")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
111 (excerpt "excerpt")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
112 (default )
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
113 (nil enriched-encode-other-face))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
114 (left-margin (4 "indent"))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
115 (right-margin (4 "indentright"))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
116 (justification (none "nofill")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
117 (right "flushright")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
120 (center "center"))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
121 (PARAMETER (t "param")) ; Argument of preceding annotation
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
122 ;; The following are not part of the standard:
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
123 (FUNCTION (enriched-decode-foreground "x-color")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
124 (enriched-decode-background "x-bg-color"))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
127 ; (font-size (2 "bigger") ; unimplemented
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
128 ; (-2 "smaller"))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
129 )
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
139
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
140 ;;; Internal variables
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
141
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
142 (defvar enriched-mode nil
15239
299516818a79 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14340
diff changeset
143 "True if Enriched mode is in use.")
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
144 (make-variable-buffer-local 'enriched-mode)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
145
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
146 (if (not (assq 'enriched-mode minor-mode-alist))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
147 (setq minor-mode-alist
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
148 (cons '(enriched-mode " Enriched")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
149 minor-mode-alist)))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
299516818a79 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14340
diff changeset
152 "Functions to run when entering Enriched mode.
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
153 If you set variables in this hook, you should arrange for them to be restored
15239
299516818a79 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14340
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
158
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
159 (defvar enriched-old-bindings nil
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
160 "Store old variable values that we change when entering mode.
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
161 The value is a list of \(VAR VALUE VAR VALUE...).")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
162 (make-variable-buffer-local 'enriched-old-bindings)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
163
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
164 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
165 ;;; Define the mode
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
166 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
170 "Minor mode for editing text/enriched files.
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
171 These are files with embedded formatting information in the MIME standard
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
172 text/enriched format.
15239
299516818a79 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14340
diff changeset
173 Turning the mode on runs `enriched-mode-hook'.
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
174
15239
299516818a79 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14340
diff changeset
175 More information about Enriched mode is available in the file
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
176 etc/enriched.doc in the Emacs distribution directory.
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
177
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
178 Commands:
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
179
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
180 \\<enriched-mode-map>\\{enriched-mode-map}"
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
181 (interactive "P")
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
182 (let ((mod (buffer-modified-p)))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
183 (cond ((or (<= (prefix-numeric-value arg) 0)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
184 (and enriched-mode (null arg)))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
185 ;; Turn mode off
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
188 ;; restore old variable values
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
189 (while enriched-old-bindings
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
190 (funcall 'set (car enriched-old-bindings)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
194 (enriched-mode nil) ; Mode already on; do nothing.
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
299516818a79 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14340
diff changeset
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
299516818a79 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14340
diff changeset
218 (run-hooks 'enriched-mode-hook)))
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
219 (set-buffer-modified-p mod)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
220 (force-mode-line-update)))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
221
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
222 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
223 ;;; Keybindings
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
224 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
225
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
226 (defvar enriched-mode-map nil
15239
299516818a79 Several doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 14340
diff changeset
227 "Keymap for Enriched mode.")
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
228
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
229 (if (null enriched-mode-map)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
230 (fset 'enriched-mode-map (setq enriched-mode-map (make-sparse-keymap))))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
231
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
232 (if (not (assq 'enriched-mode minor-mode-map-alist))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
233 (setq minor-mode-map-alist
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
234 (cons (cons 'enriched-mode enriched-mode-map)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
235 minor-mode-map-alist)))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
245
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
248 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
249
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
250 (defun enriched-map-property-regions (prop func &optional from to)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
251 "Apply a function to regions of the buffer based on a text property.
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
252 For each contiguous region of the buffer for which the value of PROPERTY is
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
253 eq, the FUNCTION will be called. Optional arguments FROM and TO specify the
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
254 region over which to scan.
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
255
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
256 The specified function receives three arguments: the VALUE of the property in
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
257 the region, and the START and END of each region."
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
258 (save-excursion
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
259 (save-restriction
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
260 (if to (narrow-to-region (point-min) to))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
261 (goto-char (or from (point-min)))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
262 (let ((begin (point))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
263 end
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
264 (marker (make-marker))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
265 (val (get-text-property (point) prop)))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
266 (while (setq end (text-property-not-all begin (point-max) prop val))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
267 (move-marker marker end)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
268 (funcall func val begin (marker-position marker))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
269 (setq begin (marker-position marker)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
270 val (get-text-property marker prop)))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
271 (if (< begin (point-max))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
272 (funcall func val begin (point-max)))))))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
273
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
274 (put 'enriched-map-property-regions 'lisp-indent-hook 1)
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
289
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
290 ;;;
11055
c8790275a636 Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents: 10519
diff changeset
291 ;;; Encoding Files
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
292 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
360
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
361 ;;;
11055
c8790275a636 Rewrite, many things moved to format.el.
Boris Goldowsky <boris@gnu.org>
parents: 10519
diff changeset
362 ;;; Decoding files
9676
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
363 ;;;
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
369 (save-excursion
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
420
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
421 (defun enriched-get-file-width ()
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
422 "Look for file width information on this line."
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
425 (read (current-buffer)))))
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
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
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
453
03324d1a8d7f Initial revision
Boris Goldowsky <boris@gnu.org>
parents:
diff changeset
454 ;;; enriched.el ends here