]> git.eshelyaron.com Git - emacs.git/commitdiff
(eshell-lisp-command): Don't perform numeric conversions if a Lisp
authorJohn Wiegley <johnw@newartisans.com>
Thu, 10 May 2001 03:50:53 +0000 (03:50 +0000)
committerJohn Wiegley <johnw@newartisans.com>
Thu, 10 May 2001 03:50:53 +0000 (03:50 +0000)
function has the property `eshell-no-numeric-conversions' set to a
non-nil value.

lisp/ChangeLog
lisp/eshell/esh-cmd.el

index 49e308f5ca70d86e604359a2266181bd6c895901..59f24db30580480aa9abd4a41e121920a31d678c 100644 (file)
@@ -1,5 +1,9 @@
 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.
index fee5ea0c3c39b3a98b7086096574d9cb4ca6f0eb..ef64fa95867780876613c6964dec906e94bfd424 100644 (file)
@@ -1265,6 +1265,8 @@ be finished later after the completion of an asynchronous subprocess."
                                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."
@@ -1383,23 +1385,27 @@ messages, and errors."
 
 (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