X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fgnus-dired.el;h=d341cea34bba775f50089c0870b396dfa49c2179;hb=5beb390633ce1e32cdf319c6ba19926244bbfdf2;hp=6bb282a64124467afb8393b120097330360376c6;hpb=8b5af94e55ef83ee46b42d32d92fa1ce95dcacf5;p=gnus diff --git a/lisp/gnus-dired.el b/lisp/gnus-dired.el index 6bb282a64..d341cea34 100644 --- a/lisp/gnus-dired.el +++ b/lisp/gnus-dired.el @@ -1,7 +1,6 @@ ;;; gnus-dired.el --- utility functions where gnus and dired meet -;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2001-2012 Free Software Foundation, Inc. ;; Authors: Benjamin Rutt , ;; Shenghuo Zhu @@ -39,6 +38,9 @@ ;;; Code: +(eval-when-compile + (when (featurep 'xemacs) + (require 'easy-mmode))) ; for `define-minor-mode' (require 'dired) (autoload 'mml-attach-file "mml") (autoload 'mm-default-file-encoding "mm-decode");; Shift this to `mailcap.el'? @@ -53,23 +55,17 @@ ;; Autoloads to avoid byte-compiler warnings. These are used only if the user ;; customizes `gnus-dired-mail-mode' to use Message and/or Gnus. (autoload 'message-buffers "message") -(autoload 'gnus-setup-message "gnus-msg") (autoload 'gnus-print-buffer "gnus-sum") -(defvar gnus-dired-mode nil - "Minor mode for intersections of MIME mail composition and dired.") - -(defvar gnus-dired-mode-map nil) - -(unless gnus-dired-mode-map - (setq gnus-dired-mode-map (make-sparse-keymap)) - - (define-key gnus-dired-mode-map "\C-c\C-m\C-a" 'gnus-dired-attach) - (define-key gnus-dired-mode-map "\C-c\C-m\C-l" 'gnus-dired-find-file-mailcap) - (define-key gnus-dired-mode-map "\C-c\C-m\C-p" 'gnus-dired-print)) +(defvar gnus-dired-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "\C-c\C-m\C-a" 'gnus-dired-attach) + (define-key map "\C-c\C-m\C-l" 'gnus-dired-find-file-mailcap) + (define-key map "\C-c\C-m\C-p" 'gnus-dired-print) + map)) ;; FIXME: Make it customizable, change the default to `mail-user-agent' when -;; this file if renamed (e.g. to `dired-mime.el'). +;; this file is renamed (e.g. to `dired-mime.el'). (defcustom gnus-dired-mail-mode 'gnus-user-agent ;; mail-user-agent "Your preference for a mail composition package. @@ -90,19 +86,19 @@ See `mail-user-agent' for more information." gnus-user-agent) (function :tag "Other"))) -(defun gnus-dired-mode (&optional arg) +(eval-when-compile + (when (featurep 'xemacs) + (defvar gnus-dired-mode-hook) + (defvar gnus-dired-mode-on-hook) + (defvar gnus-dired-mode-off-hook))) + +(define-minor-mode gnus-dired-mode "Minor mode for intersections of gnus and dired. \\{gnus-dired-mode-map}" - (interactive "P") - (when (eq major-mode 'dired-mode) - (set (make-local-variable 'gnus-dired-mode) - (if (null arg) (not gnus-dired-mode) - (> (prefix-numeric-value arg) 0))) - (when gnus-dired-mode - (add-minor-mode 'gnus-dired-mode "" gnus-dired-mode-map) - (save-current-buffer - (run-hooks 'gnus-dired-mode-hook))))) + :keymap gnus-dired-mode-map + (unless (derived-mode-p 'dired-mode) + (setq gnus-dired-mode nil))) ;;;###autoload (defun turn-on-gnus-dired-mode () @@ -125,6 +121,8 @@ See `mail-user-agent' for more information." (push (buffer-name buffer) buffers)))) (nreverse buffers)))) +(autoload 'gnus-completing-read "gnus-util") + ;; Method to attach files to a mail composition. (defun gnus-dired-attach (files-to-attach) "Attach dired's marked files to a gnus message composition. @@ -136,7 +134,9 @@ filenames." (mapcar ;; don't attach directories (lambda (f) (if (file-directory-p f) nil f)) - (nreverse (dired-map-over-marks (dired-get-filename) nil)))))) + (nreverse + (let ((arg nil)) ;; Silence XEmacs 21.5 when compiling. + (dired-map-over-marks (dired-get-filename) arg))))))) (let ((destination nil) (files-str nil) (bufs nil)) @@ -155,16 +155,20 @@ filenames." (setq destination (if (= (length bufs) 1) (get-buffer (car bufs)) - (completing-read "Attach to which mail composition buffer: " - (mapcar - (lambda (b) - (cons b (get-buffer b))) - bufs) - nil t))) + (gnus-completing-read "Attach to which mail composition buffer" + bufs t))) ;; setup a new mail composition buffer - (if (eq gnus-dired-mail-mode 'gnus-user-agent) - (gnus-setup-message 'message (message-mail)) - ;; FIXME: Is this the right thing? + (let ((mail-user-agent gnus-dired-mail-mode) + ;; A workaround to prevent Gnus from displaying the Gnus + ;; logo when invoking this command without loading Gnus. + ;; Gnus demonstrates it when gnus.elc is being loaded if + ;; a command of which the name is prefixed with "gnus" + ;; causes that autoloading. See the code in question, + ;; that is the one first found in gnus.el by performing + ;; `C-s this-command'. + (this-command (if (eq gnus-dired-mail-mode 'gnus-user-agent) + 'gnoose-dired-attach + this-command))) (compose-mail)) (setq destination (current-buffer))) @@ -199,7 +203,7 @@ If ARG is non-nil, open it in a new buffer." (setq method (cdr (assoc 'viewer (car (mailcap-mime-info mime-type - 'all + 'all 'no-decode))))))) (let ((view-command (mm-mailcap-command method file-name nil))) (message "viewing via %s" view-command) @@ -247,7 +251,7 @@ file to save in." (if (eq gnus-dired-mail-mode 'gnus-user-agent) (gnus-print-buffer) ;; FIXME: - (error "MIME print only implemeted via Gnus"))) + (error "MIME print only implemented via Gnus"))) (ps-despool print-to)))) ((file-symlink-p file-name) (error "File is a symlink to a nonexistent target")) @@ -256,5 +260,4 @@ file to save in." (provide 'gnus-dired) -;; arch-tag: 44737731-e445-4638-a31e-713c7590ec76 ;;; gnus-dired.el ends here