I don't use sieve scripts, but I noticed a minor nit in your patch: Eric Abrahamsen writes: > @@ -215,6 +214,7 @@ sieve-edit-script > (sieve-mode) > (setq sieve-buffer-script-name name) > (goto-char (point-min)) > + (set-buffer-modified-p nil) > (message > (substitute-command-keys > "Press \\[sieve-upload] to upload script to server.")))) [...] > @@ -350,11 +350,13 @@ sieve-upload > (with-current-buffer (get-buffer sieve-buffer) > (setq err (sieve-manage-putscript > (or name sieve-buffer-script-name (buffer-name)) > - script sieve-manage-buffer)) > - (if (sieve-manage-ok-p err) > - (message (substitute-command-keys > - "Sieve upload done. Use \\[sieve-manage] to manage scripts.")) > - (message "Sieve upload failed: %s" (nth 2 err))))))) > + script sieve-manage-buffer))) > + (if (sieve-manage-ok-p err) > + (progn > + (message (substitute-command-keys > + "Sieve upload done. Use \\[sieve-manage] to manage scripts.")) > + (set-buffer-modified-p nil)) > + (message "Sieve upload failed: %s" (nth 2 err)))))) In both hunks, 'message' is given an arbitrary string as its first argument. Any objections to the following cleanup of sieve.el text formatting code?