Gnus development mailing list
 help / color / mirror / Atom feed
* request feedback on new function gnus-dired-attach
@ 2001-12-15  0:19 Benjamin Rutt
  2001-12-15  5:25 ` Benjamin Rutt
  2001-12-15  6:12 ` ShengHuo ZHU
  0 siblings, 2 replies; 14+ messages in thread
From: Benjamin Rutt @ 2001-12-15  0:19 UTC (permalink / raw)


After getting inspired today to clean out my TODO list, I defined the
following function, to make it easier to attach (multiple) files in
gnus via dired buffers.  (This is in response to a thread with the
subject 'how to attach multiple attachments simultaneously' on
gnu.emacs.gnus during late November of this year...it has since
expired from my news server, otherwise I'd probably followup to it).
I'd love to get the following feedback:

1) reports of failures under setups other than GNU Emacs 21+Oort,
   which is the system I've tested it on

2) whether and how to integrate this code into gnus.  You'll note that
   the last line:

(define-key dired-mode-map [(control c) (control a)] 'gnus-dired-attach)

   is somewhat ugly, since we are defining a dired keymap in another
   area of code.  Paul Jarc, on the above g.e.g thread, suggested that
   we define a gnus-dired minor mode which can contain the keymap.
   But I'm not sure if that's better, since ultimately we're still
   stealing a possible future dired keybinding (C-c C-a currently
   isn't defined in dired-mode).  Maybe that last line should simply
   go in users ~/.gnus so the users control the keybinding override?

3) whether you think this should exist as a separate file that isn't
   included in gnus.

4) any other feedback

Here begins the code.  It should be enough to place this code in your
~~/.gnus, evaluate it, and then start attaching files from dired
buffers via C-c C-a (with or without starting message compositions
first).  Thanks.

----------------------------------------------------------------------

(defun gnus-dired-attach ()
  "Attach dired's marked files to a gnus message composition."
  (interactive)
  (let* ((files-to-attach
	  ;; don't attach directories
	  (delq nil
		(mapcar
		 (lambda (f) (if (file-directory-p f) nil f))
		 (nreverse (dired-map-over-marks (dired-get-filename) nil)))))
	 (destination nil)
	 (files-str (mapconcat
		     (lambda (f) (file-name-nondirectory f)) files-to-attach
		     ", "))
	 (bufs (message-buffers)))
    
    ;; set up destination message buffer
    (if (and bufs
	     (y-or-n-p "Attach files to existing message buffer? "))
	(setq destination
	      (if (= (length bufs) 1)
		  (get-buffer (car bufs))
		(completing-read "Attach to which message buffer: "
				 (mapcar
				  (lambda (b)
				    (cons b (get-buffer b)))
				  bufs)
				 nil t)))
      ;; setup a new gnus message buffer
      (gnus-setup-message 'message (message-mail))
      (setq destination (current-buffer)))

    ;; set buffer to destination buffer, and attach files
    (set-buffer destination)
    (goto-char (point-max)) ;attach at end of buffer
    (while files-to-attach
      (mml-attach-file (car files-to-attach)
		       (or (mm-default-file-encoding (car files-to-attach))
			   "application/octet-stream") nil)
      (setq files-to-attach (cdr files-to-attach)))
    (message "attached files %s" files-str)))
(define-key dired-mode-map [(control c) (control a)] 'gnus-dired-attach)
-- 
Benjamin




^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2002-02-02  6:38 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-12-15  0:19 request feedback on new function gnus-dired-attach Benjamin Rutt
2001-12-15  5:25 ` Benjamin Rutt
2001-12-15  6:12 ` ShengHuo ZHU
2001-12-15  6:39   ` Benjamin Rutt
2001-12-15  8:17   ` Benjamin Rutt
2001-12-15 23:34   ` Benjamin Rutt
2001-12-29  0:40     ` Lars Magne Ingebrigtsen
2001-12-31  7:06       ` Benjamin Rutt
2001-12-31  7:47         ` Paul Jarc
2002-01-19 19:12         ` Lars Magne Ingebrigtsen
2002-01-20  0:39           ` Benjamin Rutt
2002-01-20  0:52             ` Lars Magne Ingebrigtsen
2002-02-02  1:25       ` Benjamin Rutt
2002-02-02  6:38         ` ShengHuo ZHU

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).