summaryrefslogtreecommitdiff
path: root/lisp/gnus/gnus-spec.el
diff options
context:
space:
mode:
authorLars Magne Ingebrigtsen <larsi@gnus.org>1999-02-20 14:05:57 +0000
committerLars Magne Ingebrigtsen <larsi@gnus.org>1999-02-20 14:05:57 +0000
commit6748645fc3dd1604ed57a883b7c346128af27d90 (patch)
treec4c528db7873d3ef96121c002b4d09209c305dca /lisp/gnus/gnus-spec.el
parent44a6ed57c9af413959fdebe38649c0df4a055fca (diff)
downloademacs-6748645fc3dd1604ed57a883b7c346128af27d90.tar.gz
Upgrading to Gnus 5.7; see ChangeLog
Diffstat (limited to 'lisp/gnus/gnus-spec.el')
-rw-r--r--lisp/gnus/gnus-spec.el46
1 files changed, 30 insertions, 16 deletions
diff --git a/lisp/gnus/gnus-spec.el b/lisp/gnus/gnus-spec.el
index df440c97b3b..403b5169583 100644
--- a/lisp/gnus/gnus-spec.el
+++ b/lisp/gnus/gnus-spec.el
@@ -1,7 +1,7 @@
;;; gnus-spec.el --- format spec functions for Gnus
-;; Copyright (C) 1996,97 Free Software Foundation, Inc.
+;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
-;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
;; This file is part of GNU Emacs.
@@ -27,6 +27,8 @@
(eval-when-compile (require 'cl))
+(eval-when-compile (require 'cl))
+
(require 'gnus)
;;; Internal variables.
@@ -182,9 +184,8 @@
val)
(when (and (boundp buffer)
(setq val (symbol-value buffer))
- (get-buffer val)
- (buffer-name (get-buffer val)))
- (set-buffer (get-buffer val)))
+ (gnus-buffer-exists-p val))
+ (set-buffer val))
(setq new-format (symbol-value
(intern (format "gnus-%s-line-format" type)))))
(setq entry (cdr (assq type gnus-format-specs)))
@@ -238,9 +239,9 @@
(defvar gnus-face-4 'bold)
(defun gnus-face-face-function (form type)
- `(gnus-put-text-property
+ `(gnus-add-text-properties
(point) (progn ,@form (point))
- 'face ',(symbol-value (intern (format "gnus-face-%d" type)))))
+ '(gnus-face t face ,(symbol-value (intern (format "gnus-face-%d" type))))))
(defun gnus-tilde-max-form (el max-width)
"Return a form that limits EL to MAX-WIDTH."
@@ -308,7 +309,8 @@
(let ((number (if (match-beginning 1)
(match-string 1) "0"))
(delim (aref (match-string 2) 0)))
- (if (or (= delim ?\() (= delim ?\{))
+ (if (or (= delim ?\()
+ (= delim ?\{))
(replace-match (concat "\"(" (if (= delim ?\() "mouse" "face")
" " number " \""))
(replace-match "\")\""))))
@@ -502,8 +504,7 @@ If PROPS, insert the result."
(defun gnus-compile ()
"Byte-compile the user-defined format specs."
(interactive)
- (when gnus-xemacs
- (error "Can't compile specs under XEmacs"))
+ (require 'bytecomp)
(let ((entries gnus-format-specs)
(byte-compile-warnings '(unresolved callargs redefine))
entry gnus-tmp-func)
@@ -514,17 +515,30 @@ If PROPS, insert the result."
(setq entry (pop entries))
(if (eq (car entry) 'version)
(setq gnus-format-specs (delq entry gnus-format-specs))
- (when (and (listp (caddr entry))
- (not (eq 'byte-code (caaddr entry))))
- (fset 'gnus-tmp-func `(lambda () ,(caddr entry)))
- (byte-compile 'gnus-tmp-func)
- (setcar (cddr entry) (gnus-byte-code 'gnus-tmp-func)))))
+ (let ((form (caddr entry)))
+ (when (and (listp form)
+ ;; Under GNU Emacs, it's (byte-code ...)
+ (not (eq 'byte-code (car form)))
+ ;; Under XEmacs, it's (funcall #<compiled-function ...>)
+ (not (and (eq 'funcall (car form))
+ (compiled-function-p (cadr form)))))
+ (fset 'gnus-tmp-func `(lambda () ,form))
+ (byte-compile 'gnus-tmp-func)
+ (setcar (cddr entry) (gnus-byte-code 'gnus-tmp-func))))))
(push (cons 'version emacs-version) gnus-format-specs)
;; Mark the .newsrc.eld file as "dirty".
- (gnus-dribble-enter " ")
+ (gnus-dribble-touch)
(gnus-message 7 "Compiling user specs...done"))))
+(defun gnus-set-format (type &optional insertable)
+ (set (intern (format "gnus-%s-line-format-spec" type))
+ (gnus-parse-format
+ (symbol-value (intern (format "gnus-%s-line-format" type)))
+ (symbol-value (intern (format "gnus-%s-line-format-alist" type)))
+ insertable)))
+
+
(provide 'gnus-spec)
;;; gnus-spec.el ends here