[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#10624: 24.0.92; default value of `dired-do-ch*'
From: |
Juri Linkov |
Subject: |
bug#10624: 24.0.92; default value of `dired-do-ch*' |
Date: |
Mon, 17 Sep 2012 02:48:09 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (x86_64-pc-linux-gnu) |
> `T c' or `T M-w' copies the tags from the current-line file.
>
> `T p' or `T C-y' pastes those tags to another current-line file,
> adding them to any existing tags for that file.
>
> `T q' pastes similarly, but replaces any existing tags for the target file.
>
> `T > p' (`T > C-y') and `T > q' do the same pasting thing, but for the marked
> files.
Oh no, a whole prefix map for such an auxiliary feature.
But I like the simplicity of your suggestion #2 - use the attributes of the
file on the current line. It's implemented in a small patch below:
=== modified file 'lisp/dired-aux.el'
--- lisp/dired-aux.el 2012-09-13 23:42:39 +0000
+++ lisp/dired-aux.el 2012-09-16 23:47:32 +0000
@@ -223,10 +247,17 @@ (defun dired-do-chxxx (attribute-name pr
;; OP-SYMBOL is the type of operation (for use in `dired-mark-pop-up').
;; ARG describes which files to use, as in `dired-get-marked-files'.
(let* ((files (dired-get-marked-files t arg))
- (default (and (eq op-symbol 'touch)
- (stringp (car files))
- (format-time-string "%Y%m%d%H%M.%S"
- (nth 5 (file-attributes (car
files))))))
+ ;; The source of default file attributes is the file at point.
+ (default-file (dired-get-filename t))
+ (default (when default-file
+ (cond ((eq op-symbol 'touch)
+ (format-time-string
+ "%Y%m%d%H%M.%S"
+ (nth 5 (file-attributes default-file))))
+ ((eq op-symbol 'chown)
+ (nth 2 (file-attributes default-file 'string)))
+ ((eq op-symbol 'chgrp)
+ (nth 3 (file-attributes default-file 'string))))))
(prompt (concat "Change " attribute-name " of %s to"
(if (eq op-symbol 'touch)
" (default now): "
@@ -263,11 +294,15 @@ (defun dired-do-chxxx (attribute-name pr
;;;###autoload
(defun dired-do-chmod (&optional arg)
"Change the mode of the marked (or next ARG) files.
-Symbolic modes like `g+w' are allowed."
+Symbolic modes like `g+w' are allowed.
+Type M-n to pull the file attributes of the file at point
+into the minibuffer."
(interactive "P")
(let* ((files (dired-get-marked-files t arg))
- (modestr (and (stringp (car files))
- (nth 8 (file-attributes (car files)))))
+ ;; The source of default file attributes is the file at point.
+ (default-file (dired-get-filename t))
+ (modestr (when default-file
+ (nth 8 (file-attributes default-file))))
(default
(and (stringp modestr)
(string-match "^.\\(...\\)\\(...\\)\\(...\\)$" modestr)
@@ -297,7 +335,9 @@ (defun dired-do-chmod (&optional arg)
;;;###autoload
(defun dired-do-chgrp (&optional arg)
- "Change the group of the marked (or next ARG) files."
+ "Change the group of the marked (or next ARG) files.
+Type M-n to pull the file attributes of the file at point
+into the minibuffer."
(interactive "P")
(if (memq system-type '(ms-dos windows-nt))
(error "chgrp not supported on this system"))
@@ -305,7 +345,9 @@ (defun dired-do-chgrp (&optional arg)
;;;###autoload
(defun dired-do-chown (&optional arg)
- "Change the owner of the marked (or next ARG) files."
+ "Change the owner of the marked (or next ARG) files.
+Type M-n to pull the file attributes of the file at point
+into the minibuffer."
(interactive "P")
(if (memq system-type '(ms-dos windows-nt))
(error "chown not supported on this system"))
@@ -314,7 +356,9 @@ (defun dired-do-chown (&optional arg)
;;;###autoload
(defun dired-do-touch (&optional arg)
"Change the timestamp of the marked (or next ARG) files.
-This calls touch."
+This calls touch.
+Type M-n to pull the file attributes of the file at point
+into the minibuffer."
(interactive "P")
(dired-do-chxxx "Timestamp" dired-touch-program 'touch arg))