Gnus development mailing list
 help / color / mirror / Atom feed
From: Benjamin Rutt <rutt+news@cis.ohio-state.edu>
Subject: request feedback on new function gnus-dired-attach
Date: Fri, 14 Dec 2001 19:19:44 -0500	[thread overview]
Message-ID: <wc3wuzp5o7z.fsf@eta.cis.ohio-state.edu> (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




             reply	other threads:[~2001-12-15  0:19 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-12-15  0:19 Benjamin Rutt [this message]
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

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=wc3wuzp5o7z.fsf@eta.cis.ohio-state.edu \
    --to=rutt+news@cis.ohio-state.edu \
    /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.
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).