(Info-summary): Clear buffer-read-only.
[bpt/emacs.git] / lisp / gnus-ems.el
CommitLineData
41487370 1;;; gnus-ems.el --- functions for making Gnus work under different Emacsen
231f989b 2;; Copyright (C) 1995,96 Free Software Foundation, Inc.
41487370
LMI
3
4;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
5;; Keywords: news
6
7;; This file is part of GNU Emacs.
8
9;; GNU Emacs is free software; you can redistribute it and/or modify
10;; it under the terms of the GNU General Public License as published by
11;; the Free Software Foundation; either version 2, or (at your option)
12;; any later version.
13
14;; GNU Emacs is distributed in the hope that it will be useful,
15;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;; GNU General Public License for more details.
18
19;; You should have received a copy of the GNU General Public License
b578f267
EN
20;; along with GNU Emacs; see the file COPYING. If not, write to the
21;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22;; Boston, MA 02111-1307, USA.
41487370
LMI
23
24;;; Commentary:
25
26;;; Code:
27
231f989b
LMI
28(eval-when-compile (require 'cl))
29
41487370 30(defvar gnus-mouse-2 [mouse-2])
41487370
LMI
31
32(defalias 'gnus-make-overlay 'make-overlay)
33(defalias 'gnus-overlay-put 'overlay-put)
34(defalias 'gnus-move-overlay 'move-overlay)
231f989b
LMI
35(defalias 'gnus-overlay-end 'overlay-end)
36(defalias 'gnus-extent-detached-p 'ignore)
37(defalias 'gnus-extent-start-open 'ignore)
38(defalias 'gnus-set-text-properties 'set-text-properties)
39(defalias 'gnus-group-remove-excess-properties 'ignore)
40(defalias 'gnus-topic-remove-excess-properties 'ignore)
41(defalias 'gnus-appt-select-lowest-window 'appt-select-lowest-window)
42(defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names)
43(defalias 'gnus-make-local-hook 'make-local-hook)
44(defalias 'gnus-add-hook 'add-hook)
45(defalias 'gnus-character-to-event 'identity)
46(defalias 'gnus-add-text-properties 'add-text-properties)
47(defalias 'gnus-put-text-property 'put-text-property)
48(defalias 'gnus-mode-line-buffer-identification 'identity)
49
50
51(eval-and-compile
52 (autoload 'gnus-xmas-define "gnus-xmas")
53 (autoload 'gnus-xmas-redefine "gnus-xmas")
54 (autoload 'appt-select-lowest-window "appt.el"))
41487370
LMI
55
56(or (fboundp 'mail-file-babyl-p)
57 (fset 'mail-file-babyl-p 'rmail-file-p))
58
231f989b
LMI
59;;; Mule functions.
60
61(defun gnus-mule-cite-add-face (number prefix face)
62 ;; At line NUMBER, ignore PREFIX and add FACE to the rest of the line.
63 (if face
64 (let ((inhibit-point-motion-hooks t)
65 from to)
66 (goto-line number)
67 (if (boundp 'MULE)
68 (forward-char (chars-in-string prefix))
69 (forward-char (length prefix)))
70 (skip-chars-forward " \t")
71 (setq from (point))
72 (end-of-line 1)
73 (skip-chars-backward " \t")
74 (setq to (point))
75 (if (< from to)
76 (gnus-overlay-put (gnus-make-overlay from to) 'face face)))))
77
78(defun gnus-mule-max-width-function (el max-width)
79 (` (let* ((val (eval (, el)))
80 (valstr (if (numberp val)
81 (int-to-string val) val)))
82 (if (> (length valstr) (, max-width))
83 (truncate-string valstr (, max-width))
84 valstr))))
41487370 85
231f989b
LMI
86(eval-and-compile
87 (if (string-match "XEmacs\\|Lucid" emacs-version)
88 ()
41487370 89
231f989b
LMI
90 (defvar gnus-mouse-face-prop 'mouse-face
91 "Property used for highlighting mouse regions.")
92
93 (defvar gnus-article-x-face-command
94 "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -"
95 "String or function to be executed to display an X-Face header.
96If it is a string, the command will be executed in a sub-shell
97asynchronously. The compressed face will be piped to this command.")
98
99 ;; Added by Per Abrahamsen <amanda@iesd.auc.dk>.
100 (defvar gnus-display-type
101 (condition-case nil
102 (let ((display-resource (x-get-resource ".displayType" "DisplayType")))
103 (cond (display-resource (intern (downcase display-resource)))
104 ((x-display-color-p) 'color)
105 ((x-display-grayscale-p) 'grayscale)
106 (t 'mono)))
107 (error 'mono))
108 "A symbol indicating the display Emacs is running under.
41487370
LMI
109The symbol should be one of `color', `grayscale' or `mono'. If Emacs
110guesses this display attribute wrongly, either set this variable in
111your `~/.emacs' or set the resource `Emacs.displayType' in your
112`~/.Xdefaults'. See also `gnus-background-mode'.
113
114This is a meta-variable that will affect what default values other
115variables get. You would normally not change this variable, but
116pounce directly on the real variables themselves.")
117
231f989b
LMI
118 (defvar gnus-background-mode
119 (condition-case nil
120 (let ((bg-resource (x-get-resource ".backgroundMode"
121 "BackgroundMode"))
122 (params (frame-parameters)))
123 (cond (bg-resource (intern (downcase bg-resource)))
124 ((and (cdr (assq 'background-color params))
125 (< (apply '+ (x-color-values
126 (cdr (assq 'background-color params))))
127 (* (apply '+ (x-color-values "white")) .6)))
128 'dark)
129 (t 'light)))
130 (error 'light))
131 "A symbol indicating the Emacs background brightness.
41487370
LMI
132The symbol should be one of `light' or `dark'.
133If Emacs guesses this frame attribute wrongly, either set this variable in
134your `~/.emacs' or set the resource `Emacs.backgroundMode' in your
135`~/.Xdefaults'.
136See also `gnus-display-type'.
137
138This is a meta-variable that will affect what default values other
139variables get. You would normally not change this variable, but
231f989b 140pounce directly on the real variables themselves."))
41487370 141
231f989b
LMI
142 (cond
143 ((string-match "XEmacs\\|Lucid" emacs-version)
144 (gnus-xmas-define))
145
146 ((or (not (boundp 'emacs-minor-version))
147 (< emacs-minor-version 30))
148 ;; Remove the `intangible' prop.
149 (let ((props (and (boundp 'gnus-hidden-properties)
150 gnus-hidden-properties)))
151 (while (and props (not (eq (car (cdr props)) 'intangible)))
152 (setq props (cdr props)))
153 (and props (setcdr props (cdr (cdr (cdr props))))))
154 (or (fboundp 'buffer-substring-no-properties)
155 (defun buffer-substring-no-properties (beg end)
156 (format "%s" (buffer-substring beg end)))))
41487370 157
231f989b
LMI
158 ((boundp 'MULE)
159 (provide 'gnusutil))))
41487370
LMI
160
161(eval-and-compile
162 (cond
163 ((not window-system)
164 (defun gnus-dummy-func (&rest args))
165 (let ((funcs '(mouse-set-point set-face-foreground
166 set-face-background x-popup-menu)))
167 (while funcs
168 (or (fboundp (car funcs))
169 (fset (car funcs) 'gnus-dummy-func))
170 (setq funcs (cdr funcs))))))
171 (or (fboundp 'file-regular-p)
172 (defun file-regular-p (file)
173 (and (not (file-directory-p file))
174 (not (file-symlink-p file))
175 (file-exists-p file))))
176 (or (fboundp 'face-list)
231f989b
LMI
177 (defun face-list (&rest args))))
178
179(eval-and-compile
180 (let ((case-fold-search t))
181 (cond
182 ((string-match "windows-nt\\|os/2\\|emx" (format "%s" system-type))
183 (setq nnheader-file-name-translation-alist
184 (append nnheader-file-name-translation-alist
185 '((?: . ?_)
186 (?+ . ?-))))))))
187
188(defvar gnus-tmp-unread)
189(defvar gnus-tmp-replied)
190(defvar gnus-tmp-score-char)
191(defvar gnus-tmp-indentation)
192(defvar gnus-tmp-opening-bracket)
193(defvar gnus-tmp-lines)
194(defvar gnus-tmp-name)
195(defvar gnus-tmp-closing-bracket)
196(defvar gnus-tmp-subject-or-nil)
41487370
LMI
197
198(defun gnus-ems-redefine ()
199 (cond
200 ((string-match "XEmacs\\|Lucid" emacs-version)
231f989b 201 (gnus-xmas-redefine))
41487370
LMI
202
203 ((boundp 'MULE)
204 ;; Mule definitions
41487370
LMI
205 (defalias 'gnus-truncate-string 'truncate-string)
206
41487370 207 (fset 'gnus-summary-make-display-table (lambda () nil))
231f989b
LMI
208 (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face)
209 (fset 'gnus-max-width-function 'gnus-mule-max-width-function)
41487370
LMI
210
211 (if (boundp 'gnus-check-before-posting)
212 (setq gnus-check-before-posting
213 (delq 'long-lines
231f989b
LMI
214 (delq 'control-chars gnus-check-before-posting))))
215
216 (defun gnus-summary-line-format-spec ()
217 (insert gnus-tmp-unread gnus-tmp-replied
218 gnus-tmp-score-char gnus-tmp-indentation)
219 (put-text-property
220 (point)
221 (progn
222 (insert
223 gnus-tmp-opening-bracket
224 (format "%4d: %-20s"
225 gnus-tmp-lines
226 (if (> (length gnus-tmp-name) 20)
227 (truncate-string gnus-tmp-name 20)
228 gnus-tmp-name))
229 gnus-tmp-closing-bracket)
230 (point))
231 gnus-mouse-face-prop gnus-mouse-face)
232 (insert " " gnus-tmp-subject-or-nil "\n"))
233 )))
234
41487370
LMI
235
236(provide 'gnus-ems)
237
238;; Local Variables:
239;; byte-compile-warnings: '(redefine callargs)
240;; End:
241
242;;; gnus-ems.el ends here