aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Wiegley2001-01-26 06:19:25 +0000
committerJohn Wiegley2001-01-26 06:19:25 +0000
commit219227ead0447814c838935b8d5d06fd2095546d (patch)
tree9501e9229c038e8a88bc0eefaa96ea8c8dc2f8b9
parent8844fa83d302c082faf9976fa3253709afda0d2c (diff)
downloademacs-219227ead0447814c838935b8d5d06fd2095546d.tar.gz
emacs-219227ead0447814c838935b8d5d06fd2095546d.zip
See ChangeLog
-rw-r--r--lisp/ChangeLog12
-rw-r--r--lisp/eshell/em-unix.el8
-rw-r--r--lisp/eshell/esh-util.el9
-rw-r--r--lisp/pcomplete.el6
-rw-r--r--man/ChangeLog5
-rw-r--r--man/eshell.texi228
6 files changed, 210 insertions, 58 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index ce1a0246d7c..86bcf14b8e9 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,15 @@
12001-01-25 John Wiegley <johnw@gnu.org>
2
3 * eshell/esh-util.el (eshell-ange-ls-uids): Changed use of `alist'
4 to `repeat' in the :type field.
5
6 * pcomplete.el (pcomplete-file-ignore): Changed a :type field to
7 allow a choice of regexp or nil.
8 (pcomplete-dir-ignore): same.
9
10 * eshell/em-unix.el (eshell/occur): Fixed bug causing `occur' (as
11 a command) to always fail.
12
12001-01-25 Gerd Moellmann <gerd@gnu.org> 132001-01-25 Gerd Moellmann <gerd@gnu.org>
2 14
3 * iswitchb.el (iswitchb-make-buflist): When nconc'ing lists, don't 15 * iswitchb.el (iswitchb-make-buflist): When nconc'ing lists, don't
diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el
index c9b3d418b83..726fd0eeaf6 100644
--- a/lisp/eshell/em-unix.el
+++ b/lisp/eshell/em-unix.el
@@ -1,6 +1,6 @@
1;;; em-unix --- UNIX command aliases 1;;; em-unix --- UNIX command aliases
2 2
3;; Copyright (C) 1999, 2000 Free Software Foundation 3;; Copyright (C) 1999, 2000, 2001 Free Software Foundation
4 4
5;; Author: John Wiegley <johnw@gnu.org> 5;; Author: John Wiegley <johnw@gnu.org>
6 6
@@ -974,9 +974,9 @@ Show wall-clock time elapsed during execution of COMMAND.")
974(defun eshell/occur (&rest args) 974(defun eshell/occur (&rest args)
975 "Alias \"occur\" to call Emacs `occur' function." 975 "Alias \"occur\" to call Emacs `occur' function."
976 (let ((inhibit-read-only t)) 976 (let ((inhibit-read-only t))
977 (if args 977 (if (> (length args) 2)
978 (error "usage: occur: (REGEXP)") 978 (error "usage: occur: (REGEXP &optional NLINES)")
979 (occur (car args))))) 979 (apply 'occur args))))
980 980
981;;; Code: 981;;; Code:
982 982
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index 354905edc24..440cf01d607 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -98,10 +98,11 @@ function `string-to-number'."
98 98
99(defcustom eshell-ange-ls-uids nil 99(defcustom eshell-ange-ls-uids nil
100 "*List of user/host/id strings, used to determine remote ownership." 100 "*List of user/host/id strings, used to determine remote ownership."
101 :type '(alist :key-type (string :tag "Hostname") 101 :type '(repeat (cons :tag "Host for User/UID map"
102 :value-type (alist :tag "User/UID List" 102 (string :tag "Hostname")
103 :key-type (string :tag "Username") 103 (repeat (cons :tag "User/UID List"
104 :value-type (repeat :tag "UIDs" string))) 104 (string :tag "Username")
105 (repeat :tag "UIDs" string)))))
105 :group 'eshell-util) 106 :group 'eshell-util)
106 107
107;;; Internal Variables: 108;;; Internal Variables:
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el
index 47c52061c27..0ef1cbd05c7 100644
--- a/lisp/pcomplete.el
+++ b/lisp/pcomplete.el
@@ -1,6 +1,6 @@
1;;; pcomplete --- programmable completion 1;;; pcomplete --- programmable completion
2 2
3;; Copyright (C) 1999, 2000 Free Sofware Foundation 3;; Copyright (C) 1999, 2000, 2001 Free Sofware Foundation
4 4
5;; Author: John Wiegley <johnw@gnu.org> 5;; Author: John Wiegley <johnw@gnu.org>
6;; Keywords: processes abbrev 6;; Keywords: processes abbrev
@@ -131,12 +131,12 @@
131 131
132(defcustom pcomplete-file-ignore nil 132(defcustom pcomplete-file-ignore nil
133 "*A regexp of filenames to be disregarded during file completion." 133 "*A regexp of filenames to be disregarded during file completion."
134 :type 'regexp 134 :type '(choice regexp (const :tag "None" nil))
135 :group 'pcomplete) 135 :group 'pcomplete)
136 136
137(defcustom pcomplete-dir-ignore nil 137(defcustom pcomplete-dir-ignore nil
138 "*A regexp of names to be disregarded during directory completion." 138 "*A regexp of names to be disregarded during directory completion."
139 :type 'regexp 139 :type '(choice regexp (const :tag "None" nil))
140 :group 'pcomplete) 140 :group 'pcomplete)
141 141
142(defcustom pcomplete-ignore-case (memq system-type '(ms-dos windows-nt)) 142(defcustom pcomplete-ignore-case (memq system-type '(ms-dos windows-nt))
diff --git a/man/ChangeLog b/man/ChangeLog
index 2a71ebc8966..17bde0d64ee 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,8 @@
12001-01-25 John Wiegley <johnw@gnu.org>
2
3 * eshell.texi: Editing and completion of first chapter (Overview),
4 and layout of the remaining six.
5
12001-01-19 Michael Kifer <kifer@cs.sunysb.edu> 62001-01-19 Michael Kifer <kifer@cs.sunysb.edu>
2 7
3 * ediff.texi: add credits. 8 * ediff.texi: add credits.
diff --git a/man/eshell.texi b/man/eshell.texi
index 6fa73311f73..011ffa772da 100644
--- a/man/eshell.texi
+++ b/man/eshell.texi
@@ -1,6 +1,6 @@
1\input texinfo @c -*-texinfo-*- 1\input texinfo @c -*-texinfo-*-
2 2
3@c "@(#)$Name: $:$Id: eshell.texi,v 1.6 2000/10/29 16:52:33 eliz Exp $" 3@c "@(#)$Name: $:$Id: eshell.texi,v 1.7 2000/12/06 20:02:30 fx Exp $"
4 4
5@c Documentation for Eshell: The Emacs Shell. 5@c Documentation for Eshell: The Emacs Shell.
6@c Copyright (C) 1999, 2000 Free Software Foundation, Inc. 6@c Copyright (C) 1999, 2000 Free Software Foundation, Inc.
@@ -123,13 +123,19 @@ handling the sort of tasks accomplished by those tools.
123@end ifinfo 123@end ifinfo
124 124
125@menu 125@menu
126* What is Eshell?:: A brief introduction to the Emacs Shell. 126* What is Eshell?:: A brief introduction to the Emacs Shell.
127* Installation:: For users of Emacs 20 and XEmacs. 127* Installation:: For users of Emacs 20 and XEmacs.
128* Command basics:: The basics of command usage. 128* Command basics:: The basics of command usage.
129* Bugs and ideas:: Known problems, and future ideas. 129* Commands::
130* Concept Index:: 130* Arguments::
131* Function and Variable Index:: 131* Input/Output::
132* Key Index:: 132* Process control::
133* Extension modules::
134* Extras and Goodies::
135* Bugs and ideas:: Known problems, and future ideas.
136* Concept Index::
137* Function and Variable Index::
138* Key Index::
133@end menu 139@end menu
134 140
135@node What is Eshell?, Installation, Top, Top 141@node What is Eshell?, Installation, Top, Top
@@ -138,7 +144,7 @@ handling the sort of tasks accomplished by those tools.
138@cindex Eshell, what it is 144@cindex Eshell, what it is
139 145
140Eshell is a @dfn{command shell} written in Emacs Lisp. Everything it 146Eshell is a @dfn{command shell} written in Emacs Lisp. Everything it
141does it uses Emacs' facilities to do. This means that Eshell is as 147does, it uses Emacs' facilities to do. This means that Eshell is as
142portable as Emacs itself. It also means that cooperation with Lisp code 148portable as Emacs itself. It also means that cooperation with Lisp code
143is natural and seamless. 149is natural and seamless.
144 150
@@ -356,7 +362,7 @@ using the command @kbd{M-x eshell-report-bug}.
356 362
357@item 363@item
358Edit the file @file{Makefile} in the directory containing the Eshell 364Edit the file @file{Makefile} in the directory containing the Eshell
359sources to reflect the location of certain Emacs dircetories at your 365sources to reflect the location of certain Emacs directories at your
360site. The only things you really have to change are the definitions of 366site. The only things you really have to change are the definitions of
361@code{lispdir} and @code{infodir}. The elisp files will be copied to 367@code{lispdir} and @code{infodir}. The elisp files will be copied to
362@code{lispdir}, and the info file to @code{infodir}. 368@code{lispdir}, and the info file to @code{infodir}.
@@ -421,14 +427,14 @@ you can use. For other printers, use a suitable DVI driver,
421e.g., @code{dvilj4} for LaserJet-compatible printers. 427e.g., @code{dvilj4} for LaserJet-compatible printers.
422@end enumerate 428@end enumerate
423 429
424@node Command basics, Bugs and ideas, Installation, Top 430@node Command basics, Commands, Installation, Top
425@chapter Command basics 431@chapter Basic overview
426 432
427A command shell is a mechanism for entering verbally-formed commands. 433A command shell is a means of entering verbally-formed commands. This
428This is really all that it does, and every feature described in this 434is really all that it does, and every feature described in this manual
429manual is a means to that end. Therefore, it's important to get a firm 435is a means to that end. Therefore, it's important to take firm hold on
430grasp on exactly what a command is, and how it fits into the overall 436exactly what a command is, and how it fits in the overall picture of
431picture of things. 437things.
432 438
433@menu 439@menu
434* Commands verbs:: Commands always begin with a verb. 440* Commands verbs:: Commands always begin with a verb.
@@ -439,11 +445,10 @@ picture of things.
439@section Commands verbs 445@section Commands verbs
440 446
441Commands are expressed using @dfn{script}, a special shorthand language 447Commands are expressed using @dfn{script}, a special shorthand language
442that computers can understand without trouble. 448computers can understand with no trouble. Script is an extremely simple
443 449language; oddly enough, this is what makes it look so complicated!
444Script is an extremely simplified language. Oddly enough, this actually 450Whereas normal languages use a variety of embellishments, the form of a
445makes it look more complicated than it is. Whereas normal languages use 451script command is always:
446a variety of embellishments, the form of a script command is always:
447 452
448@example 453@example
449 VERB [ARGUMENTS] 454 VERB [ARGUMENTS]
@@ -455,36 +460,165 @@ author's computer, it reaches almost 1400 in number. But of course,
455only a handful of these are really necessary. 460only a handful of these are really necessary.
456 461
457Sometimes, the verb is all that's written. A verb is always a single 462Sometimes, the verb is all that's written. A verb is always a single
458word, usually related to the task it will perform. @command{reboot} is 463word, usually related to the task it performs. @command{reboot} is a
459a good example. Entering that will cause your computer to reboot, 464good example. Entering that on Linux will cause your computer to
460assuming you have sufficient privileges. 465reboot---assuming you have sufficient privileges.
461 466
462Other verbs require more information. These are usually very capable of 467Other verbs require more information. These are usually very capable
463verbs, and must be told more specifically what to do. This extra 468verbs, and must be told specifically what to do. The extra information
464information is given in the form of arguments. Arguments are also 469is given in the form of @dfn{arguments}. For example, the
465single words, that appear after the verb. For example, @command{echo} 470@command{echo} verb prints back whatever arguments you type. It
466is a command verb that prints back whatever you say. @command{echo} 471requires these arguments to know what to echo. A proper use of
467requires arguments, so that it knows what to echo. A proper use of
468@command{echo} looks like this: 472@command{echo} looks like this:
469 473
470@example 474@example
471echo This is an example of using echo! 475 echo This is an example of using echo!
472@end example 476@end example
473 477
474This piece of script expresses a command that causes the computer to 478This script command causes the computer to echo back: ``This is an
475print back: ``This is an example of using echo!''. 479example of using echo!''.
476 480
477Although command verbs always take the form of simple words, such as 481Although command verbs are always simple words, like @command{reboot} or
478@command{reboot} and @command{echo}, arguments have a wide vaierty of 482@command{echo}, arguments may have a wide variety of forms. There are
479forms. There are textual arguments, numerical arguments---even Lisp 483textual arguments, numerical arguments---even Lisp arguments.
480arguments. Distinguishing between these different types of arguments 484Distinguishing these different types of arguments requires special
481requires special typing, since the computer needs to know exactly what 485typing, for the computer to know exactly what you mean.
482you mean.
483 486
484@node Command arguments, , Commands verbs, Command basics 487@node Command arguments, , Commands verbs, Command basics
485@section Command arguments 488@section Command arguments
486 489
487@node Bugs and ideas, Concept Index, Command basics, Top 490Eshell recognizes several different kinds of command arguments:
491
492@enumerate
493@item Strings (also called textual arguments)
494@item Numbers (floating point or integer)
495@item Lisp lists
496@item Lisp symbols
497@item Emacs buffers
498@item Emacs process handles
499@end enumerate
500
501Most users need worry only about the first two. The third, Lisp lists,
502occur very frequently, but almost always behind the scenes.
503
504Strings are the most common type of argument, and consist of nearly any
505character. Special characters---those used by Eshell
506specifically---must be preceded by a backslash (\). When in doubt, it
507safe to add backslashes anywhere and everywhere.
508
509Here is a more complicated @command{echo} example:
510
511@example
512 echo A\ Multi-word\ Argument\ With\ A\ \$\ dollar
513@end example
514
515Beyond this, things get a bit more complicated. While not beyond the
516reach of someone wishing to learn, it is definitely beyond the scope of
517this manual to present it all in a simplistic manner. Get comfortable
518with Eshell as a basic command invocation tool, and learn more about the
519commands on your system; then come back when it all sits more familiarly
520on your mind. Have fun!
521
522@node Commands, Arguments, Command basics, Top
523@chapter Commands
524
525@menu
526* Invocation::
527* Completion::
528* Aliases::
529* History::
530* Scripts::
531@end menu
532
533@node Invocation, Completion, Commands, Commands
534@section Invocation
535
536@node Completion, Aliases, Invocation, Commands
537@section Completion
538
539@node Aliases, History, Completion, Commands
540@section Aliases
541
542@node History, Scripts, Aliases, Commands
543@section History
544
545@node Scripts, , History, Commands
546@section Scripts
547
548
549@node Arguments, Input/Output, Commands, Top
550@chapter Arguments
551
552@menu
553* The Parser::
554* Variables::
555* Substitution::
556* Globbing::
557* Predicates::
558@end menu
559
560@node The Parser, Variables, Arguments, Arguments
561@section The Parser
562
563@node Variables, Substitution, The Parser, Arguments
564@section Variables
565
566@node Substitution, Globbing, Variables, Arguments
567@section Substitution
568
569@node Globbing, Predicates, Substitution, Arguments
570@section Globbing
571
572@node Predicates, , Globbing, Arguments
573@section Predicates
574
575
576@node Input/Output, Process control, Arguments, Top
577@chapter Input/Output
578
579@node Process control, Extension modules, Input/Output, Top
580@chapter Process control
581
582
583@node Extension modules, Extras and Goodies, Process control, Top
584@chapter Extension modules
585
586@menu
587* Writing a module::
588* Module testing::
589* Directory handling::
590* Key rebinding::
591* Smart scrolling::
592* Terminal emulation::
593* Built-in UNIX commands::
594@end menu
595
596@node Writing a module, Module testing, Extension modules, Extension modules
597@section Writing a module
598
599@node Module testing, Directory handling, Writing a module, Extension modules
600@section Module testing
601
602@node Directory handling, Key rebinding, Module testing, Extension modules
603@section Directory handling
604
605@node Key rebinding, Smart scrolling, Directory handling, Extension modules
606@section Key rebinding
607
608@node Smart scrolling, Terminal emulation, Key rebinding, Extension modules
609@section Smart scrolling
610
611@node Terminal emulation, Built-in UNIX commands, Smart scrolling, Extension modules
612@section Terminal emulation
613
614@node Built-in UNIX commands, , Terminal emulation, Extension modules
615@section Built-in UNIX commands
616
617
618@node Extras and Goodies, Bugs and ideas, Extension modules, Top
619@chapter Extras and Goodies
620
621@node Bugs and ideas, Concept Index, Extras and Goodies, Top
488@chapter Bugs and ideas 622@chapter Bugs and ideas
489@cindex reporting bugs and ideas 623@cindex reporting bugs and ideas
490@cindex bugs, how to report them 624@cindex bugs, how to report them
@@ -511,8 +645,8 @@ find this package useful!
511@cindex known bugs 645@cindex known bugs
512@cindex bugs, known 646@cindex bugs, known
513 647
514Below is a partial list of currently known problems with Eshell version 648Below is complete list of known problems with Eshell version 2.4.1,
5152.4, which is the version distributed with Emacs 21.1. 649which is the version included with Emacs 21.1.
516 650
517@table @asis 651@table @asis
518@item Differentiate between aliases and functions 652@item Differentiate between aliases and functions
@@ -587,7 +721,7 @@ called with the input strings as arguments. This will require changing
587 721
588See the above entry. 722See the above entry.
589 723
590@item Problem running @command{less} without argument on Windows 724@item Problem running @command{less} without arguments on Windows
591 725
592The result in the Eshell buffer is: 726The result in the Eshell buffer is:
593 727
@@ -782,7 +916,7 @@ way@dots{}). If input redirection is added, also update the
782With the handling of @emph{word} specified by an 916With the handling of @emph{word} specified by an
783@code{eshell-special-alist}. 917@code{eshell-special-alist}.
784 918
785@item In @code{eshell-eval-using-options}, allow a @code{:complete} tag 919@item In @code{eshell-veal-using-options}, allow a @code{:complete} tag
786 920
787It would be used to provide completion rules for that command. Then the 921It would be used to provide completion rules for that command. Then the
788macro will automagically define the completion function. 922macro will automagically define the completion function.
@@ -894,7 +1028,7 @@ auto-revert mode in that buffer at frequent intervals---and a
894 1028
895@item Make @command{dgrep} load @code{dired}, mark everything, then invoke @code{dired-do-search} 1029@item Make @command{dgrep} load @code{dired}, mark everything, then invoke @code{dired-do-search}
896 1030
897@item Write emsh.c 1031@item Write mesh.c
898 1032
899This would run Emacs with the appropriate arguments to invoke Eshell 1033This would run Emacs with the appropriate arguments to invoke Eshell
900only. That way, it could be listed as a login shell. 1034only. That way, it could be listed as a login shell.