gnus-msg.el (gnus-setup-message): Fix last commit
[gnus] / lisp / sieve.el
index fde5d8e..42e6330 100644 (file)
@@ -1,6 +1,6 @@
 ;;; sieve.el --- Utilities to manage sieve scripts
 
-;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2013 Free Software Foundation, Inc.
 
 ;; Author: Simon Josefsson <simon@josefsson.org>
 
@@ -21,7 +21,7 @@
 
 ;;; Commentary:
 
-;; This file contain utilities to facilate upload, download and
+;; This file contain utilities to facilitate upload, download and
 ;; general management of sieve scripts.  Currently only the
 ;; Managesieve protocol is supported (using sieve-manage.el), but when
 ;; (useful) alternatives become available, they might be supported as
@@ -109,7 +109,6 @@ require \"fileinto\";
     ;; various
     (define-key map "?" 'sieve-help)
     (define-key map "h" 'sieve-help)
-    (define-key map "q" 'sieve-bury-buffer)
     ;; activating
     (define-key map "m" 'sieve-activate)
     (define-key map "u" 'sieve-deactivate)
@@ -126,6 +125,8 @@ require \"fileinto\";
     (define-key map "f" 'sieve-edit-script)
     (define-key map "o" 'sieve-edit-script-other-window)
     (define-key map "r" 'sieve-remove)
+    (define-key map "q" 'sieve-bury-buffer)
+    (define-key map "Q" 'sieve-manage-quit)
     (define-key map [(down-mouse-2)] 'sieve-edit-script)
     (define-key map [(down-mouse-3)] 'sieve-manage-mode-menu)
     map)
@@ -148,6 +149,18 @@ require \"fileinto\";
 
 ;; Commands used in sieve-manage mode:
 
+(defun sieve-manage-quit ()
+  "Quit Manage Sieve and close the connection."
+  (interactive)
+  (sieve-manage-close sieve-manage-buffer)
+  (kill-buffer sieve-manage-buffer)
+  (kill-buffer (current-buffer)))
+
+(defun sieve-bury-buffer ()
+  "Bury the Manage Sieve buffer without closing the connection."
+  (interactive)
+  (bury-buffer))
+
 (defun sieve-activate (&optional pos)
   (interactive "d")
   (let ((name (sieve-script-at-point)) err)
@@ -200,6 +213,7 @@ require \"fileinto\";
       (insert sieve-template))
     (sieve-mode)
     (setq sieve-buffer-script-name name)
+    (goto-char (point-min))
     (message
      (substitute-command-keys
       "Press \\[sieve-upload] to upload script to server."))))
@@ -244,39 +258,15 @@ Used to bracket operations which move point in the sieve-buffer."
     (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.
-BUF is assumed to be a temporary buffer used from the buffer MAINBUF."
-  (interactive (list (current-buffer)))
-  (save-current-buffer
-    (let ((win (if (eq buf (window-buffer (selected-window))) (selected-window)
-                (get-buffer-window buf t))))
-      (when win
-       (if (window-dedicated-p win)
-           (condition-case ()
-               (delete-window win)
-             (error (iconify-frame (window-frame win))))
-         (if (and mainbuf (get-buffer-window mainbuf))
-             (delete-window win)))))
-    (with-current-buffer buf
-      (bury-buffer (unless (and (eq buf (window-buffer (selected-window)))
-                               (not (window-dedicated-p (selected-window))))
-                    buf)))
-    (when mainbuf
-      (let ((mainwin (or (get-buffer-window mainbuf)
-                        (get-buffer-window mainbuf 'visible))))
-       (when mainwin (select-window mainwin))))))
-
 ;; Create buffer:
 
 (defun sieve-setup-buffer (server port)
   (setq buffer-read-only nil)
   (erase-buffer)
   (buffer-disable-undo)
-  (insert "\
-Server  : " server ":" (or port "2000") "
-
-")
+  (let* ((port (or port sieve-manage-default-port))
+         (header (format "Server : %s:%s\n\n" server port)))
+    (insert header))
   (set (make-local-variable 'sieve-buffer-header-end)
        (point-max)))
 
@@ -322,7 +312,7 @@ Server  : " server ":" (or port "2000") "
   (with-current-buffer
       (or ;; open server
        (set (make-local-variable 'sieve-manage-buffer)
-           (sieve-manage-open server))
+           (sieve-manage-open server port))
        (error "Error opening server %s" server))
     (sieve-manage-authenticate)))
 
@@ -383,6 +373,12 @@ Server  : " server ":" (or port "2000") "
   (sieve-upload name)
   (bury-buffer))
 
+;;;###autoload
+(defun sieve-upload-and-kill (&optional name)
+  (interactive)
+  (sieve-upload name)
+  (kill-buffer))
+
 (provide 'sieve)
 
 ;; sieve.el ends here