X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fsieve.el;h=2d4dfba4ee62569dc6da30e4ff01cdbc4571a1b4;hp=78f95b8f94b1ae8720f1f55a79b946ddab8b393b;hb=9b139a13c0650a18872ebd64849560a97554afa8;hpb=74b3d8c1c16d0f18e5213d097f79232ebf4aeb1a diff --git a/lisp/sieve.el b/lisp/sieve.el index 78f95b8f9..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 1.15 2001/08/17 11:20:15 jas 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: ;; @@ -56,7 +59,6 @@ ;;; Code: -(require 'easy-mmode) (require 'sieve-manage) (require 'sieve-mode) @@ -64,6 +66,7 @@ (defgroup sieve nil "Manage sieve scripts." + :version "22.1" :group 'tools) (defcustom sieve-new-script "" @@ -127,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." @@ -145,7 +140,16 @@ require \"fileinto\"; ["Activate script" sieve-activate t] ["Deactivate script" sieve-deactivate t])) -;; This is necessary to allow correct handling of \\[cvs-mode-diff-map] +(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) @@ -154,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 "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 "Script %s activated." name) - (message "Failed to activate script %s: %s" name (nth 2 err))) - (sieve-refresh-scriptlist))) + (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") @@ -179,6 +208,15 @@ require \"fileinto\"; (sieve-mode) (message "Press C-c C-l to upload script to server."))) +(defmacro sieve-change-region (&rest body) + "Turns off sieve-region before executing BODY, then re-enables it after. +Used to bracket operations which move point in the sieve-buffer." + `(progn + (sieve-highlight nil) + ,@body + (sieve-highlight t))) +(put 'sieve-change-region 'lisp-indent-function 0) + (defun sieve-next-line (&optional arg) (interactive) (unless arg @@ -207,8 +245,8 @@ require \"fileinto\"; (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. @@ -251,15 +289,6 @@ Server : " server ":" (or port "2000") " (interactive "d") (get-char-property (or pos (point)) 'script-name)) -(defmacro sieve-change-region (&rest body) - "Turns off sieve-region before executing BODY, then re-enables it after. -Used to bracket operations which move point in the sieve-buffer." - `(progn - (sieve-highlight nil) - ,@body - (sieve-highlight t))) -(put 'sieve-change-region 'lisp-indent-function 0) - (eval-and-compile (defalias 'sieve-make-overlay (if (fboundp 'make-overlay) 'make-overlay @@ -341,9 +370,17 @@ Used to bracket operations which move point in the sieve-buffer." (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