changeset 111686:e8049570c647

* lisp/eshell/: Use with-silent-modifications. * lisp/eshell/esh-cmd.el (eshell-parse-command): * lisp/eshell/esh-arg.el (eshell-parse-arguments): * lisp/eshell/em-script.el (eshell-source-file): Use with-silent-modifications.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 23 Nov 2010 12:36:15 -0500
parents 411dce7ee068
children 17d793ffe36f
files lisp/ChangeLog lisp/eshell/em-script.el lisp/eshell/esh-arg.el lisp/eshell/esh-cmd.el
diffstat 4 files changed, 51 insertions(+), 41 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Nov 23 10:13:43 2010 -0500
+++ b/lisp/ChangeLog	Tue Nov 23 12:36:15 2010 -0500
@@ -1,3 +1,10 @@
+2010-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* eshell/esh-cmd.el (eshell-parse-command):
+	* eshell/esh-arg.el (eshell-parse-arguments):
+	* eshell/em-script.el (eshell-source-file):
+	Use with-silent-modifications.
+
 2010-11-23  Chong Yidong  <cyd@stupidchicken.com>
 
 	* vc/vc.el (vc-merge): Remove optional arg PROMPT.  Always prompt
--- a/lisp/eshell/em-script.el	Tue Nov 23 10:13:43 2010 -0500
+++ b/lisp/eshell/em-script.el	Tue Nov 23 12:36:15 2010 -0500
@@ -90,23 +90,25 @@
   (interactive "f")
   (let ((orig (point))
 	(here (point-max))
-	(inhibit-point-motion-hooks t)
-	after-change-functions)
-    (goto-char (point-max))
-    (insert-file-contents file)
+	(inhibit-point-motion-hooks t))
     (goto-char (point-max))
-    (throw 'eshell-replace-command
-	   (prog1
-	       (list 'let
-		     (list (list 'eshell-command-name (list 'quote file))
-			   (list 'eshell-command-arguments
-				 (list 'quote args)))
-		     (let ((cmd (eshell-parse-command (cons here (point)))))
-		       (if subcommand-p
-			   (setq cmd (list 'eshell-as-subcommand cmd)))
-		       cmd))
-	     (delete-region here (point))
-	     (goto-char orig)))))
+    (with-silent-modifications
+      ;; FIXME: Why not use a temporary buffer and avoid this
+      ;; "insert&delete" business?  --Stef
+      (insert-file-contents file)
+      (goto-char (point-max))
+      (throw 'eshell-replace-command
+             (prog1
+                 (list 'let
+                       (list (list 'eshell-command-name (list 'quote file))
+                             (list 'eshell-command-arguments
+                                   (list 'quote args)))
+                       (let ((cmd (eshell-parse-command (cons here (point)))))
+                         (if subcommand-p
+                             (setq cmd (list 'eshell-as-subcommand cmd)))
+                         cmd))
+               (delete-region here (point))
+               (goto-char orig))))))
 
 (defun eshell/source (&rest args)
   "Source a file in a subshell environment."
--- a/lisp/eshell/esh-arg.el	Tue Nov 23 10:13:43 2010 -0500
+++ b/lisp/eshell/esh-arg.el	Tue Nov 23 12:36:15 2010 -0500
@@ -123,7 +123,7 @@
   :type 'hook
   :group 'eshell-arg)
 
-(defcustom eshell-delimiter-argument-list '(?\; ?& ?\| ?\> ?  ?\t ?\n)
+(defcustom eshell-delimiter-argument-list '(?\; ?& ?\| ?\> ?\s ?\t ?\n)
   "List of characters to recognize as argument separators."
   :type '(repeat character)
   :group 'eshell-arg)
@@ -214,25 +214,24 @@
       (narrow-to-region beg end)
       (let ((inhibit-point-motion-hooks t)
 	    (args (list t))
-	    after-change-functions
 	    delim)
-	(remove-text-properties (point-min) (point-max)
-				'(arg-begin nil arg-end nil))
-	(if (setq
-	     delim
-	     (catch 'eshell-incomplete
-	       (while (not (eobp))
-		 (let* ((here (point))
-			(arg (eshell-parse-argument)))
-		   (if (= (point) here)
-		       (error "Failed to parse argument '%s'"
-			      (buffer-substring here (point-max))))
-		   (and arg (nconc args (list arg)))))))
-	    (if (listp delim)
-		(throw 'eshell-incomplete delim)
-	      (throw 'eshell-incomplete
-		     (list delim (point) (cdr args)))))
-	(cdr args)))))
+        (with-silent-modifications
+          (remove-text-properties (point-min) (point-max)
+                                  '(arg-begin nil arg-end nil))
+          (if (setq
+               delim
+               (catch 'eshell-incomplete
+                 (while (not (eobp))
+                   (let* ((here (point))
+                          (arg (eshell-parse-argument)))
+                     (if (= (point) here)
+                         (error "Failed to parse argument '%s'"
+                                (buffer-substring here (point-max))))
+                     (and arg (nconc args (list arg)))))))
+              (throw 'eshell-incomplete (if (listp delim)
+                                            delim
+                                          (list delim (point) (cdr args)))))
+          (cdr args))))))
 
 (defun eshell-parse-argument ()
   "Get the next argument.  Leave point after it."
--- a/lisp/eshell/esh-cmd.el	Tue Nov 23 10:13:43 2010 -0500
+++ b/lisp/eshell/esh-cmd.el	Tue Nov 23 12:36:15 2010 -0500
@@ -355,12 +355,14 @@
 	   (if (consp command)
 	       (eshell-parse-arguments (car command) (cdr command))
 	     (let ((here (point))
-		   (inhibit-point-motion-hooks t)
-		   after-change-functions)
-	       (insert command)
-	       (prog1
-		   (eshell-parse-arguments here (point))
-		 (delete-region here (point)))))
+		   (inhibit-point-motion-hooks t))
+               (with-silent-modifications
+                 ;; FIXME: Why not use a temporary buffer and avoid this
+                 ;; "insert&delete" business?  --Stef
+                 (insert command)
+                 (prog1
+                     (eshell-parse-arguments here (point))
+                   (delete-region here (point))))))
 	   args))
 	 (commands
 	  (mapcar