From 6e13206c036278d386b70e742355876b0340d28a Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 23 Nov 2010 12:36:15 -0500 Subject: [PATCH] * 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. --- lisp/ChangeLog | 7 +++++++ lisp/eshell/em-script.el | 34 ++++++++++++++++++---------------- lisp/eshell/esh-arg.el | 37 ++++++++++++++++++------------------- lisp/eshell/esh-cmd.el | 14 ++++++++------ 4 files changed, 51 insertions(+), 41 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d2969ea77fb..c29cd080c03 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2010-11-23 Stefan Monnier + + * 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 * vc/vc.el (vc-merge): Remove optional arg PROMPT. Always prompt diff --git a/lisp/eshell/em-script.el b/lisp/eshell/em-script.el index 183faa1dd77..21a5d804073 100644 --- a/lisp/eshell/em-script.el +++ b/lisp/eshell/em-script.el @@ -90,23 +90,25 @@ Comments begin with '#'." (interactive "f") (let ((orig (point)) (here (point-max)) - (inhibit-point-motion-hooks t) - after-change-functions) + (inhibit-point-motion-hooks t)) (goto-char (point-max)) - (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))))) + (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." diff --git a/lisp/eshell/esh-arg.el b/lisp/eshell/esh-arg.el index 6395fe22d87..e6d73acd434 100644 --- a/lisp/eshell/esh-arg.el +++ b/lisp/eshell/esh-arg.el @@ -123,7 +123,7 @@ treated as a literal character." :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 @@ Point is left at the end of the arguments." (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." diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el index 0dc1cb26fa9..a12d8fb7f3b 100644 --- a/lisp/eshell/esh-cmd.el +++ b/lisp/eshell/esh-cmd.el @@ -355,12 +355,14 @@ hooks should be run before and after the command." (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 -- 2.11.4.GIT