🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.emacs.vm.bug
Article #9197

save message target folder picking enhancement

#9197
From: Joe Wells
Date: Fri, 28 Feb 1992 08:11
96 lines
4490 bytes
Vastly improved semantics for interactively picking which file/folder to
save a message in.  Much closer to GNUS, so less confusion.  Much easier
to save several successive messages in different files in a strange
directory.  Never autoselects the current folder, so you don't
accidentally save messages into the folder they are already in.  Only sets
vm-last-save-folder if it would be different from the default.  Other
minor bug fixes.  Functionality of selecting folder separated out into
another function, and thus easier to debug and customize.

If you don't want to use this stuff, please tell me so I can argue with
you about it.  It is a real pain to transport changes like this from
version to version.

-- 
Joe Wells <jbw@cs.bu.edu>

Member of the League for Programming Freedom --- send e-mail for details
----------------------------------------------------------------------
--- vm-save.el-dist	Sat Apr 20 19:33:03 1991
+++ ./vm-save.el	Fri May 17 21:48:45 1991
@@ -131,19 +131,5 @@
   (interactive
    (list
-    ;; protect value of last-command
-    (let ((last-command last-command))
-      (vm-follow-summary-cursor)
-      (let ((default (save-excursion
-		       (vm-select-folder-buffer)
-		       (vm-check-for-killed-summary)
-		       (or (vm-auto-select-folder vm-message-pointer
-						  vm-auto-folder-alist)
-			   vm-last-save-folder)))
-	    (dir (or vm-folder-directory default-directory)))
-	(if default
-	    (read-file-name (format "Save in folder: (default %s) "
-				    default)
-			    dir default nil )
-	  (read-file-name "Save in folder: " dir nil nil))))
+     (vm-get-save-folder)               ;jbw: replaced lots with this call
     (prefix-numeric-value current-prefix-arg)))
   (let (unexpanded-folder)
@@ -220,8 +206,52 @@
 		     (buffer-name folder-buffer)))
 	(message "Message%s saved to %s" (if (/= 1 count) "s" "") folder)))
-    (setq vm-last-save-folder unexpanded-folder)
+    ;;(setq vm-last-save-folder unexpanded-folder) ;jbw: commented out
     (if vm-delete-after-saving
 	(vm-delete-message count))
     (vm-update-summary-and-mode-line)))
+
+(defun vm-get-save-folder ()
+  (let ((last-command last-command)     ; protect value of last-command
+	(this-command this-command)
+	(current-prefix-arg current-prefix-arg)
+	(folder-dir (file-name-as-directory
+		     (expand-file-name
+		      (expand-file-name vm-folder-directory "~"))))
+	current-folder auto-select-folder last-save-folder default-folder
+	default-dir folder)
+    (vm-follow-summary-cursor)
+    (save-excursion
+      (vm-select-folder-buffer)
+      (vm-check-for-killed-summary)
+      (vm-error-if-folder-empty)
+      (setq current-folder buffer-file-name)
+      (setq auto-select-folder
+	    (vm-auto-select-folder vm-message-pointer vm-auto-folder-alist))
+      (if auto-select-folder
+	  (setq auto-select-folder
+		(expand-file-name auto-select-folder folder-dir)))
+      (setq last-save-folder vm-last-save-folder)
+      (if (string-equal current-folder auto-select-folder)
+	  (setq auto-select-folder nil))
+      (setq default-folder (or auto-select-folder last-save-folder))
+      (setq default-dir (if default-folder
+			    (file-name-directory default-folder)
+			  (or folder-dir default-directory))))
+    (setq folder
+	  (read-file-name
+	   (format "Save in folder: %s"
+		   (if default-folder
+		       (concat "\(default "
+			       (file-name-nondirectory default-folder)
+			       "\) ")
+		     ""))
+	   default-dir default-folder nil))
+    (or folder (error "impossible: read-file-name returned nil!"))
+    (cond ((or (not default-folder)
+	       (not (string-equal default-folder folder)))
+	   (save-excursion
+	     (vm-select-folder-buffer)
+	     (setq vm-last-save-folder (expand-file-name folder)))))
+    folder))
 
 (defun vm-save-message-sans-headers (file &optional count)
----------------------------------------------------------------------
Technical Details
Message-ID: <9202280811.AA18805@bigbird.bu.edu>
Path: arc1-ca.pugleaf.net!sparky!uunet!wendy-fate.uu.net!bug-vm

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: f6829,cde213e9eea7c949,start
X-Google-Attributes: gidf6829,public
X-Google-ArrivalTime: 1992-02-28 03:18:41 PST
Newsgroups: gnu.emacs.vm.bug
Sender: bug-vm-request@uunet.uu.net
Date: Fri, 28 Feb 92 03:11:02 -0500
From: jbw@bigbird.bu.edu (Joe Wells)
Message-ID: <9202280811.AA18805@bigbird.bu.edu>
Subject: save message target folder picking enhancement 
Path: arc1-ca.pugleaf.net!sparky!uunet!wendy-fate.uu.net!bug-vm