From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: 25764@debbugs.gnu.org
Subject: bug#25764: 26.0.50; Make some usability improvements to sieve-script management
Date: Thu, 16 Feb 2017 13:13:41 -0800 [thread overview]
Message-ID: <87vas9rg8q.fsf@ericabrahamsen.net> (raw)
[-- Attachment #1: Type: text/plain, Size: 227 bytes --]
The attached patch makes some usability improvements to the sieve script
management files: exposing more user commands in menus and help, and
using the buffer-modified mark to give the user a better sense of what's
going on.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Small-improvements-to-sieve-script-usability.patch --]
[-- Type: text/x-diff, Size: 3796 bytes --]
From e7c62b1bb8212034cba5502a7dec2c2786f4159f Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <eric@ericabrahamsen.net>
Date: Thu, 16 Feb 2017 12:57:53 -0800
Subject: [PATCH] Small improvements to sieve script usability
* lisp/net/sieve-mode.el (sieve-mode-menu): Add
`sieve-upload-and-kill' to the mode menu.
* lisp/net/sieve.el (sieve-manage-mode-menu): Add `sieve-manage-quit'
to the mode menu.
(sieve-help): Mention quitting in mode help.
(sieve-manage-mode): Directly derive from special-mode.
(sieve-edit-script): Start off with unmodified buffer.
(sieve-upload): Set buffer unmodified after successful upload.
Changes are aimed at 1) increasing discoverability of commands and 2)
using buffer modification to help users understand what's happening.
---
lisp/net/sieve-mode.el | 1 +
lisp/net/sieve.el | 22 ++++++++++++----------
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/lisp/net/sieve-mode.el b/lisp/net/sieve-mode.el
index 87bb3a245b..cc5fb389e2 100644
--- a/lisp/net/sieve-mode.el
+++ b/lisp/net/sieve-mode.el
@@ -158,6 +158,7 @@ sieve-mode-map
"Sieve Menu."
'("Sieve"
["Upload script" sieve-upload t]
+ ["Upload script and kill" sieve-upload-and-kill t]
["Manage scripts on server" sieve-manage t]))
;; Code for Sieve editing mode.
diff --git a/lisp/net/sieve.el b/lisp/net/sieve.el
index 665a0a8e15..46cea316e3 100644
--- a/lisp/net/sieve.el
+++ b/lisp/net/sieve.el
@@ -137,16 +137,15 @@ sieve-manage-mode-map
'("Manage Sieve"
["Edit script" sieve-edit-script t]
["Activate script" sieve-activate t]
- ["Deactivate script" sieve-deactivate t]))
+ ["Deactivate script" sieve-deactivate t]
+ ["Quit and close connection" sieve-manage-quit t]))
-(define-derived-mode sieve-manage-mode fundamental-mode "Sieve-manage"
+(define-derived-mode sieve-manage-mode special-mode "Sieve-manage"
"Mode used for sieve script management."
(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)
-
;; Commands used in sieve-manage mode:
(defun sieve-manage-quit ()
@@ -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."))))
@@ -257,7 +257,7 @@ sieve-help
;; would need minor-mode for log-edit-mode
(describe-function 'sieve-mode)
(message "%s" (substitute-command-keys
- "`\\[sieve-edit-script]':edit `\\[sieve-activate]':activate `\\[sieve-deactivate]':deactivate `\\[sieve-remove]':remove"))))
+ "`\\[sieve-edit-script]':edit `\\[sieve-activate]':activate `\\[sieve-deactivate]':deactivate `\\[sieve-remove]':remove `\\[sieve-manage-quit]':quit"))))
;; Create buffer:
@@ -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))))))
;;;###autoload
(defun sieve-upload-and-bury (&optional name)
--
2.11.1
[-- Attachment #3: Type: text/plain, Size: 240 bytes --]
In GNU Emacs 26.0.50.26 (x86_64-unknown-linux-gnu, GTK+ Version 3.22.7)
of 2017-02-14 built on clem
Repository revision: 71b90192dab8de9825904faaabbaf9548d3db2ab
Windowing system distributor 'The X.Org Foundation', version 11.0.11901000
next reply other threads:[~2017-02-16 21:13 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-16 21:13 Eric Abrahamsen [this message]
2019-06-24 23:03 ` bug#25764: 26.0.50; Make some usability improvements to sieve-script management Lars Ingebrigtsen
2019-07-08 17:55 ` Eric Abrahamsen
2019-07-08 20:42 ` Basil L. Contovounesios
2019-07-08 22:09 ` Lars Ingebrigtsen
2019-07-08 23:51 ` Eric Abrahamsen
2019-07-08 23:55 ` Lars Ingebrigtsen
2019-07-09 0:12 ` Eric Abrahamsen
2019-07-09 0:50 ` Basil L. Contovounesios
2019-07-09 1:06 ` Eric Abrahamsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87vas9rg8q.fsf@ericabrahamsen.net \
--to=eric@ericabrahamsen.net \
--cc=25764@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.