changeset 105938:788a43a6e3c8

(dired-get-filename)<declare-function>: Tell the byte-compiler about dired-get-filename. (shell-command): In Dired mode, get filename from the current line as the default value.
author Juri Linkov <juri@jurta.org>
date Wed, 11 Nov 2009 00:11:40 +0000
parents 88b92b3656ae
children a0f778f4a995
files etc/TODO lisp/ChangeLog lisp/simple.el
diffstat 3 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/etc/TODO	Tue Nov 10 21:22:57 2009 +0000
+++ b/etc/TODO	Wed Nov 11 00:11:40 2009 +0000
@@ -112,8 +112,6 @@
 
 ** Add function to redraw the tool bar.
 
-** M-! M-n should fetch the buffer-file-name as the default.
-
 ** Redesign the load-history data structure so it can cope better
   with evaluating definitions of the same function from different files,
   recording which file the latest definition came from.
--- a/lisp/ChangeLog	Tue Nov 10 21:22:57 2009 +0000
+++ b/lisp/ChangeLog	Wed Nov 11 00:11:40 2009 +0000
@@ -1,3 +1,10 @@
+2009-11-11  Juri Linkov  <juri@jurta.org>
+
+	* simple.el (dired-get-filename)<declare-function>:
+	Tell the byte-compiler about dired-get-filename.
+	(shell-command): In Dired mode, get filename from the current line
+	as the default value.
+
 2009-11-10  Glenn Morris  <rgm@gnu.org>
 
 	* dired.el, hi-lock.el, calendar/cal-menu.el, calendar/calendar.el:
--- a/lisp/simple.el	Tue Nov 10 21:22:57 2009 +0000
+++ b/lisp/simple.el	Wed Nov 11 00:11:40 2009 +0000
@@ -2013,6 +2013,7 @@
 stdout will be intermixed in the output stream.")
 
 (declare-function mailcap-file-default-commands "mailcap" (files))
+(declare-function dired-get-filename "dired" (&optional localp no-error-if-not-filep))
 
 (defun minibuffer-default-add-shell-commands ()
   "Return a list of all commands associated with the current file.
@@ -2136,8 +2137,12 @@
   (interactive
    (list
     (read-shell-command "Shell command: " nil nil
-			(and buffer-file-name
-			     (file-relative-name buffer-file-name)))
+			(let ((filename
+			       (cond
+				(buffer-file-name)
+				((eq major-mode 'dired-mode)
+				 (dired-get-filename nil t)))))
+			  (and filename (file-relative-name filename))))
     current-prefix-arg
     shell-command-default-error-buffer))
   ;; Look for a handler in case default-directory is a remote file name.