;;; sieve.el --- Utilities to manage sieve scripts
-;; Copyright (C) 2001 Free Software Foundation, Inc.
+
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Author: Simon Josefsson <simon@josefsson.org>
-;; This file is not part of GNU Emacs, but the same permissions apply.
+;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; Release history:
;;
;; 2001-10-31 Committed to Oort Gnus.
-;;
-;; $Id: sieve.el,v 6.3 2002/02/20 00:15:33 yamaoka Exp $
+;; 2002-07-27 Fix down-mouse-2 and down-mouse-3 in manage-mode. Fix menubar
+;; in manage-mode. Change some messages. Added sieve-deactivate*,
+;; sieve-remove. Fixed help text in manage-mode. Suggested by
+;; Ned Ludd.
;;
;; Todo:
;;
(defgroup sieve nil
"Manage sieve scripts."
+ :version "22.1"
:group 'tools)
(defcustom sieve-new-script "<new script>"
(define-key sieve-manage-mode-map "f" 'sieve-edit-script)
(define-key sieve-manage-mode-map "o" 'sieve-edit-script-other-window)
(define-key sieve-manage-mode-map "r" 'sieve-remove)
- (define-key sieve-manage-mode-map [mouse-2] 'sieve-edit-script)
- (define-key sieve-manage-mode-map [(down-mouse-3)] 'sieve-menu))
-
-(define-derived-mode sieve-manage-mode fundamental-mode "SIEVE"
- "Mode used for sieve script management."
- (setq mode-name "SIEVE")
- (buffer-disable-undo (current-buffer))
- (setq truncate-lines t))
-
-(put 'sieve-manage-mode 'mode-class 'special)
+ (define-key sieve-manage-mode-map [(down-mouse-2)] 'sieve-edit-script)
+ (define-key sieve-manage-mode-map [(down-mouse-3)] 'sieve-manage-mode-menu))
(easy-menu-define sieve-manage-mode-menu sieve-manage-mode-map
"Sieve Menu."
["Activate script" sieve-activate t]
["Deactivate script" sieve-deactivate t]))
+(define-derived-mode sieve-manage-mode fundamental-mode "SIEVE"
+ "Mode used for sieve script management."
+ (setq mode-name "SIEVE")
+ (buffer-disable-undo (current-buffer))
+ (setq truncate-lines t)
+ (easy-menu-add sieve-manage-mode-menu sieve-manage-mode-map))
+
+(put 'sieve-manage-mode 'mode-class 'special)
+
;; This is necessary to allow correct handling of \\[cvs-mode-diff-map]
;; in substitute-command-keys.
;(fset 'sieve-manage-mode-map sieve-manage-mode-map)
(defun sieve-activate (&optional pos)
(interactive "d")
(let ((name (sieve-script-at-point)) err)
- (unless name
+ (when (or (null name) (string-equal name sieve-new-script))
(error "No sieve script at point"))
+ (message "Activating script %s..." name)
(setq err (sieve-manage-setactive name sieve-manage-buffer))
+ (sieve-refresh-scriptlist)
(if (sieve-manage-ok-p err)
- (message "Script %s activated." name)
- (message "Failed to activate script %s: %s" name (nth 2 err)))
- (sieve-refresh-scriptlist)))
+ (message "Activating script %s...done" name)
+ (message "Activating script %s...failed: %s" name (nth 2 err)))))
+
+(defun sieve-deactivate-all (&optional pos)
+ (interactive "d")
+ (let ((name (sieve-script-at-point)) err)
+ (message "Deactivating scripts...")
+ (setq err (sieve-manage-setactive "" sieve-manage-buffer))
+ (sieve-refresh-scriptlist)
+ (if (sieve-manage-ok-p err)
+ (message "Deactivating scripts...done")
+ (message "Deactivating scripts...failed: %s" (nth 2 err)))))
+
+(defalias 'sieve-deactivate 'sieve-deactivate-all)
+
+(defun sieve-remove (&optional pos)
+ (interactive "d")
+ (let ((name (sieve-script-at-point)) err)
+ (when (or (null name) (string-equal name sieve-new-script))
+ (error "No sieve script at point"))
+ (message "Removing sieve script %s..." name)
+ (setq err (sieve-manage-deletescript name sieve-manage-buffer))
+ (unless (sieve-manage-ok-p err)
+ (error "Removing sieve script %s...failed: " err))
+ (sieve-refresh-scriptlist)
+ (message "Removing sieve script %s...done" name)))
(defun sieve-edit-script (&optional pos)
(interactive "d")
(if (eq last-command 'sieve-help)
;; would need minor-mode for log-edit-mode
(describe-function 'sieve-mode)
- (message (substitute-command-keys
- "`\\[sieve-help]':help `\\[cvs-mode-add]':add `\\[sieve-remove]':remove"))))
+ (message "%s" (substitute-command-keys
+ "`\\[sieve-edit-script]':edit `\\[sieve-activate]':activate `\\[sieve-deactivate]':deactivate `\\[sieve-remove]':remove"))))
(defun sieve-bury-buffer (buf &optional mainbuf)
"Hide the buffer BUF that was temporarily popped up.
(with-current-buffer (get-buffer sieve-buffer)
(setq err (sieve-manage-putscript name script sieve-manage-buffer))
(if (sieve-manage-ok-p err)
- (message (concat "Sieve upload done. Use `C-c RET' to manage scripts."))
+ (message (concat
+ "Sieve upload done. Use `C-c RET' to manage scripts."))
(message "Sieve upload failed: %s" (nth 2 err)))))))
+;;;###autoload
+(defun sieve-upload-and-bury (&optional name)
+ (interactive)
+ (sieve-upload name)
+ (bury-buffer))
+
(provide 'sieve)
+;;; arch-tag: 7f6a6d94-94e1-4654-ab9a-aee21b9b8a94
;; sieve.el ends here