2013-09-12 16:15:53 -04:00
|
|
|
|
;;; em-script.el --- Eshell script files -*- lexical-binding:t -*-
|
2000-06-23 05:24:10 +00:00
|
|
|
|
|
2015-01-01 14:26:41 -08:00
|
|
|
|
;; Copyright (C) 1999-2015 Free Software Foundation, Inc.
|
2000-06-23 05:24:10 +00:00
|
|
|
|
|
2000-10-16 12:27:09 +00:00
|
|
|
|
;; Author: John Wiegley <johnw@gnu.org>
|
|
|
|
|
|
2000-06-23 05:24:10 +00:00
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
|
2008-05-06 03:36:21 +00:00
|
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
2000-06-23 05:24:10 +00:00
|
|
|
|
;; it under the terms of the GNU General Public License as published by
|
2008-05-06 03:36:21 +00:00
|
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
;; (at your option) any later version.
|
2000-06-23 05:24:10 +00:00
|
|
|
|
|
|
|
|
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
2008-05-06 03:36:21 +00:00
|
|
|
|
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
2000-06-23 05:24:10 +00:00
|
|
|
|
|
2007-12-05 07:03:18 +00:00
|
|
|
|
;;; Commentary:
|
2000-06-23 05:24:10 +00:00
|
|
|
|
|
2007-12-05 07:03:18 +00:00
|
|
|
|
;;; Code:
|
2000-06-23 05:24:10 +00:00
|
|
|
|
|
2002-11-29 09:43:35 +00:00
|
|
|
|
(require 'eshell)
|
More CL cleanups and reduction of use of cl.el.
* woman.el, winner.el, vc/vc-rcs.el, vc/vc-hooks.el, vc/vc-hg.el:
* vc/vc-git.el, vc/vc-dir.el, vc/vc-bzr.el, vc/vc-annotate.el:
* textmodes/tex-mode.el, textmodes/sgml-mode.el, tar-mode.el:
* strokes.el, ses.el, server.el, progmodes/js.el, progmodes/gdb-mi.el:
* progmodes/flymake.el, progmodes/ebrowse.el, progmodes/compile.el:
* play/tetris.el, play/snake.el, play/pong.el, play/landmark.el:
* play/hanoi.el, play/decipher.el, play/5x5.el, nxml/nxml-mode.el:
* net/secrets.el, net/quickurl.el, midnight.el, mail/footnote.el:
* image-dired.el, ibuffer.el, ibuf-macs.el, ibuf-ext.el, hexl.el:
* eshell/eshell.el, eshell/esh-io.el, eshell/esh-ext.el:
* eshell/esh-cmd.el, eshell/em-ls.el, eshell/em-hist.el:
* eshell/em-cmpl.el, eshell/em-banner.el:
* url/url.el, url/url-queue.el, url/url-parse.el, url/url-http.el:
* url/url-future.el, url/url-dav.el, url/url-cookie.el:
* calendar/parse-time.el, test/eshell.el: Use cl-lib.
* wid-browse.el, wdired.el, vc/vc.el, vc/vc-mtn.el, vc/vc-cvs.el:
* vc/vc-arch.el, tree-widget.el, textmodes/texinfo.el:
* textmodes/refill.el, textmodes/css-mode.el, term/tvi970.el:
* term/ns-win.el, term.el, shell.el, ps-samp.el:
* progmodes/perl-mode.el, progmodes/pascal.el, progmodes/gud.el:
* progmodes/glasses.el, progmodes/etags.el, progmodes/cwarn.el:
* play/gamegrid.el, play/bubbles.el, novice.el, notifications.el:
* net/zeroconf.el, net/xesam.el, net/snmp-mode.el, net/mairix.el:
* net/ldap.el, net/eudc.el, net/browse-url.el, man.el:
* mail/mailheader.el, mail/feedmail.el:
* url/url-util.el, url/url-privacy.el, url/url-nfs.el, url/url-misc.el:
* url/url-methods.el, url/url-gw.el, url/url-file.el, url/url-expand.el:
Dont use CL.
* ibuf-ext.el (ibuffer-mark-old-buffers): Use float-time.
* eshell/esh-opt.el (eshell-eval-using-options): Quote code with
`lambda' rather than with `quote'.
(eshell-do-opt): Adjust accordingly.
(eshell-process-option): Simplify.
* eshell/esh-var.el:
* eshell/em-script.el: Require `esh-opt' for eshell-eval-using-options.
* emacs-pcase.el (pcase--dontcare-upats, pcase--let*)
(pcase--expand, pcase--u1): Rename pcase's internal `dontcare' pattern
to `pcase--dontcare'.
* emacs-cl.el (labels): Mark obsolete.
(cl--letf, letf): Move to cl-lib.
(cl--letf*, letf*): Remove.
* emacs-cl-lib.el (cl-nth-value): Use defalias.
* emacs-cl-macs.el (cl-dolist, cl-dotimes): Add indent rule.
(cl-progv): Rewrite.
(cl--letf, cl-letf): Move from cl.el.
(cl-letf*): New macro.
* emacs-cl-extra.el (cl--progv-before, cl--progv-after): Remove.
2012-07-11 19:13:41 -04:00
|
|
|
|
(require 'esh-opt)
|
2002-11-29 09:43:35 +00:00
|
|
|
|
|
2008-05-21 03:51:08 +00:00
|
|
|
|
;;;###autoload
|
Replace eshell-defgroup with plain defgroup
Borrowing a trick from vc-sccs.el, wrap the defgroup in a progn
so that the whole thing ends up in the generated autoload file,
esh-groups.el.
* em-alias.el, em-banner.el, em-basic.el, em-cmpl.el, em-dirs.el:
* em-glob.el, em-hist.el, em-ls.el, em-pred.el, em-prompt.el:
* em-rebind.el, em-script.el, em-smart.el, em-term.el, em-unix.el:
* em-xtra.el: Replace eshell-defgroup with (progn (defgroup.
* eshell.el (eshell-defgroup): Remove alias.
2012-06-27 00:08:06 -07:00
|
|
|
|
(progn
|
|
|
|
|
(defgroup eshell-script nil
|
2000-06-23 05:24:10 +00:00
|
|
|
|
"This module allows for the execution of files containing Eshell
|
|
|
|
|
commands, as a script file."
|
|
|
|
|
:tag "Running script files."
|
Replace eshell-defgroup with plain defgroup
Borrowing a trick from vc-sccs.el, wrap the defgroup in a progn
so that the whole thing ends up in the generated autoload file,
esh-groups.el.
* em-alias.el, em-banner.el, em-basic.el, em-cmpl.el, em-dirs.el:
* em-glob.el, em-hist.el, em-ls.el, em-pred.el, em-prompt.el:
* em-rebind.el, em-script.el, em-smart.el, em-term.el, em-unix.el:
* em-xtra.el: Replace eshell-defgroup with (progn (defgroup.
* eshell.el (eshell-defgroup): Remove alias.
2012-06-27 00:08:06 -07:00
|
|
|
|
:group 'eshell-module))
|
2000-06-23 05:24:10 +00:00
|
|
|
|
|
|
|
|
|
;;; User Variables:
|
|
|
|
|
|
2011-03-04 20:11:05 -08:00
|
|
|
|
(defcustom eshell-script-load-hook nil
|
Cosmetic doc fixes for eshell.
* eshell/em-alias.el, eshell/em-banner.el, eshell/em-basic.el:
* eshell/em-cmpl.el, eshell/em-dirs.el, eshell/em-glob.el:
* eshell/em-hist.el, eshell/em-ls.el, eshell/em-pred.el:
* eshell/em-prompt.el, eshell/em-rebind.el, eshell/em-script.el:
* eshell/em-smart.el, eshell/em-term.el, eshell/em-unix.el:
* eshell/esh-cmd.el, eshell/esh-ext.el, eshell/esh-io.el:
* eshell/esh-mode.el, eshell/esh-proc.el, eshell/esh-test.el:
* eshell/esh-util.el, eshell/esh-var.el:
Remove leading `*' from docs of faces and defcustoms.
2010-09-25 14:51:55 -07:00
|
|
|
|
"A list of functions to call when loading `eshell-script'."
|
2011-03-04 20:11:05 -08:00
|
|
|
|
:version "24.1" ; removed eshell-script-initialize
|
2000-06-23 05:24:10 +00:00
|
|
|
|
:type 'hook
|
|
|
|
|
:group 'eshell-script)
|
|
|
|
|
|
2009-09-13 02:16:25 +00:00
|
|
|
|
(defcustom eshell-login-script (expand-file-name "login" eshell-directory-name)
|
Cosmetic doc fixes for eshell.
* eshell/em-alias.el, eshell/em-banner.el, eshell/em-basic.el:
* eshell/em-cmpl.el, eshell/em-dirs.el, eshell/em-glob.el:
* eshell/em-hist.el, eshell/em-ls.el, eshell/em-pred.el:
* eshell/em-prompt.el, eshell/em-rebind.el, eshell/em-script.el:
* eshell/em-smart.el, eshell/em-term.el, eshell/em-unix.el:
* eshell/esh-cmd.el, eshell/esh-ext.el, eshell/esh-io.el:
* eshell/esh-mode.el, eshell/esh-proc.el, eshell/esh-test.el:
* eshell/esh-util.el, eshell/esh-var.el:
Remove leading `*' from docs of faces and defcustoms.
2010-09-25 14:51:55 -07:00
|
|
|
|
"If non-nil, a file to invoke when starting up Eshell interactively.
|
2000-06-23 05:24:10 +00:00
|
|
|
|
This file should be a file containing Eshell commands, where comment
|
Prefer directed to neutral quotes
Prefer directed to neutral quotes in docstings and diagnostics.
In docstrings, escape apostrophes that would otherwise be translated
to curved quotes using the newer, simpler rules.
* admin/unidata/unidata-gen.el (unidata-gen-table):
* lisp/align.el (align-region):
* lisp/allout.el (allout-mode, allout-solicit-alternate-bullet):
* lisp/bookmark.el (bookmark-default-annotation-text):
* lisp/calc/calc-aent.el (math-read-if, math-read-factor):
* lisp/calc/calc-lang.el (math-read-giac-subscr)
(math-read-math-subscr):
* lisp/calc/calc-misc.el (report-calc-bug):
* lisp/calc/calc-prog.el (calc-fix-token-name)
(calc-read-parse-table-part):
* lisp/cedet/ede/pmake.el (ede-proj-makefile-insert-dist-rules):
* lisp/cedet/semantic/complete.el (semantic-displayor-show-request):
* lisp/dabbrev.el (dabbrev-expand):
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
* lisp/emacs-lisp/elint.el (elint-get-top-forms):
* lisp/emacs-lisp/lisp-mnt.el (lm-verify):
* lisp/emulation/viper-cmd.el (viper-toggle-search-style):
* lisp/erc/erc-button.el (erc-nick-popup):
* lisp/erc/erc.el (erc-cmd-LOAD, erc-handle-login):
* lisp/eshell/em-dirs.el (eshell/cd):
* lisp/eshell/em-glob.el (eshell-glob-regexp):
* lisp/eshell/em-pred.el (eshell-parse-modifiers):
* lisp/eshell/esh-arg.el (eshell-parse-arguments):
* lisp/eshell/esh-opt.el (eshell-show-usage):
* lisp/files-x.el (modify-file-local-variable):
* lisp/filesets.el (filesets-add-buffer, filesets-remove-buffer)
(filesets-update-pre010505):
* lisp/find-cmd.el (find-generic, find-to-string):
* lisp/gnus/auth-source.el (auth-source-netrc-parse-entries):
* lisp/gnus/gnus-agent.el (gnus-agent-check-overview-buffer)
(gnus-agent-fetch-headers):
* lisp/gnus/gnus-int.el (gnus-start-news-server):
* lisp/gnus/gnus-registry.el:
(gnus-registry--split-fancy-with-parent-internal):
* lisp/gnus/gnus-score.el (gnus-summary-increase-score):
* lisp/gnus/gnus-start.el (gnus-convert-old-newsrc):
* lisp/gnus/gnus-topic.el (gnus-topic-rename):
* lisp/gnus/legacy-gnus-agent.el (gnus-agent-unlist-expire-days):
* lisp/gnus/nnmairix.el (nnmairix-widget-create-query):
* lisp/gnus/spam.el (spam-check-blackholes):
* lisp/mail/feedmail.el (feedmail-run-the-queue):
* lisp/mpc.el (mpc-playlist-rename):
* lisp/net/ange-ftp.el (ange-ftp-shell-command):
* lisp/net/mairix.el (mairix-widget-create-query):
* lisp/net/tramp-cache.el:
* lisp/obsolete/otodo-mode.el (todo-more-important-p):
* lisp/obsolete/pgg-gpg.el (pgg-gpg-process-region):
* lisp/obsolete/pgg-pgp.el (pgg-pgp-process-region):
* lisp/obsolete/pgg-pgp5.el (pgg-pgp5-process-region):
* lisp/org/ob-core.el (org-babel-goto-named-src-block)
(org-babel-goto-named-result):
* lisp/org/ob-fortran.el (org-babel-fortran-ensure-main-wrap):
* lisp/org/ob-ref.el (org-babel-ref-resolve):
* lisp/org/org-agenda.el (org-agenda-prepare):
* lisp/org/org-bibtex.el (org-bibtex-fields):
* lisp/org/org-clock.el (org-clock-notify-once-if-expired)
(org-clock-resolve):
* lisp/org/org-feed.el (org-feed-parse-atom-entry):
* lisp/org/org-habit.el (org-habit-parse-todo):
* lisp/org/org-mouse.el (org-mouse-popup-global-menu)
(org-mouse-context-menu):
* lisp/org/org-table.el (org-table-edit-formulas):
* lisp/org/ox.el (org-export-async-start):
* lisp/play/dunnet.el (dun-score, dun-help, dun-endgame-question)
(dun-rooms, dun-endgame-questions):
* lisp/progmodes/ada-mode.el (ada-goto-matching-start):
* lisp/progmodes/ada-xref.el (ada-find-executable):
* lisp/progmodes/antlr-mode.el (antlr-options-alists):
* lisp/progmodes/flymake.el (flymake-parse-err-lines)
(flymake-start-syntax-check-process):
* lisp/progmodes/python.el (python-define-auxiliary-skeleton):
* lisp/progmodes/sql.el (sql-comint):
* lisp/progmodes/verilog-mode.el (verilog-load-file-at-point):
* lisp/server.el (server-get-auth-key):
* lisp/subr.el (version-to-list):
* lisp/textmodes/reftex-ref.el (reftex-label):
* lisp/textmodes/reftex-toc.el (reftex-toc-rename-label):
* lisp/vc/ediff-diff.el (ediff-same-contents):
* lisp/vc/vc-cvs.el (vc-cvs-mode-line-string):
* test/automated/tramp-tests.el (tramp-test33-asynchronous-requests):
Use directed rather than neutral quotes in diagnostics.
2015-08-24 23:39:33 -07:00
|
|
|
|
lines begin with ‘#’."
|
2000-06-23 05:24:10 +00:00
|
|
|
|
:type 'file
|
|
|
|
|
:group 'eshell-script)
|
|
|
|
|
|
2009-09-13 02:16:25 +00:00
|
|
|
|
(defcustom eshell-rc-script (expand-file-name "profile" eshell-directory-name)
|
Cosmetic doc fixes for eshell.
* eshell/em-alias.el, eshell/em-banner.el, eshell/em-basic.el:
* eshell/em-cmpl.el, eshell/em-dirs.el, eshell/em-glob.el:
* eshell/em-hist.el, eshell/em-ls.el, eshell/em-pred.el:
* eshell/em-prompt.el, eshell/em-rebind.el, eshell/em-script.el:
* eshell/em-smart.el, eshell/em-term.el, eshell/em-unix.el:
* eshell/esh-cmd.el, eshell/esh-ext.el, eshell/esh-io.el:
* eshell/esh-mode.el, eshell/esh-proc.el, eshell/esh-test.el:
* eshell/esh-util.el, eshell/esh-var.el:
Remove leading `*' from docs of faces and defcustoms.
2010-09-25 14:51:55 -07:00
|
|
|
|
"If non-nil, a file to invoke whenever Eshell is started.
|
2000-06-23 05:24:10 +00:00
|
|
|
|
This includes when running `eshell-command'."
|
|
|
|
|
:type 'file
|
|
|
|
|
:group 'eshell-script)
|
|
|
|
|
|
|
|
|
|
;;; Functions:
|
|
|
|
|
|
|
|
|
|
(defun eshell-script-initialize ()
|
|
|
|
|
"Initialize the script parsing code."
|
|
|
|
|
(make-local-variable 'eshell-interpreter-alist)
|
|
|
|
|
(setq eshell-interpreter-alist
|
2013-06-09 18:39:40 +12:00
|
|
|
|
(cons (cons #'(lambda (file args)
|
|
|
|
|
(string= (file-name-nondirectory file)
|
|
|
|
|
"eshell"))
|
|
|
|
|
'eshell/source)
|
2000-06-23 05:24:10 +00:00
|
|
|
|
eshell-interpreter-alist))
|
2000-10-29 05:18:48 +00:00
|
|
|
|
(make-local-variable 'eshell-complex-commands)
|
|
|
|
|
(setq eshell-complex-commands
|
|
|
|
|
(append '("source" ".") eshell-complex-commands))
|
2000-06-23 05:24:10 +00:00
|
|
|
|
;; these two variables are changed through usage, but we don't want
|
|
|
|
|
;; to ruin it for other modules
|
|
|
|
|
(let (eshell-inside-quote-regexp
|
|
|
|
|
eshell-outside-quote-regexp)
|
|
|
|
|
(and (not eshell-non-interactive-p)
|
|
|
|
|
eshell-login-script
|
|
|
|
|
(file-readable-p eshell-login-script)
|
|
|
|
|
(eshell-do-eval
|
|
|
|
|
(list 'eshell-commands
|
|
|
|
|
(catch 'eshell-replace-command
|
|
|
|
|
(eshell-source-file eshell-login-script))) t))
|
|
|
|
|
(and eshell-rc-script
|
|
|
|
|
(file-readable-p eshell-rc-script)
|
|
|
|
|
(eshell-do-eval
|
|
|
|
|
(list 'eshell-commands
|
|
|
|
|
(catch 'eshell-replace-command
|
|
|
|
|
(eshell-source-file eshell-rc-script))) t))))
|
|
|
|
|
|
|
|
|
|
(defun eshell-source-file (file &optional args subcommand-p)
|
|
|
|
|
"Execute a series of Eshell commands in FILE, passing ARGS.
|
Prefer directed to neutral quotes
Prefer directed to neutral quotes in docstings and diagnostics.
In docstrings, escape apostrophes that would otherwise be translated
to curved quotes using the newer, simpler rules.
* admin/unidata/unidata-gen.el (unidata-gen-table):
* lisp/align.el (align-region):
* lisp/allout.el (allout-mode, allout-solicit-alternate-bullet):
* lisp/bookmark.el (bookmark-default-annotation-text):
* lisp/calc/calc-aent.el (math-read-if, math-read-factor):
* lisp/calc/calc-lang.el (math-read-giac-subscr)
(math-read-math-subscr):
* lisp/calc/calc-misc.el (report-calc-bug):
* lisp/calc/calc-prog.el (calc-fix-token-name)
(calc-read-parse-table-part):
* lisp/cedet/ede/pmake.el (ede-proj-makefile-insert-dist-rules):
* lisp/cedet/semantic/complete.el (semantic-displayor-show-request):
* lisp/dabbrev.el (dabbrev-expand):
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
* lisp/emacs-lisp/elint.el (elint-get-top-forms):
* lisp/emacs-lisp/lisp-mnt.el (lm-verify):
* lisp/emulation/viper-cmd.el (viper-toggle-search-style):
* lisp/erc/erc-button.el (erc-nick-popup):
* lisp/erc/erc.el (erc-cmd-LOAD, erc-handle-login):
* lisp/eshell/em-dirs.el (eshell/cd):
* lisp/eshell/em-glob.el (eshell-glob-regexp):
* lisp/eshell/em-pred.el (eshell-parse-modifiers):
* lisp/eshell/esh-arg.el (eshell-parse-arguments):
* lisp/eshell/esh-opt.el (eshell-show-usage):
* lisp/files-x.el (modify-file-local-variable):
* lisp/filesets.el (filesets-add-buffer, filesets-remove-buffer)
(filesets-update-pre010505):
* lisp/find-cmd.el (find-generic, find-to-string):
* lisp/gnus/auth-source.el (auth-source-netrc-parse-entries):
* lisp/gnus/gnus-agent.el (gnus-agent-check-overview-buffer)
(gnus-agent-fetch-headers):
* lisp/gnus/gnus-int.el (gnus-start-news-server):
* lisp/gnus/gnus-registry.el:
(gnus-registry--split-fancy-with-parent-internal):
* lisp/gnus/gnus-score.el (gnus-summary-increase-score):
* lisp/gnus/gnus-start.el (gnus-convert-old-newsrc):
* lisp/gnus/gnus-topic.el (gnus-topic-rename):
* lisp/gnus/legacy-gnus-agent.el (gnus-agent-unlist-expire-days):
* lisp/gnus/nnmairix.el (nnmairix-widget-create-query):
* lisp/gnus/spam.el (spam-check-blackholes):
* lisp/mail/feedmail.el (feedmail-run-the-queue):
* lisp/mpc.el (mpc-playlist-rename):
* lisp/net/ange-ftp.el (ange-ftp-shell-command):
* lisp/net/mairix.el (mairix-widget-create-query):
* lisp/net/tramp-cache.el:
* lisp/obsolete/otodo-mode.el (todo-more-important-p):
* lisp/obsolete/pgg-gpg.el (pgg-gpg-process-region):
* lisp/obsolete/pgg-pgp.el (pgg-pgp-process-region):
* lisp/obsolete/pgg-pgp5.el (pgg-pgp5-process-region):
* lisp/org/ob-core.el (org-babel-goto-named-src-block)
(org-babel-goto-named-result):
* lisp/org/ob-fortran.el (org-babel-fortran-ensure-main-wrap):
* lisp/org/ob-ref.el (org-babel-ref-resolve):
* lisp/org/org-agenda.el (org-agenda-prepare):
* lisp/org/org-bibtex.el (org-bibtex-fields):
* lisp/org/org-clock.el (org-clock-notify-once-if-expired)
(org-clock-resolve):
* lisp/org/org-feed.el (org-feed-parse-atom-entry):
* lisp/org/org-habit.el (org-habit-parse-todo):
* lisp/org/org-mouse.el (org-mouse-popup-global-menu)
(org-mouse-context-menu):
* lisp/org/org-table.el (org-table-edit-formulas):
* lisp/org/ox.el (org-export-async-start):
* lisp/play/dunnet.el (dun-score, dun-help, dun-endgame-question)
(dun-rooms, dun-endgame-questions):
* lisp/progmodes/ada-mode.el (ada-goto-matching-start):
* lisp/progmodes/ada-xref.el (ada-find-executable):
* lisp/progmodes/antlr-mode.el (antlr-options-alists):
* lisp/progmodes/flymake.el (flymake-parse-err-lines)
(flymake-start-syntax-check-process):
* lisp/progmodes/python.el (python-define-auxiliary-skeleton):
* lisp/progmodes/sql.el (sql-comint):
* lisp/progmodes/verilog-mode.el (verilog-load-file-at-point):
* lisp/server.el (server-get-auth-key):
* lisp/subr.el (version-to-list):
* lisp/textmodes/reftex-ref.el (reftex-label):
* lisp/textmodes/reftex-toc.el (reftex-toc-rename-label):
* lisp/vc/ediff-diff.el (ediff-same-contents):
* lisp/vc/vc-cvs.el (vc-cvs-mode-line-string):
* test/automated/tramp-tests.el (tramp-test33-asynchronous-requests):
Use directed rather than neutral quotes in diagnostics.
2015-08-24 23:39:33 -07:00
|
|
|
|
Comments begin with ‘#’."
|
2000-06-23 05:24:10 +00:00
|
|
|
|
(interactive "f")
|
|
|
|
|
(let ((orig (point))
|
|
|
|
|
(here (point-max))
|
2010-11-23 12:36:15 -05:00
|
|
|
|
(inhibit-point-motion-hooks t))
|
2000-06-23 05:24:10 +00:00
|
|
|
|
(goto-char (point-max))
|
2010-11-23 12:36:15 -05:00
|
|
|
|
(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))))))
|
2000-06-23 05:24:10 +00:00
|
|
|
|
|
|
|
|
|
(defun eshell/source (&rest args)
|
|
|
|
|
"Source a file in a subshell environment."
|
|
|
|
|
(eshell-eval-using-options
|
|
|
|
|
"source" args
|
|
|
|
|
'((?h "help" nil nil "show this usage screen")
|
|
|
|
|
:show-usage
|
|
|
|
|
:usage "FILE [ARGS]
|
|
|
|
|
Invoke the Eshell commands in FILE in a subshell, binding ARGS to $1,
|
|
|
|
|
$2, etc.")
|
|
|
|
|
(eshell-source-file (car args) (cdr args) t)))
|
|
|
|
|
|
Set the property `eshell-no-numeric-conversions' on the following
functions (which all deal with filesystem entities, and never Lisp
numerical values): eshell/cd, eshell/pushd, eshell/popd, eshell/ls,
eshell/source, eshell/., eshell/man, eshell/rm, eshell/mkdir,
eshell/rmdir, eshell/mv, eshell/cp, eshell/ln, eshell/cat,
eshell/make, eshell/diff, eshell/locate, eshell/occur, eshell/which,
eshell/addpath.
2001-05-10 03:47:24 +00:00
|
|
|
|
(put 'eshell/source 'eshell-no-numeric-conversions t)
|
|
|
|
|
|
2000-06-23 05:24:10 +00:00
|
|
|
|
(defun eshell/. (&rest args)
|
|
|
|
|
"Source a file in the current environment."
|
|
|
|
|
(eshell-eval-using-options
|
|
|
|
|
"." args
|
|
|
|
|
'((?h "help" nil nil "show this usage screen")
|
|
|
|
|
:show-usage
|
|
|
|
|
:usage "FILE [ARGS]
|
|
|
|
|
Invoke the Eshell commands in FILE within the current shell
|
|
|
|
|
environment, binding ARGS to $1, $2, etc.")
|
|
|
|
|
(eshell-source-file (car args) (cdr args))))
|
|
|
|
|
|
Set the property `eshell-no-numeric-conversions' on the following
functions (which all deal with filesystem entities, and never Lisp
numerical values): eshell/cd, eshell/pushd, eshell/popd, eshell/ls,
eshell/source, eshell/., eshell/man, eshell/rm, eshell/mkdir,
eshell/rmdir, eshell/mv, eshell/cp, eshell/ln, eshell/cat,
eshell/make, eshell/diff, eshell/locate, eshell/occur, eshell/which,
eshell/addpath.
2001-05-10 03:47:24 +00:00
|
|
|
|
(put 'eshell/. 'eshell-no-numeric-conversions t)
|
|
|
|
|
|
2007-12-05 07:03:18 +00:00
|
|
|
|
(provide 'em-script)
|
2000-06-23 05:24:10 +00:00
|
|
|
|
|
2008-05-21 03:51:08 +00:00
|
|
|
|
;; Local Variables:
|
|
|
|
|
;; generated-autoload-file: "esh-groups.el"
|
|
|
|
|
;; End:
|
|
|
|
|
|
2000-06-23 05:24:10 +00:00
|
|
|
|
;;; em-script.el ends here
|