[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#30285: dired-do-chmod vs. top line of dired
From: |
Juri Linkov |
Subject: |
bug#30285: dired-do-chmod vs. top line of dired |
Date: |
Sun, 04 Feb 2018 00:23:38 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) |
> This might be better: "No files specified"
> Or this: "No files chosen"
> [...]
> The return value of `dired-get-marked-files' needs to be tested as
> soon as it's available. When it is nil we must not call
> `dired-read-shell-command' or do anything else - just raise a
> `user-error'.
>
> This is a general change that needs to be looked for and made
> wherever appropriate.
Agreed. Simplicity is the hallmark of Emacs.
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 55b68a3..f5caa2a 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -301,7 +301,8 @@ dired-do-chxxx
;; PROGRAM is the program used to change the attribute.
;; 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))
+ (let* ((files (or (dired-get-marked-files t arg)
+ (user-error "No files specified")))
;; The source of default file attributes is the file at point.
(default-file (dired-get-filename t t))
(default (when default-file
@@ -361,7 +362,8 @@ dired-do-chmod
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))
+ (let* ((files (or (dired-get-marked-files t arg)
+ (user-error "No files specified")))
;; The source of default file attributes is the file at point.
(default-file (dired-get-filename t t))
(modestr (when default-file
@@ -476,7 +478,8 @@ dired-do-print
`lpr-switches' as default."
(interactive "P")
(require 'lpr)
- (let* ((file-list (dired-get-marked-files t arg))
+ (let* ((file-list (or (dired-get-marked-files t arg)
+ (user-error "No files specified")))
(lpr-switches
(if (and (stringp printer-name)
(string< "" printer-name))
@@ -666,7 +669,8 @@ dired-do-async-shell-command
The output appears in the buffer `*Async Shell Command*'."
(interactive
- (let ((files (dired-get-marked-files t current-prefix-arg)))
+ (let ((files (or (dired-get-marked-files t current-prefix-arg)
+ (user-error "No files specified"))))
(list
;; Want to give feedback whether this file or marked files are used:
(dired-read-shell-command "& on %s: " current-prefix-arg files)
@@ -727,7 +731,8 @@ dired-do-shell-command
;;Functions dired-run-shell-command and dired-shell-stuff-it do the
;;actual work and can be redefined for customization.
(interactive
- (let ((files (dired-get-marked-files t current-prefix-arg)))
+ (let ((files (or (dired-get-marked-files t current-prefix-arg)
+ (user-error "No files specified"))))
(list
;; Want to give feedback whether this file or marked files are used:
(dired-read-shell-command "! on %s: " current-prefix-arg files)
@@ -1030,7 +1035,8 @@ dired-do-compress-to
Choose the archiving command based on the archive file-name extension
and `dired-compress-files-alist'."
(interactive)
- (let* ((in-files (dired-get-marked-files))
+ (let* ((in-files (or (dired-get-marked-files)
+ (user-error "No files specified")))
(out-file (expand-file-name (read-file-name "Compress to: ")))
(rule (cl-find-if
(lambda (x)
@@ -1153,7 +1159,8 @@ dired-mark-confirm
;; Pass t for DISTINGUISH-ONE-MARKED so that a single file which
;; is marked pops up a window. That will help the user see
;; it isn't the current line file.
- (let ((files (dired-get-marked-files t arg nil t))
+ (let ((files (or (dired-get-marked-files t arg nil t)
+ (user-error "No files specified")))
(string (if (eq op-symbol 'compress) "Compress or uncompress"
(capitalize (symbol-name op-symbol)))))
(dired-mark-pop-up nil op-symbol files #'y-or-n-p
@@ -1845,7 +1852,8 @@ dired-do-create-files
The rest of into-dir are optional arguments.
For any other return value, TARGET is treated as a directory."
(or op1 (setq op1 operation))
- (let* ((fn-list (dired-get-marked-files nil arg))
+ (let* ((fn-list (or (dired-get-marked-files nil arg)
+ (user-error "No files specified")))
(rfn-list (mapcar #'dired-make-relative fn-list))
(dired-one-file ; fluid variable inside dired-create-files
(and (consp fn-list) (null (cdr fn-list)) (car fn-list)))
@@ -2799,14 +2807,16 @@ dired-do-isearch
"Search for a string through all marked files using Isearch."
(interactive)
(multi-isearch-files
- (dired-get-marked-files nil nil 'dired-nondirectory-p)))
+ (or (dired-get-marked-files nil nil 'dired-nondirectory-p)
+ (user-error "No files specified"))))
;;;###autoload
(defun dired-do-isearch-regexp ()
"Search for a regexp through all marked files using Isearch."
(interactive)
(multi-isearch-files-regexp
- (dired-get-marked-files nil nil 'dired-nondirectory-p)))
+ (or (dired-get-marked-files nil nil 'dired-nondirectory-p)
+ (user-error "No files specified"))))
;;;###autoload
(defun dired-do-search (regexp)
@@ -2827,7 +2837,8 @@ dired-do-query-replace-regexp
(query-replace-read-args
"Query replace regexp in marked files" t t)))
(list (nth 0 common) (nth 1 common) (nth 2 common))))
- (dolist (file (dired-get-marked-files nil nil 'dired-nondirectory-p))
+ (dolist (file (or (dired-get-marked-files nil nil 'dired-nondirectory-p)
+ (user-error "No files specified")))
(let ((buffer (get-file-buffer file)))
(if (and buffer (with-current-buffer buffer
buffer-read-only))
@@ -2851,7 +2862,8 @@ dired-do-find-regexp
(require 'grep)
(defvar grep-find-ignored-files)
(defvar grep-find-ignored-directories)
- (let* ((files (dired-get-marked-files))
+ (let* ((files (or (dired-get-marked-files)
+ (user-error "No files specified")))
(ignores (nconc (mapcar
(lambda (s) (concat s "/"))
grep-find-ignored-directories)
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index a90f1f4..1beeafe 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -1335,7 +1335,9 @@ dired-do-find-marked-files
To keep Dired buffer displayed, type \\[split-window-below] first.
To display just marked files, type \\[delete-other-windows] first."
(interactive "P")
- (dired-simultaneous-find-file (dired-get-marked-files) noselect))
+ (dired-simultaneous-find-file (or (dired-get-marked-files)
+ (user-error "No files specified"))
+ noselect))
(defun dired-simultaneous-find-file (file-list noselect)
"Visit all files in FILE-LIST and display them simultaneously.
- bug#30285: dired-do-chmod vs. top line of dired, Tino Calancha, 2018/02/01
- bug#30285: dired-do-chmod vs. top line of dired, Tino Calancha, 2018/02/01
- bug#30285: dired-do-chmod vs. top line of dired, Drew Adams, 2018/02/01
- bug#30285: dired-do-chmod vs. top line of dired, Juri Linkov, 2018/02/01
- bug#30285: dired-do-chmod vs. top line of dired, Drew Adams, 2018/02/01
- bug#30285: dired-do-chmod vs. top line of dired, Juri Linkov, 2018/02/01
- bug#30285: dired-do-chmod vs. top line of dired, Drew Adams, 2018/02/01
- bug#30285: dired-do-chmod vs. top line of dired,
Juri Linkov <=
- bug#30285: dired-do-chmod vs. top line of dired, martin rudalics, 2018/02/04
- bug#30285: dired-do-chmod vs. top line of dired, Juri Linkov, 2018/02/04
- bug#30285: dired-do-chmod vs. top line of dired, Juri Linkov, 2018/02/06
- bug#30285: dired-do-chmod vs. top line of dired, Tino Calancha, 2018/02/04
- bug#30285: dired-do-chmod vs. top line of dired, Juri Linkov, 2018/02/05
- bug#30285: dired-do-chmod vs. top line of dired, Drew Adams, 2018/02/05