;;; sieve.el --- Utilities to manage sieve scripts
-;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2014 Free Software Foundation, Inc.
;; Author: Simon Josefsson <simon@josefsson.org>
;; 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)
(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-manage-quit)
+ (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)
;; Commands used in sieve-manage mode:
(defun sieve-manage-quit ()
- "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)
(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."))))
(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)))
(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)))
(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