X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/6b61353c0a0320ee15bb6488149735381fed62ec..d105b0e26f965b41452153ad405efe98ff142de6:/lisp/eshell/em-script.el diff --git a/lisp/eshell/em-script.el b/lisp/eshell/em-script.el index 192a520fcb..13ae6941dd 100644 --- a/lisp/eshell/em-script.el +++ b/lisp/eshell/em-script.el @@ -1,15 +1,15 @@ ;;; em-script.el --- Eshell script files -;; Copyright (C) 1999, 2000 Free Software Foundation +;; Copyright (C) 1999-2013 Free Software Foundation, Inc. ;; Author: John Wiegley ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,40 +17,40 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; along with GNU Emacs. If not, see . -(provide 'em-script) +;;; Commentary: -(eval-when-compile (require 'esh-maint)) +;;; Code: (require 'eshell) +(require 'esh-opt) +;;;###autoload +(progn (defgroup eshell-script nil "This module allows for the execution of files containing Eshell commands, as a script file." :tag "Running script files." - :group 'eshell-module) - -;;; Commentary: + :group 'eshell-module)) ;;; User Variables: -(defcustom eshell-script-load-hook '(eshell-script-initialize) - "*A list of functions to call when loading `eshell-script'." +(defcustom eshell-script-load-hook nil + "A list of functions to call when loading `eshell-script'." + :version "24.1" ; removed eshell-script-initialize :type 'hook :group 'eshell-script) -(defcustom eshell-login-script (concat eshell-directory-name "login") - "*If non-nil, a file to invoke when starting up Eshell interactively. +(defcustom eshell-login-script (expand-file-name "login" eshell-directory-name) + "If non-nil, a file to invoke when starting up Eshell interactively. This file should be a file containing Eshell commands, where comment lines begin with '#'." :type 'file :group 'eshell-script) -(defcustom eshell-rc-script (concat eshell-directory-name "profile") - "*If non-nil, a file to invoke whenever Eshell is started. +(defcustom eshell-rc-script (expand-file-name "profile" eshell-directory-name) + "If non-nil, a file to invoke whenever Eshell is started. This includes when running `eshell-command'." :type 'file :group 'eshell-script) @@ -61,7 +61,7 @@ This includes when running `eshell-command'." "Initialize the script parsing code." (make-local-variable 'eshell-interpreter-alist) (setq eshell-interpreter-alist - (cons '((lambda (file) + (cons '((lambda (file args) (string= (file-name-nondirectory file) "eshell")) . eshell/source) eshell-interpreter-alist)) @@ -92,23 +92,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." @@ -136,7 +138,10 @@ environment, binding ARGS to $1, $2, etc.") (put 'eshell/. 'eshell-no-numeric-conversions t) -;;; Code: +(provide 'em-script) + +;; Local Variables: +;; generated-autoload-file: "esh-groups.el" +;; End: -;;; arch-tag: a346439d-5ba8-4faf-ac2b-3aacfeaa4647 ;;; em-script.el ends here