diff options
Diffstat (limited to 'lisp/eshell/em-unix.el')
| -rw-r--r-- | lisp/eshell/em-unix.el | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el index af54d875cb0..1cf40d58a49 100644 --- a/lisp/eshell/em-unix.el +++ b/lisp/eshell/em-unix.el @@ -1,4 +1,4 @@ -;;; em-unix.el --- UNIX command aliases +;;; em-unix.el --- UNIX command aliases -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. @@ -195,12 +195,12 @@ Otherwise, Emacs will attempt to use rsh to invoke du on the remote machine." (Info-menu (car args)) (setq args (cdr args))))) -(defun eshell-remove-entries (path files &optional top-level) - "From PATH, remove all of the given FILES, perhaps interactively." +(defun eshell-remove-entries (files &optional toplevel) + "Remove all of the given FILES, perhaps interactively." (while files (if (string-match "\\`\\.\\.?\\'" (file-name-nondirectory (car files))) - (if top-level + (if toplevel (eshell-error "rm: cannot remove `.' or `..'\n")) (if (and (file-directory-p (car files)) (not (file-symlink-p (car files)))) @@ -284,18 +284,21 @@ Remove (unlink) the FILE(s).") entry))))) (eshell-funcalln 'unintern entry))) ((stringp entry) - (if (and (file-directory-p entry) - (not (file-symlink-p entry))) - (if (or em-recursive - eshell-rm-removes-directories) - (if (or em-preview - (not em-interactive) - (y-or-n-p - (format "rm: descend into directory `%s'? " - entry))) - (eshell-remove-entries nil (list entry) t)) - (eshell-error (format "rm: %s: is a directory\n" entry))) - (eshell-remove-entries nil (list entry) t))))) + ;; -f should silently ignore missing files (bug#15373). + (unless (and force-removal + (not (file-exists-p entry))) + (if (and (file-directory-p entry) + (not (file-symlink-p entry))) + (if (or em-recursive + eshell-rm-removes-directories) + (if (or em-preview + (not em-interactive) + (y-or-n-p + (format "rm: descend into directory `%s'? " + entry))) + (eshell-remove-entries (list entry) t)) + (eshell-error (format "rm: %s: is a directory\n" entry))) + (eshell-remove-entries (list entry) t)))))) (setq args (cdr args))) nil)) @@ -458,6 +461,8 @@ Remove the DIRECTORY(ies), if they are empty.") (eshell-parse-command (format "tar %s %s" tar-args archive) args)))) +(defvar ange-cache) ; XEmacs? See esh-util + ;; this is to avoid duplicating code... (defmacro eshell-mvcpln-template (command action func query-var force-var &optional preserve) @@ -714,6 +719,8 @@ available..." (goto-char (point-min)) (resize-temp-buffer-window)))))) +(defvar compilation-scroll-output) + (defun eshell-grep (command args &optional maybe-use-occur) "Generic service function for the various grep aliases. It calls Emacs's grep utility if the command is not redirecting output, @@ -989,7 +996,7 @@ Show wall-clock time elapsed during execution of COMMAND.") (setq args nil) (setcdr (last args 3) nil)) (with-current-buffer - (condition-case err + (condition-case nil (diff-no-select old new (nil-blank-string (eshell-flatten-and-stringify args))) @@ -1014,6 +1021,8 @@ Show wall-clock time elapsed during execution of COMMAND.") (put 'eshell/diff 'eshell-no-numeric-conversions t) +(defvar locate-history-list) + (defun eshell/locate (&rest args) "Alias \"locate\" to call Emacs `locate' function." (if (or eshell-plain-locate-behavior |
