← Back to team overview

vm team mailing list archive

[Merge] lp:~ryanakca/vm/vm-move-after-reading into lp:vm

 

Ryan Kavanagh has proposed merging lp:~ryanakca/vm/vm-move-after-reading into lp:vm.

Requested reviews:
  VM development team (vm)

For more details, see:
https://code.launchpad.net/~ryanakca/vm/vm-move-after-reading/+merge/151987

Add variable to enable vm to move to the next message after marking one as read, similar to vm-move-after-delete .
-- 
https://code.launchpad.net/~ryanakca/vm/vm-move-after-reading/+merge/151987
Your team VM development team is requested to review the proposed merge of lp:~ryanakca/vm/vm-move-after-reading into lp:vm.
=== modified file 'configure.ac'
--- configure.ac	2011-12-30 12:14:08 +0000
+++ configure.ac	2013-03-06 15:25:25 +0000
@@ -86,6 +86,18 @@
       AC_MSG_WARN([*** DVI and PDF files will not be built.])
     fi ])
 
+# Find a install-info program. A failure is not fatal, only that info
+# files won't be properly installed
+AC_DEFUN([VM_PROG_INSTALLINFO],
+  [ AC_CHECK_PROG(INSTALL_INFO, ginstall-info, ginstall-info)
+    if test "x${INSTALL_INFO}" = "x" ; then
+      AC_CHECK_PROG(INSTALL_INFO, install-info, install-info)
+      if test "x{INSTALL_INFO}" = "x" ; then
+        AC_MSG_WARN([*** No install-info program found.])
+        AC_MSG_WARN([*** Info Dir file will not be updated.])
+      fi
+    fi ])
+
 # Choose an Emacs flavor according to the --with-emacs user option, or try
 # emacs and xemacs.
 # We use EMACS_PROG instead of EMACS to avoid colliding with Emacs' own
@@ -261,6 +273,7 @@
 VM_PROG_XARGS
 VM_PROG_GNU_TAR
 VM_PROG_MAKEINFO
+VM_PROG_INSTALLINFO
 VM_PROG_TEXI2DVI
 
 VM_PROG_EMACS

=== modified file 'info/Makefile.in'
--- info/Makefile.in	2011-12-30 15:24:10 +0000
+++ info/Makefile.in	2013-03-06 15:25:25 +0000
@@ -16,6 +16,7 @@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_DATA = @INSTALL_DATA@
+INSTALL_INFO = @INSTALL_INFO@
 
 prefix = @prefix@
 srcdir = @srcdir@
@@ -54,7 +55,11 @@
           for i in `${LS} *.info* ` ; do                               \
 	    echo "Installing $$i in $(DESTDIR)$(infodir)" ;            \
             $(INSTALL_DATA) $$i "$(DESTDIR)$(infodir)" ;               \
-          done ;                                                       \
+	    if test "$(INSTALL_INFO)" ; then                           \
+	      $(INSTALL_INFO) "$(DESTDIR)$(infodir)"/$$i               \
+	                          "$(DESTDIR)$(infodir)"/dir ;         \
+	    fi ;                                                       \
+	  done ;                                                       \
         else                                                           \
           if test "x$(LINKPATH)" = "x" ; then                          \
             for i in `${LS} *.info* ` ; do                             \

=== modified file 'info/vm.texinfo'
--- info/vm.texinfo	2013-02-15 08:44:48 +0000
+++ info/vm.texinfo	2013-03-06 15:25:25 +0000
@@ -1898,11 +1898,13 @@
 @findex vm-mark-message-unread
 @kindex U
 @kindex .
+@vindex vm-move-after-reading
 You can ``unread'' a message (so to speak) by typing @kbd{U}
 (@code{vm-unread-message}, also called @code{vm-mark-message-unread}).
-The current message will be marked unread.  Conversely, you can mark
-an unread message as read by typing @kbd{.}
-(@code{vm-mark-message-read}).
+The current message will be marked unread.  Conversely, you can mark an
+unread message as read by typing @kbd{.}  (@code{vm-mark-message-read}).
+Setting the variable @var{vm-move-after-reading} will cause vm to move
+to the next undeleted message after marking the current message as read.
 
 @findex vm-toggle-flag-message
 @kindex !

=== modified file 'lisp/vm-folder.el'
--- lisp/vm-folder.el	2013-01-02 21:38:39 +0000
+++ lisp/vm-folder.el	2013-03-06 15:25:25 +0000
@@ -3253,18 +3253,24 @@
 thread are affected."
   (interactive "p")
   (or count (setq count 1))
-  (vm-follow-summary-cursor)
-  (vm-select-folder-buffer-and-validate 1 (vm-interactive-p))
-  (let ((mlist (vm-select-operable-messages
-		count (vm-interactive-p) "Mark as read")))
-    (while mlist
-      (when (or (vm-unread-flag (car mlist))
-		(vm-new-flag (car mlist)))
+  (let ((used-marks (eq last-command 'vm-next-command-uses-marks))
+        (del-count 0))
+    (vm-follow-summary-cursor)
+    (vm-select-folder-buffer-and-validate 1 (vm-interactive-p))
+    (let ((mlist (vm-select-operable-messages
+		  count (vm-interactive-p) "Mark as read")))
+      (while mlist
+	(when (or (vm-unread-flag (car mlist))
+		  (vm-new-flag (car mlist)))
 	  (vm-set-unread-flag (car mlist) nil)
 	  (vm-set-new-flag (car mlist) nil))
-      (setq mlist (cdr mlist))))
-  (vm-display nil nil '(vm-mark-message-read) '(vm-mark-message-read))
-  (vm-update-summary-and-mode-line))
+	(setq mlist (cdr mlist))))
+    (vm-display nil nil '(vm-mark-message-read) '(vm-mark-message-read))
+    (vm-update-summary-and-mode-line)
+    (when (and vm-move-after-reading (not used-marks))
+      (let ((vm-circular-folders (and vm-circular-folders
+				      (eq vm-move-after-deleting t))))
+	(vm-next-message count t executing-kbd-macro)))))
 (defalias 'vm-flag-message-read 'vm-mark-message-read)
 (make-obsolete 'vm-flag-message-read 
 	       'vm-mark-message-read "8.2.0")

=== modified file 'lisp/vm-vars.el'
--- lisp/vm-vars.el	2013-02-12 00:09:02 +0000
+++ lisp/vm-vars.el	2013-03-06 15:25:25 +0000
@@ -4733,6 +4733,18 @@
 		 (const :tag "Yes" t) 
 		 (const :tag "Skip if some undeleted" skip-if-some-undeleted)))
 
+(defcustom vm-move-after-reading nil
+  "*Non-nil value causes VM's `.' command to automatically invoke
+`vm-next-message' or `vm-previous-message' after killing messages, to try
+to move past the read messages.  A value of t means motion
+should honor the value of `vm-circular-folders'.  A value that is
+not t and not nil means that motion should be done as if
+`vm-circular-folders' is set to nil."
+  :group 'vm-summary
+  :type '(choice (const :tag "No" nil) 
+                 (const :tag "Yes" t) 
+                 (const :tag "Skip if some undeleted" skip-if-some-undeleted)))
+
 (defcustom vm-delete-after-saving nil
   "*Non-nil value causes VM automatically to mark messages for deletion
 after successfully saving them to a folder."


Follow ups