X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/233ba4d924933cb56129bd7511e6137b7c0b8e3e..7cef3569a3d872ea5be07a529b68910bf1d8b790:/lisp/eshell/esh-util.el diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el index 2de147acb0..8218e91ddc 100644 --- a/lisp/eshell/esh-util.el +++ b/lisp/eshell/esh-util.el @@ -1,6 +1,6 @@ ;;; esh-util.el --- general utilities -;; Copyright (C) 1999-2011 Free Software Foundation, Inc. +;; Copyright (C) 1999-2012 Free Software Foundation, Inc. ;; Author: John Wiegley @@ -81,7 +81,7 @@ Setting this to nil is offered as an aid to debugging only." Numeric form is tested using the regular expression `eshell-number-regexp'. -NOTE: If you find that numeric conversions are intefering with the +NOTE: If you find that numeric conversions are interfering with the specification of filenames (for example, in calling `find-file', or some other Lisp function that deals with files, not numbers), add the following in your .emacs file: @@ -138,27 +138,15 @@ function `string-to-number'." (memq system-type '(ms-dos windows-nt))) (defmacro eshell-condition-case (tag form &rest handlers) - "Like `condition-case', but only if `eshell-pass-through-errors' is nil." + "If `eshell-handle-errors' is non-nil, this is `condition-case'. +Otherwise, evaluates FORM with no error handling." + (declare (indent 2)) (if eshell-handle-errors `(condition-case ,tag ,form ,@handlers) form)) -(put 'eshell-condition-case 'lisp-indent-function 2) - -(defmacro eshell-deftest (module name label &rest forms) - (if (and (fboundp 'cl-compiling-file) (cl-compiling-file)) - nil - (let ((fsym (intern (concat "eshell-test--" (symbol-name name))))) - `(eval-when-compile - (ignore - (defun ,fsym () ,label - (eshell-run-test (quote ,module) (quote ,fsym) ,label - (quote (progn ,@forms))))))))) - -(put 'eshell-deftest 'lisp-indent-function 2) - (defun eshell-find-delimiter (open close &optional bound reverse-p backslash-p) "From point, find the CLOSE delimiter corresponding to OPEN. @@ -285,21 +273,22 @@ Prepend remote identification of `default-directory', if any." (setq text (replace-match " " t t text))) text)) -;; FIXME this is just dolist. (defmacro eshell-for (for-var for-list &rest forms) - "Iterate through a list" + "Iterate through a list." + (declare (indent 2)) `(let ((list-iter ,for-list)) (while list-iter (let ((,for-var (car list-iter))) ,@forms) (setq list-iter (cdr list-iter))))) -(put 'eshell-for 'lisp-indent-function 2) + +(make-obsolete 'eshell-for 'dolist "24.1") (defun eshell-flatten-list (args) "Flatten any lists within ARGS, so that there are no sublists." (let ((new-list (list t))) - (eshell-for a args + (dolist (a args) (if (and (listp a) (listp (cdr a))) (nconc new-list (eshell-flatten-list a)) @@ -405,7 +394,7 @@ list." (unless (listp entries) (setq entries (list entries) listified t)) - (eshell-for entry entries + (dolist (entry entries) (unless (and exclude (string-match exclude entry)) (setq p predicates valid (null p)) (while p @@ -494,7 +483,7 @@ list." (insert-file-contents eshell-hosts-file) (goto-char (point-min)) (while (re-search-forward - "^\\(\\S-+\\)\\s-+\\(\\S-+\\)\\(\\s-*\\(\\S-+\\)\\)?" nil t) + "^\\([^#[:space:]]+\\)\\s-+\\(\\S-+\\)\\(\\s-*\\(\\S-+\\)\\)?" nil t) (if (match-string 1) (add-to-list 'hosts (match-string 1))) (if (match-string 2)