2001-05-09 John Wiegley <johnw@gnu.org>
+ * eshell/esh-util.el (eshell-convert-numeric-arguments): Annotated
+ the documentation string to tell users about
+ `eshell-no-numeric-conversions'.
+
* eshell/esh-cmd.el (eshell-lisp-command): Don't perform numeric
conversions if a Lisp function has the property
`eshell-no-numeric-conversions' set to a non-nil value.
name (getenv "PATH")))
(eshell-printn program)))))
+(put 'eshell/which 'eshell-no-numeric-conversions t)
+
(defun eshell-named-command (command &optional args)
"Insert output from a plain COMMAND, using ARGS.
COMMAND may result in an alias being executed, or a plain command."
(defun eshell-lisp-command (object &optional args)
"Insert Lisp OBJECT, using ARGS if a function."
- ;; if any of the arguments are flagged as numbers waiting for
- ;; conversion, convert them now
- (let ((a args) arg)
- (while a
- (setq arg (car a))
- (if (and (stringp arg)
- (> (length arg) 0)
- (get-text-property 0 'number arg))
- (setcar a (string-to-number arg)))
- (setq a (cdr a))))
- (setq eshell-last-arguments args
- eshell-last-command-name "#<Lisp>")
(catch 'eshell-external ; deferred to an external command
(let* ((eshell-ensure-newline-p (eshell-interactive-output-p))
(result
(if (functionp object)
- (eshell-apply object args)
+ (progn
+ (setq eshell-last-arguments args
+ eshell-last-command-name
+ (concat "#<function " (symbol-name object) ">"))
+ ;; if any of the arguments are flagged as numbers
+ ;; waiting for conversion, convert them now
+ (unless (get object 'eshell-no-numeric-conversions)
+ (while args
+ (let ((arg (car args)))
+ (if (and (stringp arg)
+ (> (length arg) 0)
+ (get-text-property 0 'number arg))
+ (setcar a (string-to-number arg))))
+ (setq args (cdr args))))
+ (eshell-apply object eshell-last-arguments))
+ (setq eshell-last-arguments args
+ eshell-last-command-name "#<Lisp object>")
(eshell-eval object))))
(if (and eshell-ensure-newline-p
(save-excursion