summaryrefslogtreecommitdiff
path: root/lisp/eshell/eshell.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/eshell/eshell.el')
-rw-r--r--lisp/eshell/eshell.el113
1 files changed, 30 insertions, 83 deletions
diff --git a/lisp/eshell/eshell.el b/lisp/eshell/eshell.el
index 23e36149174..58bc72a3ea9 100644
--- a/lisp/eshell/eshell.el
+++ b/lisp/eshell/eshell.el
@@ -24,21 +24,6 @@
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
-(provide 'eshell)
-
-(eval-when-compile (require 'esh-maint))
-
-(defgroup eshell nil
- "Eshell is a command shell implemented entirely in Emacs Lisp. It
-invokes no external processes beyond those requested by the user. It
-is intended to be a functional replacement for command shells such as
-bash, zsh, rc, 4dos; since Emacs itself is capable of handling most of
-the tasks accomplished by such tools."
- :tag "The Emacs shell"
- :link '(info-link "(eshell)Top")
- :version "21.1"
- :group 'applications)
-
;;; Commentary:
;;;_* What does Eshell offer you?
@@ -73,33 +58,9 @@ the tasks accomplished by such tools."
;; @ Alias functions, both Lisp and Eshell-syntax
;; @ Piping, sequenced commands, background jobs, etc...
;;
-;;;_* Eshell is free software
-;;
-;; Eshell 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 3, or (at your option)
-;; any later version.
-;;
-;; This program 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
-;; along with Eshell; see the file COPYING. If not, write to the Free
-;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-;; MA 02110-1301, USA.
-;;
;;;_* How to begin
;;
-;; To start using Eshell, add the following to your .emacs file:
-;;
-;; (load "eshell-auto")
-;;
-;; This will define all of the necessary autoloads.
-;;
-;; Now type `M-x eshell'. See the INSTALL file for full installation
-;; instructions.
+;; To start using Eshell, simply type `M-x eshell'.
;;
;;;_* Philosophy
;;
@@ -263,12 +224,28 @@ the tasks accomplished by such tools."
;; will only have to read in this one file, which will greatly speed
;; things up.
+(eval-when-compile
+ (require 'cl)
+ (require 'esh-util))
+(require 'esh-util)
+(require 'esh-mode)
+
+(defgroup eshell nil
+ "Eshell is a command shell implemented entirely in Emacs Lisp. It
+invokes no external processes beyond those requested by the user. It
+is intended to be a functional replacement for command shells such as
+bash, zsh, rc, 4dos; since Emacs itself is capable of handling most of
+the tasks accomplished by such tools."
+ :tag "The Emacs shell"
+ :link '(info-link "(eshell)Top")
+ :version "21.1"
+ :group 'applications)
+
+
;;;_* User Options
;;
;; The following user options modify the behavior of Eshell overall.
-
-(unless (featurep 'esh-util)
- (load "esh-util" nil t))
+(defvar eshell-buffer-name)
(defsubst eshell-add-to-window-buffer-names ()
"Add `eshell-buffer-name' to `same-window-buffer-names'."
@@ -280,19 +257,19 @@ the tasks accomplished by such tools."
(delete eshell-buffer-name same-window-buffer-names)))
(defcustom eshell-load-hook nil
- "*A hook run once Eshell has been loaded."
+ "A hook run once Eshell has been loaded."
:type 'hook
:group 'eshell)
(defcustom eshell-unload-hook
'(eshell-remove-from-window-buffer-names
eshell-unload-all-modules)
- "*A hook run when Eshell is unloaded from memory."
+ "A hook run when Eshell is unloaded from memory."
:type 'hook
:group 'eshell)
(defcustom eshell-buffer-name "*eshell*"
- "*The basename used for Eshell buffers."
+ "The basename used for Eshell buffers."
:set (lambda (symbol value)
;; remove the old value of `eshell-buffer-name', if present
(if (boundp 'eshell-buffer-name)
@@ -309,7 +286,7 @@ the tasks accomplished by such tools."
(member eshell-buffer-name same-window-buffer-names))
(defcustom eshell-directory-name (convert-standard-filename "~/.eshell/")
- "*The directory where Eshell control files should be kept."
+ "The directory where Eshell control files should be kept."
:type 'directory
:group 'eshell)
@@ -356,10 +333,8 @@ buffer selected (or created)."
;; `same-window-buffer-names', which is done when Eshell is loaded
(assert (and buf (buffer-live-p buf)))
(pop-to-buffer buf)
- (if (fboundp 'eshell-mode)
- (unless (eq major-mode 'eshell-mode)
- (eshell-mode))
- (error "`eshell-auto' must be loaded before Eshell can be used"))
+ (unless (eq major-mode 'eshell-mode)
+ (eshell-mode))
buf))
(defun eshell-return-exits-minibuffer ()
@@ -406,7 +381,6 @@ With prefix ARG, insert output into the current buffer at point."
(format " >>> #<buffer %s>"
(buffer-name (current-buffer))))))
(save-excursion
- (require 'esh-mode)
(let ((buf (set-buffer (generate-new-buffer " *eshell cmd*")))
(eshell-non-interactive-p t))
(eshell-mode)
@@ -465,7 +439,6 @@ corresponding to a successful execution."
(if (and status-var (symbolp status-var))
(set status-var 0)))
(with-temp-buffer
- (require 'esh-mode)
(let ((eshell-non-interactive-p t))
(eshell-mode)
(let ((result (eshell-do-eval
@@ -483,40 +456,12 @@ corresponding to a successful execution."
;;;_* Reporting bugs
;;
-;; Since Eshell has not yet been in use by a wide audience, and since
-;; the number of possible configurations is quite large, it is certain
-;; that many bugs slipped past the rigors of testing it was put
-;; through. If you do encounter a bug, on any system, please report
+;; If you do encounter a bug, on any system, please report
;; it -- in addition to any particular oddities in your configuration
;; -- so that the problem may be corrected for the benefit of others.
-(defconst eshell-report-bug-address "johnw@gnu.org"
- "E-mail address to send Eshell bug reports to.")
-
;;;###autoload
-(defun eshell-report-bug (topic)
- "Report a bug in Eshell.
-Prompts for the TOPIC. Leaves you in a mail buffer.
-Please include any configuration details that might be involved."
- (interactive "sBug Subject: ")
- (compose-mail eshell-report-bug-address topic)
- (goto-char (point-min))
- (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$"))
- (forward-line 1)
- (let ((signature (buffer-substring (point) (point-max))))
- ;; Discourage users from writing non-English text.
- (set-buffer-multibyte nil)
- (delete-region (point) (point-max))
- (insert signature)
- (backward-char (length signature)))
- (insert "emacs-version: " (emacs-version))
- (insert "\n\nThere appears to be a bug in Eshell.\n\n"
- "Please describe exactly what actions "
- "triggered the bug and the precise\n"
- "symptoms of the bug:\n\n")
- ;; This is so the user has to type something in order to send
- ;; the report easily.
- (use-local-map (nconc (make-sparse-keymap) (current-local-map))))
+(define-obsolete-function-alias 'eshell-report-bug 'report-emacs-bug "23.1")
;;; Code:
@@ -543,5 +488,7 @@ Emacs."
(run-hooks 'eshell-load-hook)
+(provide 'eshell)
+
;;; arch-tag: 9d4d5214-0e4e-4e02-b349-39add640d63f
;;; eshell.el ends here