X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fsieve.el;h=7b014da2f83a28a88a1ef3d1aeb213b6fcf0d945;hb=74a489ff1213794152d6e13f7a11e16c89f62602;hp=3301c1f656da12489527f59af1a1f93a4bb21dbc;hpb=2498340908e48dbe1f51b57229a66993ac23800c;p=gnus diff --git a/lisp/sieve.el b/lisp/sieve.el index 3301c1f65..7b014da2f 100644 --- a/lisp/sieve.el +++ b/lisp/sieve.el @@ -1,24 +1,23 @@ ;;; sieve.el --- Utilities to manage sieve scripts -;; Copyright (C) 2001 Free Software Foundation, Inc. + +;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 +;; 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) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; 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. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -33,8 +32,10 @@ ;; Release history: ;; ;; 2001-10-31 Committed to Oort Gnus. -;; -;; $Id: sieve.el,v 6.1 2001/11/01 00:50:22 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: ;; @@ -63,6 +64,7 @@ (defgroup sieve nil "Manage sieve scripts." + :version "22.1" :group 'tools) (defcustom sieve-new-script "" @@ -126,16 +128,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,7 +138,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) @@ -153,13 +156,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") @@ -178,6 +206,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 @@ -206,8 +243,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. @@ -250,25 +287,16 @@ 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 - 'make-extent)) - (defalias 'sieve-overlay-put (if (fboundp 'overlay-put) - 'overlay-put - 'set-extent-property)) - (defalias 'sieve-overlays-at (if (fboundp 'overlays-at) - 'overlays-at - 'extents-at))) + (defalias 'sieve-make-overlay (if (featurep 'xemacs) + 'make-extent + 'make-overlay)) + (defalias 'sieve-overlay-put (if (featurep 'xemacs) + 'set-extent-property + 'overlay-put)) + (defalias 'sieve-overlays-at (if (featurep 'xemacs) + 'extents-at + 'overlays-at))) (defun sieve-highlight (on) "Turn ON or off highlighting on the current language overlay." @@ -340,9 +368,16 @@ 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) ;; sieve.el ends here