X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fsieve.el;h=2d4dfba4ee62569dc6da30e4ff01cdbc4571a1b4;hp=cdbf46a3b6deda0658189c84e8944c89d98bb875;hb=9b139a13c0650a18872ebd64849560a97554afa8;hpb=8ad9e10a72b1274e782a5ec2498b8ac7ab6753e4 diff --git a/lisp/sieve.el b/lisp/sieve.el index cdbf46a3b..2d4dfba4e 100644 --- a/lisp/sieve.el +++ b/lisp/sieve.el @@ -1,13 +1,14 @@ ;;; sieve.el --- Utilities to manage sieve scripts -;; Copyright (C) 2001 Free Software Foundation, Inc. + +;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. ;; Author: Simon Josefsson -;; 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 -;; the Free Software Foundation; either version 2, or (at your option) +;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, @@ -17,8 +18,8 @@ ;; 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: @@ -33,8 +34,10 @@ ;; 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: ;; @@ -63,6 +66,7 @@ (defgroup sieve nil "Manage sieve scripts." + :version "22.1" :group 'tools) (defcustom sieve-new-script "" @@ -126,16 +130,8 @@ require \"fileinto\"; (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." @@ -144,6 +140,15 @@ require \"fileinto\"; ["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) @@ -153,13 +158,38 @@ require \"fileinto\"; (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") @@ -215,8 +245,8 @@ Used to bracket operations which move point in the sieve-buffer." (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. @@ -340,9 +370,17 @@ Server : " server ":" (or port "2000") " (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