aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert J. Chassell2006-11-05 16:20:01 +0000
committerRobert J. Chassell2006-11-05 16:20:01 +0000
commitb006b42c592c5af5fd0b4d9f65fce67e45d10a37 (patch)
treee2ae115e0db8b25c7a968be6a55f9af22f586aa6
parentfaefde3642efc2fd80f57db3d2c5ff66c12fc652 (diff)
downloademacs-b006b42c592c5af5fd0b4d9f65fce67e45d10a37.tar.gz
emacs-b006b42c592c5af5fd0b4d9f65fce67e45d10a37.zip
More minor changes.
Center images for TeX output. (kill-new function): Remove indentation for sentence talking about momentarily skipping code. (cons & search-fwd Review): Document @code{funcall}. Document @code{re-search-forward} with existing @code{search-forward}. Reference chapter on regular expression searches. (Recursion with list): Specify a more recent version as being Emacs. (Recursion with list, Every, recursive-graph-body-print): Change `if ... progn' expression to `when'. (Recursive triangle function): For printing in small book, ensure section name is not last on bottom of preceding page. (Keep): Remove extraneous space in function definition example. (sentence-end): Specify `in English' for glyphs that end a sentence. Note that in GNU Emacs 22, the name refers to both a variable and a function. (fwd-sentence while loops): Write a function as one, not as a form (fwd-para let): Add `which' to sentence with `parstart' and `parsep'. (etags): Move sentences involving `find-tag' and sources. State location of Emacs `src' directory. (Design count-words-region): Better explain two backslashes in a row. (Find a File): Fix grammar; add a `to' and write `to visit'. Change `named' to `selected'. (lengths-list-file): Remove extraneous parenthesis from reference. (lengths-list-many-files): Explain `expand-file-name' better. (Files List): Rephrase sentence regarding Lisp sources directory
-rw-r--r--lispintro/ChangeLog29
-rw-r--r--lispintro/emacs-lisp-intro.texi152
2 files changed, 109 insertions, 72 deletions
diff --git a/lispintro/ChangeLog b/lispintro/ChangeLog
index 84d6cee96da..4784cfde92b 100644
--- a/lispintro/ChangeLog
+++ b/lispintro/ChangeLog
@@ -1,3 +1,32 @@
12006-11-05 Robert J. Chassell <bob@rattlesnake.com>
2
3 * emacs-lisp-intro.texi: More minor changes.
4 Center images for TeX output.
5 (kill-new function): Remove indentation for sentence talking about
6 momentarily skipping code.
7 (cons & search-fwd Review): Document @code{funcall}. Document
8 @code{re-search-forward} with existing @code{search-forward}.
9 Reference chapter on regular expression searches.
10 (Recursion with list): Specify a more recent version as being Emacs.
11 (Recursion with list, Every, recursive-graph-body-print): Change
12 `if ... progn' expression to `when'.
13 (Recursive triangle function): For printing in small book, ensure
14 section name is not last on bottom of preceding page.
15 (Keep): Remove extraneous space in function definition example.
16 (sentence-end): Specify `in English' for glyphs that end a sentence.
17 Note that in GNU Emacs 22, the name refers to both a variable and a
18 function.
19 (fwd-sentence while loops): Write a function as one, not as a form
20 (fwd-para let): Add `which' to sentence with `parstart' and `parsep'.
21 (etags): Move sentences involving `find-tag' and sources. State
22 location of Emacs `src' directory.
23 (Design count-words-region): Better explain two backslashes in a row.
24 (Find a File): Fix grammar; add a `to' and write `to visit'. Change
25 `named' to `selected'.
26 (lengths-list-file): Remove extraneous parenthesis from reference.
27 (lengths-list-many-files): Explain `expand-file-name' better.
28 (Files List): Rephrase sentence regarding Lisp sources directory
29
12006-11-04 Robert J. Chassell <bob@rattlesnake.com> 302006-11-04 Robert J. Chassell <bob@rattlesnake.com>
2 31
3 * emacs-lisp-intro.texi: Replace 22.0.100 with 22.1.100. 32 * emacs-lisp-intro.texi: Replace 22.0.100 with 22.1.100.
diff --git a/lispintro/emacs-lisp-intro.texi b/lispintro/emacs-lisp-intro.texi
index 3d954f6f942..621dd038693 100644
--- a/lispintro/emacs-lisp-intro.texi
+++ b/lispintro/emacs-lisp-intro.texi
@@ -8800,6 +8800,7 @@ Make STRING the latest kill in the kill ring.
8800@noindent 8800@noindent
8801Let's skip over the rest of the documentation for the moment. 8801Let's skip over the rest of the documentation for the moment.
8802 8802
8803@noindent
8803Also, let's skip over the initial @code{if} expression and those lines 8804Also, let's skip over the initial @code{if} expression and those lines
8804of code involving @code{menu-bar-update-yank-menu}. We will explain 8805of code involving @code{menu-bar-update-yank-menu}. We will explain
8805them below. 8806them below.
@@ -9486,6 +9487,10 @@ For example:
9486@end group 9487@end group
9487@end smallexample 9488@end smallexample
9488 9489
9490@item funcall
9491@code{funcall} evaluates its first argument as a function. It passes
9492its remaining arguments to its first argument.
9493
9489@item nthcdr 9494@item nthcdr
9490Return the result of taking @sc{cdr} `n' times on a list. 9495Return the result of taking @sc{cdr} `n' times on a list.
9491@iftex 9496@iftex
@@ -9550,15 +9555,19 @@ Record whatever narrowing is in effect in the current buffer, if any,
9550and restore that narrowing after evaluating the arguments. 9555and restore that narrowing after evaluating the arguments.
9551 9556
9552@item search-forward 9557@item search-forward
9553Search for a string, and if the string is found, move point. 9558Search for a string, and if the string is found, move point. With a
9559regular expression, use the similar @code{re-search-forward}.
9560(@xref{Regexp Search, , Regular Expression Searches}, for an
9561explanation of regular expression patterns and searches.)
9554 9562
9555@need 1250 9563@need 1250
9556@noindent 9564@noindent
9557Takes four arguments: 9565@code{search-forward} and @code{re-search-forward} take four
9566arguments:
9558 9567
9559@enumerate 9568@enumerate
9560@item 9569@item
9561The string to search for. 9570The string or regular expression to search for.
9562 9571
9563@item 9572@item
9564Optionally, the limit of the search. 9573Optionally, the limit of the search.
@@ -9665,7 +9674,7 @@ This sounds more complicated than it is and is easier seen in a diagram:
9665@ifset print-postscript-figures 9674@ifset print-postscript-figures
9666@sp 1 9675@sp 1
9667@tex 9676@tex
9668@image{cons-1} 9677@center @image{cons-1}
9669%%%% old method of including an image 9678%%%% old method of including an image
9670% \input /usr/local/lib/tex/inputs/psfig.tex 9679% \input /usr/local/lib/tex/inputs/psfig.tex
9671% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-1.eps}} 9680% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-1.eps}}
@@ -9728,7 +9737,7 @@ bouquet
9728@ifset print-postscript-figures 9737@ifset print-postscript-figures
9729@sp 1 9738@sp 1
9730@tex 9739@tex
9731@image{cons-2} 9740@center @image{cons-2}
9732%%%% old method of including an image 9741%%%% old method of including an image
9733% \input /usr/local/lib/tex/inputs/psfig.tex 9742% \input /usr/local/lib/tex/inputs/psfig.tex
9734% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-2.eps}} 9743% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-2.eps}}
@@ -9777,7 +9786,7 @@ bouquet
9777@ifset print-postscript-figures 9786@ifset print-postscript-figures
9778@sp 1 9787@sp 1
9779@tex 9788@tex
9780@image{cons-2a} 9789@center @image{cons-2a}
9781%%%% old method of including an image 9790%%%% old method of including an image
9782% \input /usr/local/lib/tex/inputs/psfig.tex 9791% \input /usr/local/lib/tex/inputs/psfig.tex
9783% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-2a.eps}} 9792% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-2a.eps}}
@@ -9844,7 +9853,7 @@ bouquet flowers
9844@ifset print-postscript-figures 9853@ifset print-postscript-figures
9845@sp 1 9854@sp 1
9846@tex 9855@tex
9847@image{cons-3} 9856@center @image{cons-3}
9848%%%% old method of including an image 9857%%%% old method of including an image
9849% \input /usr/local/lib/tex/inputs/psfig.tex 9858% \input /usr/local/lib/tex/inputs/psfig.tex
9850% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-3.eps}} 9859% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-3.eps}}
@@ -9916,7 +9925,7 @@ bouquet flowers
9916@ifset print-postscript-figures 9925@ifset print-postscript-figures
9917@sp 1 9926@sp 1
9918@tex 9927@tex
9919@image{cons-4} 9928@center @image{cons-4}
9920%%%% old method of including an image 9929%%%% old method of including an image
9921% \input /usr/local/lib/tex/inputs/psfig.tex 9930% \input /usr/local/lib/tex/inputs/psfig.tex
9922% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-4.eps}} 9931% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-4.eps}}
@@ -10033,7 +10042,7 @@ Here is a fanciful representation:
10033@ifset print-postscript-figures 10042@ifset print-postscript-figures
10034@sp 1 10043@sp 1
10035@tex 10044@tex
10036@image{drawers} 10045@center @image{drawers}
10037%%%% old method of including an image 10046%%%% old method of including an image
10038% \input /usr/local/lib/tex/inputs/psfig.tex 10047% \input /usr/local/lib/tex/inputs/psfig.tex
10039% \centerline{\psfig{figure=/usr/local/lib/emacs/man/drawers.eps}} 10048% \centerline{\psfig{figure=/usr/local/lib/emacs/man/drawers.eps}}
@@ -10214,7 +10223,7 @@ kill-ring kill-ring-yank-pointer
10214@ifset print-postscript-figures 10223@ifset print-postscript-figures
10215@sp 1 10224@sp 1
10216@tex 10225@tex
10217@image{cons-5} 10226@center @image{cons-5}
10218%%%% old method of including an image 10227%%%% old method of including an image
10219% \input /usr/local/lib/tex/inputs/psfig.tex 10228% \input /usr/local/lib/tex/inputs/psfig.tex
10220% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-5.eps}} 10229% \centerline{\psfig{figure=/usr/local/lib/emacs/man/cons-5.eps}}
@@ -11446,7 +11455,7 @@ Also, place your cursor immediately after the last closing parenthesis
11446of the @code{print-elements-recursively} function, before the comment. 11455of the @code{print-elements-recursively} function, before the comment.
11447Otherwise, the Lisp interpreter will try to evaluate the comment. 11456Otherwise, the Lisp interpreter will try to evaluate the comment.
11448 11457
11449If you are using a more recent version, you can evaluate this 11458If you are using a more recent version of Emacs, you can evaluate this
11450expression directly in Info. 11459expression directly in Info.
11451 11460
11452@findex print-elements-recursively 11461@findex print-elements-recursively
@@ -11457,11 +11466,10 @@ expression directly in Info.
11457(defun print-elements-recursively (list) 11466(defun print-elements-recursively (list)
11458 "Print each element of LIST on a line of its own. 11467 "Print each element of LIST on a line of its own.
11459Uses recursion." 11468Uses recursion."
11460 (if list ; @r{do-again-test} 11469 (when list ; @r{do-again-test}
11461 (progn
11462 (print (car list)) ; @r{body} 11470 (print (car list)) ; @r{body}
11463 (print-elements-recursively ; @r{recursive call} 11471 (print-elements-recursively ; @r{recursive call}
11464 (cdr list))))) ; @r{next-step-expression} 11472 (cdr list)))) ; @r{next-step-expression}
11465 11473
11466(print-elements-recursively animals) 11474(print-elements-recursively animals)
11467@end group 11475@end group
@@ -11483,7 +11491,7 @@ Put in yet another way, if the list is not empty, the first robot
11483assemblies a second robot and tells it what to do; the second robot is 11491assemblies a second robot and tells it what to do; the second robot is
11484a different individual from the first, but is the same model. 11492a different individual from the first, but is the same model.
11485 11493
11486When the second evaluation occurs, the @code{if} expression is 11494When the second evaluation occurs, the @code{when} expression is
11487evaluated and if true, prints the first element of the list it 11495evaluated and if true, prints the first element of the list it
11488receives as its argument (which is the second element of the original 11496receives as its argument (which is the second element of the original
11489list). Then the function `calls itself' with the @sc{cdr} of the list 11497list). Then the function `calls itself' with the @sc{cdr} of the list
@@ -11502,7 +11510,7 @@ works on a shorter list.
11502Eventually, the function invokes itself on an empty list. It creates 11510Eventually, the function invokes itself on an empty list. It creates
11503a new instance whose argument is @code{nil}. The conditional expression 11511a new instance whose argument is @code{nil}. The conditional expression
11504tests the value of @code{list}. Since the value of @code{list} is 11512tests the value of @code{list}. Since the value of @code{list} is
11505@code{nil}, the @code{if} expression tests false so the then-part is 11513@code{nil}, the @code{when} expression tests false so the then-part is
11506not evaluated. The function as a whole then returns @code{nil}. 11514not evaluated. The function as a whole then returns @code{nil}.
11507 11515
11508@need 1200 11516@need 1200
@@ -11522,6 +11530,7 @@ nil
11522@end group 11530@end group
11523@end smallexample 11531@end smallexample
11524 11532
11533@need 2000
11525@node Recursive triangle function, Recursion with cond, Recursion with list, Recursion 11534@node Recursive triangle function, Recursion with cond, Recursion with list, Recursion
11526@comment node-name, next, previous, up 11535@comment node-name, next, previous, up
11527@subsection Recursion in Place of a Counter 11536@subsection Recursion in Place of a Counter
@@ -11881,11 +11890,10 @@ The @code{print-elements-recursively} function looks like this:
11881(defun print-elements-recursively (list) 11890(defun print-elements-recursively (list)
11882 "Print each element of LIST on a line of its own. 11891 "Print each element of LIST on a line of its own.
11883Uses recursion." 11892Uses recursion."
11884 (if list ; @r{do-again-test} 11893 (when list ; @r{do-again-test}
11885 (progn
11886 (print (car list)) ; @r{body} 11894 (print (car list)) ; @r{body}
11887 (print-elements-recursively ; @r{recursive call} 11895 (print-elements-recursively ; @r{recursive call}
11888 (cdr list))))) ; @r{next-step-expression} 11896 (cdr list)))) ; @r{next-step-expression}
11889 11897
11890(print-elements-recursively animals) 11898(print-elements-recursively animals)
11891@end group 11899@end group
@@ -11896,9 +11904,9 @@ The pattern for @code{print-elements-recursively} is:
11896 11904
11897@itemize @bullet 11905@itemize @bullet
11898@item 11906@item
11899If the list be empty, do nothing. 11907When the list is empty, do nothing.
11900@item 11908@item
11901But if the list has at least one element, 11909But when the list has at least one element,
11902 @itemize @minus 11910 @itemize @minus
11903 @item 11911 @item
11904 act on the beginning of the list (the @sc{car} of the list), 11912 act on the beginning of the list (the @sc{car} of the list),
@@ -12017,7 +12025,7 @@ Here is an example that uses @code{cond}:
12017 12025
12018 ;; Third do-again-test: when to skip element; 12026 ;; Third do-again-test: when to skip element;
12019 ;; recursively call shorter list with next-step expression 12027 ;; recursively call shorter list with next-step expression
12020 (t (keep-three-letter-words (cdr word-list))))) 12028 (t (keep-three-letter-words (cdr word-list)))))
12021@end group 12029@end group
12022 12030
12023@group 12031@group
@@ -12379,9 +12387,9 @@ The symbol @code{sentence-end} is bound to the pattern that marks the
12379end of a sentence. What should this regular expression be? 12387end of a sentence. What should this regular expression be?
12380 12388
12381Clearly, a sentence may be ended by a period, a question mark, or an 12389Clearly, a sentence may be ended by a period, a question mark, or an
12382exclamation mark. Indeed, only clauses that end with one of those three 12390exclamation mark. Indeed, in English, only clauses that end with one
12383characters should be considered the end of a sentence. This means that 12391of those three characters should be considered the end of a sentence.
12384the pattern should include the character set: 12392This means that the pattern should include the character set:
12385 12393
12386@smallexample 12394@smallexample
12387[.?!] 12395[.?!]
@@ -12466,9 +12474,11 @@ sentence-end
12466 12474
12467@noindent 12475@noindent
12468(Well, not in GNU Emacs 22; that is because of an effort to make the 12476(Well, not in GNU Emacs 22; that is because of an effort to make the
12469process simpler. When its value is @code{nil}, then use the value 12477process simpler and to handle more glyphs and languages. When the
12470defined by the function @code{sentence-end}, and that returns a value 12478value of @code{sentence-end} is @code{nil}, then use the value defined
12471constructed from the variables @code{sentence-end-base}, 12479by the function @code{sentence-end}. (Here is a use of the difference
12480between a value and a function in Emacs Lisp.) The function returns a
12481value constructed from the variables @code{sentence-end-base},
12472@code{sentence-end-double-space}, @code{sentence-end-without-period}, 12482@code{sentence-end-double-space}, @code{sentence-end-without-period},
12473and @code{sentence-end-without-space}. The critical variable is 12483and @code{sentence-end-without-space}. The critical variable is
12474@code{sentence-end-base}; its global value is similar to the one 12484@code{sentence-end-base}; its global value is similar to the one
@@ -12817,7 +12827,7 @@ end of the paragraph, @code{(point)} returns the value of point, and then
12817@code{save-excursion} restores point to its original position. Thus, 12827@code{save-excursion} restores point to its original position. Thus,
12818the @code{let} binds @code{par-end} to the value returned by the 12828the @code{let} binds @code{par-end} to the value returned by the
12819@code{save-excursion} expression, which is the position of the end of 12829@code{save-excursion} expression, which is the position of the end of
12820the paragraph. (The @code{(end-of-paragraph-text)} function uses 12830the paragraph. (The @code{end-of-paragraph-text} function uses
12821@code{forward-paragraph}, which we will discuss shortly.) 12831@code{forward-paragraph}, which we will discuss shortly.)
12822 12832
12823@need 1200 12833@need 1200
@@ -13210,8 +13220,8 @@ Otherwise, the variable will be set to @code{nil}.
13210 13220
13211The next two local variables in the @code{let*} expression are 13221The next two local variables in the @code{let*} expression are
13212designed to remove instances of @samp{^} from @code{parstart} and 13222designed to remove instances of @samp{^} from @code{parstart} and
13213@code{parsep}, the local variables indicate the paragraph start and 13223@code{parsep}, the local variables which indicate the paragraph start
13214the paragraph separator. The next expression sets @code{parsep} 13224and the paragraph separator. The next expression sets @code{parsep}
13215again. That is to handle fill prefixes. 13225again. That is to handle fill prefixes.
13216 13226
13217This is the setting that requires the definition call @code{let*} 13227This is the setting that requires the definition call @code{let*}
@@ -13524,11 +13534,14 @@ a car with his eyes shut!)
13524@cindex @file{TAGS} file, create own 13534@cindex @file{TAGS} file, create own
13525 13535
13526Besides @kbd{C-h f} (@code{describe-function}), another way to see the 13536Besides @kbd{C-h f} (@code{describe-function}), another way to see the
13527source of a function is to type @kbd{M-.} (@code{find-tag}) and the 13537source of a function is to type @kbd{M-.} (@code{find-tag}) and the
13528name of the function when prompted for it. This is a good habit to 13538name of the function when prompted for it. This is a good habit to
13529get into. This will take you directly to the source. If the 13539get into. The @kbd{M-.} (@code{find-tag}) command takes you directly
13530@code{find-tag} function first asks you for the name of a @file{TAGS} 13540to the source for a function, variable, or node. The function depends
13531table, give it the name of a @file{TAGS} file such as 13541on tags tables to tell it where to go.
13542
13543If the @code{find-tag} function first asks you for the name of a
13544@file{TAGS} table, give it the name of a @file{TAGS} file such as
13532@file{/usr/local/src/emacs/src/TAGS}. (The exact path to your 13545@file{/usr/local/src/emacs/src/TAGS}. (The exact path to your
13533@file{TAGS} file depends on how your copy of Emacs was installed. I 13546@file{TAGS} file depends on how your copy of Emacs was installed. I
13534just told you the location that provides both my C and my Emacs Lisp 13547just told you the location that provides both my C and my Emacs Lisp
@@ -13537,10 +13550,6 @@ sources.)
13537You can also create your own @file{TAGS} file for directories that 13550You can also create your own @file{TAGS} file for directories that
13538lack one. 13551lack one.
13539 13552
13540The @kbd{M-.} (@code{find-tag}) command takes you directly to the
13541source for a function, variable, node, or other source. The function
13542depends on tags tables to tell it where to go.
13543
13544You often need to build and install tags tables yourself. They are 13553You often need to build and install tags tables yourself. They are
13545not built automatically. A tags table is called a @file{TAGS} file; 13554not built automatically. A tags table is called a @file{TAGS} file;
13546the name is in upper case letters. 13555the name is in upper case letters.
@@ -13562,7 +13571,7 @@ M-x compile RET etags *.el RET
13562@end smallexample 13571@end smallexample
13563 13572
13564@noindent 13573@noindent
13565to create a @file{TAGS} file. 13574to create a @file{TAGS} file for Emacs Lisp.
13566 13575
13567For example, if you have a large number of files in your 13576For example, if you have a large number of files in your
13568@file{~/emacs} directory, as I do---I have 137 @file{.el} files in it, 13577@file{~/emacs} directory, as I do---I have 137 @file{.el} files in it,
@@ -13570,11 +13579,10 @@ of which I load 12---you can create a @file{TAGS} file for the Emacs
13570Lisp files in that directory. 13579Lisp files in that directory.
13571 13580
13572@need 1250 13581@need 1250
13573The @code{etags} program takes all the 13582The @code{etags} program takes all the usual shell `wildcards'. For
13574usual shell `wildcards'. For example, if you have two directories for 13583example, if you have two directories for which you want a single
13575which you want a single @file{TAGS file}, type 13584@file{TAGS} file, type @w{@code{etags *.el ../elisp/*.el}}, where
13576@w{@code{etags *.el ../elisp/*.el}}, 13585@file{../elisp/} is the second directory:
13577where @file{../elisp/} is the second directory:
13578 13586
13579@smallexample 13587@smallexample
13580M-x compile RET etags *.el ../elisp/*.el RET 13588M-x compile RET etags *.el ../elisp/*.el RET
@@ -13592,10 +13600,11 @@ to see a list of the options accepted by @code{etags} as well as a
13592list of supported languages. 13600list of supported languages.
13593 13601
13594The @code{etags} program handles more than 20 languages, including 13602The @code{etags} program handles more than 20 languages, including
13595Emacs Lisp, Common Lisp, Scheme, C, C++, Ada, Fortran, Java, LaTeX, 13603Emacs Lisp, Common Lisp, Scheme, C, C++, Ada, Fortran, HTML, Java,
13596Pascal, Perl, Python, Texinfo, makefiles, and most assemblers. The 13604LaTeX, Pascal, Perl, Postscript, Python, TeX, Texinfo, makefiles, and
13597program has no switches for specifying the language; it recognizes the 13605most assemblers. The program has no switches for specifying the
13598language in an input file according to its file name and contents. 13606language; it recognizes the language in an input file according to its
13607file name and contents.
13599 13608
13600@file{etags} is very helpful when you are writing code yourself and 13609@file{etags} is very helpful when you are writing code yourself and
13601want to refer back to functions you have already written. Just run 13610want to refer back to functions you have already written. Just run
@@ -13625,8 +13634,8 @@ visit-tags-table}.
13625The GNU Emacs sources come with a @file{Makefile} that contains a 13634The GNU Emacs sources come with a @file{Makefile} that contains a
13626sophisticated @code{etags} command that creates, collects, and merges 13635sophisticated @code{etags} command that creates, collects, and merges
13627tags tables from all over the Emacs sources and puts the information 13636tags tables from all over the Emacs sources and puts the information
13628into one @file{TAGS} file in the @file{src/} directory below the top 13637into one @file{TAGS} file in the @file{src/} directory. (The
13629level of your Emacs source directory. 13638@file{src/} directory is below the top level of your Emacs directory.)
13630 13639
13631@need 1250 13640@need 1250
13632To build this @file{TAGS} file, go to the top level of your Emacs 13641To build this @file{TAGS} file, go to the top level of your Emacs
@@ -13921,9 +13930,9 @@ single backslash has special meaning to the Emacs Lisp interpreter.
13921It indicates that the following character is interpreted differently 13930It indicates that the following character is interpreted differently
13922than usual. For example, the two characters, @samp{\n}, stand for 13931than usual. For example, the two characters, @samp{\n}, stand for
13923@samp{newline}, rather than for a backslash followed by @samp{n}. Two 13932@samp{newline}, rather than for a backslash followed by @samp{n}. Two
13924backslashes in a row stand for an ordinary, `unspecial' backslash, 13933backslashes in a row stand for an ordinary, `unspecial' backslash, so
13925which in this case is followed by a letter, the combination of which 13934Emacs Lisp interpreter ends of seeing a single backslash followed by a
13926is important to @code{re-search-forward}.) 13935letter. So it discovers the letter is special.)
13927 13936
13928We need a counter to count how many words there are; this variable 13937We need a counter to count how many words there are; this variable
13929must first be set to 0 and then incremented each time Emacs goes 13938must first be set to 0 and then incremented each time Emacs goes
@@ -15115,7 +15124,7 @@ creating one if none already exists."
15115 15124
15116@noindent 15125@noindent
15117(The most recent version of the @code{find-file} function definition 15126(The most recent version of the @code{find-file} function definition
15118permits you to specify optional wildcards visit multiple files; that 15127permits you to specify optional wildcards to visit multiple files; that
15119makes the definition more complex and we will not discuss it here, 15128makes the definition more complex and we will not discuss it here,
15120since it is not relevant. You can see its source using either 15129since it is not relevant. You can see its source using either
15121@kbd{M-.} (@code{find-tag}) or @kbd{C-h f} (@code{describe-function}).) 15130@kbd{M-.} (@code{find-tag}) or @kbd{C-h f} (@code{describe-function}).)
@@ -15158,7 +15167,7 @@ suppress warning messages. These optional arguments are irrelevant.)
15158 15167
15159However, the @code{find-file-noselect} function does not select the 15168However, the @code{find-file-noselect} function does not select the
15160buffer in which it puts the file. Emacs does not switch its attention 15169buffer in which it puts the file. Emacs does not switch its attention
15161(or yours if you are using @code{find-file-noselect}) to the named 15170(or yours if you are using @code{find-file-noselect}) to the selected
15162buffer. That is what @code{switch-to-buffer} does: it switches the 15171buffer. That is what @code{switch-to-buffer} does: it switches the
15163buffer to which Emacs attention is directed; and it switches the 15172buffer to which Emacs attention is directed; and it switches the
15164buffer displayed in the window to the new buffer. We have discussed 15173buffer displayed in the window to the new buffer. We have discussed
@@ -15235,10 +15244,10 @@ and symbols in a function definition should change the buffer.
15235Besides, the buffer is not going to be saved, even if it were changed. 15244Besides, the buffer is not going to be saved, even if it were changed.
15236This line is entirely the consequence of great, perhaps excessive, 15245This line is entirely the consequence of great, perhaps excessive,
15237caution. The reason for the caution is that this function and those 15246caution. The reason for the caution is that this function and those
15238it calls work on the sources for Emacs and it is very inconvenient if 15247it calls work on the sources for Emacs and it is inconvenient if they
15239they are inadvertently modified. It goes without saying that I did 15248are inadvertently modified. It goes without saying that I did not
15240not realize a need for this line until an experiment went awry and 15249realize a need for this line until an experiment went awry and started
15241started to modify my Emacs source files @dots{} 15250to modify my Emacs source files @dots{}
15242 15251
15243Next comes a call to widen the buffer if it is narrowed. This 15252Next comes a call to widen the buffer if it is narrowed. This
15244function is usually not needed---Emacs creates a fresh buffer if none 15253function is usually not needed---Emacs creates a fresh buffer if none
@@ -15290,7 +15299,7 @@ version, you may have to evaluate the following:
15290@end smallexample 15299@end smallexample
15291 15300
15292@noindent 15301@noindent
15293(@xref{defcustom, , Specifying Variables using @code{defcustom}}.) 15302(@xref{defcustom, , Specifying Variables using @code{defcustom}}.
15294Then evaluate the @code{lengths-list-file} expression.) 15303Then evaluate the @code{lengths-list-file} expression.)
15295 15304
15296@need 1200 15305@need 1200
@@ -15402,8 +15411,8 @@ These considerations lead us directly to the function itself:
15402@end smallexample 15411@end smallexample
15403 15412
15404@code{expand-file-name} is a built-in function that converts a file 15413@code{expand-file-name} is a built-in function that converts a file
15405name to the absolute, long, path name form of the directory in which 15414name to the absolute, long, path name form. The function employs the
15406the function is called. 15415name of the directory in which the function is called.
15407 15416
15408@c !!! 22.1.100 lisp sources location here 15417@c !!! 22.1.100 lisp sources location here
15409@need 1500 15418@need 1500
@@ -15895,8 +15904,8 @@ Thus, on my system,
15895@end smallexample 15904@end smallexample
15896 15905
15897@noindent 15906@noindent
15898tells me that my Lisp sources directory contains 1031 @samp{.el} 15907tells me that in and below my Lisp sources directory are 1031
15899files. 15908@samp{.el} files.
15900 15909
15901@code{files-in-below-directory} returns a list in reverse alphabetical 15910@code{files-in-below-directory} returns a list in reverse alphabetical
15902order. An expression to sort the list in alphabetical order looks 15911order. An expression to sort the list in alphabetical order looks
@@ -16821,7 +16830,7 @@ The numbers-list consists of the Y-axis values."
16821 16830
16822The recursive function is a little more difficult. It has four parts: 16831The recursive function is a little more difficult. It has four parts:
16823the `do-again-test', the printing code, the recursive call, and the 16832the `do-again-test', the printing code, the recursive call, and the
16824`next-step-expression'. The `do-again-test' is an @code{if} 16833`next-step-expression'. The `do-again-test' is a @code{when}
16825expression that determines whether the @code{numbers-list} contains 16834expression that determines whether the @code{numbers-list} contains
16826any remaining elements; if it does, the function prints one column of 16835any remaining elements; if it does, the function prints one column of
16827the graph using the printing code and calls itself again. The 16836the graph using the printing code and calls itself again. The
@@ -16838,8 +16847,7 @@ Used within recursive-graph-body-print function."
16838@end group 16847@end group
16839 16848
16840@group 16849@group
16841 (if numbers-list 16850 (when numbers-list
16842 (progn
16843 (setq from-position (point)) 16851 (setq from-position (point))
16844 (insert-rectangle 16852 (insert-rectangle
16845 (column-of-graph height (car numbers-list))) 16853 (column-of-graph height (car numbers-list)))
@@ -16849,7 +16857,7 @@ Used within recursive-graph-body-print function."
16849 (forward-char symbol-width) 16857 (forward-char symbol-width)
16850 (sit-for 0) ; @r{Draw graph column by column.} 16858 (sit-for 0) ; @r{Draw graph column by column.}
16851 (recursive-graph-body-print-internal 16859 (recursive-graph-body-print-internal
16852 (cdr numbers-list) height symbol-width)))) 16860 (cdr numbers-list) height symbol-width)))
16853@end group 16861@end group
16854@end smallexample 16862@end smallexample
16855 16863
@@ -21039,7 +21047,7 @@ If we want to multiply 3 by 7, we can write:
21039@ifset print-postscript-figures 21047@ifset print-postscript-figures
21040@sp 1 21048@sp 1
21041@tex 21049@tex
21042@image{lambda-1} 21050@center @image{lambda-1}
21043%%%% old method of including an image 21051%%%% old method of including an image
21044% \input /usr/local/lib/tex/inputs/psfig.tex 21052% \input /usr/local/lib/tex/inputs/psfig.tex
21045% \centerline{\psfig{figure=/usr/local/lib/emacs/man/lambda-1.eps}} 21053% \centerline{\psfig{figure=/usr/local/lib/emacs/man/lambda-1.eps}}
@@ -21081,7 +21089,7 @@ Similarly, we can write:
21081@ifset print-postscript-figures 21089@ifset print-postscript-figures
21082@sp 1 21090@sp 1
21083@tex 21091@tex
21084@image{lambda-2} 21092@center @image{lambda-2}
21085%%%% old method of including an image 21093%%%% old method of including an image
21086% \input /usr/local/lib/tex/inputs/psfig.tex 21094% \input /usr/local/lib/tex/inputs/psfig.tex
21087% \centerline{\psfig{figure=/usr/local/lib/emacs/man/lambda-2.eps}} 21095% \centerline{\psfig{figure=/usr/local/lib/emacs/man/lambda-2.eps}}
@@ -21120,7 +21128,7 @@ If we want to divide 100 by 50, we can write:
21120@ifset print-postscript-figures 21128@ifset print-postscript-figures
21121@sp 1 21129@sp 1
21122@tex 21130@tex
21123@image{lambda-3} 21131@center @image{lambda-3}
21124%%%% old method of including an image 21132%%%% old method of including an image
21125% \input /usr/local/lib/tex/inputs/psfig.tex 21133% \input /usr/local/lib/tex/inputs/psfig.tex
21126% \centerline{\psfig{figure=/usr/local/lib/emacs/man/lambda-3.eps}} 21134% \centerline{\psfig{figure=/usr/local/lib/emacs/man/lambda-3.eps}}