Merge from emacs-24; up to 2012-04-21T14:12:27Z!sdl.web@gmail.com
This commit is contained in:
commit
666b903b91
28 changed files with 429 additions and 264 deletions
|
@ -31,6 +31,15 @@ its own at the start of a line. It looks better if you reword/respace
|
|||
things to avoid these. (AFAIK, there is no way to find these except
|
||||
paging through the whole manual.) This should be the very last thing
|
||||
you do, since any change can alter the layout.
|
||||
(Actually, there is probably little point in trying to do this.
|
||||
It's only really relevant if printed versions of the manuals are going
|
||||
to be published. End-users are not likely to print out all 1000+
|
||||
pages of the manuals, and even if they do, the resulting page breaks
|
||||
depend on what paper and font size they use. This also means that if
|
||||
you _are_ going to do this, it should be done with the paper and font
|
||||
size that the GNU Press are going to use when they print the manuals.
|
||||
I think this is different to what you get if you just use eg `make
|
||||
emacs.pdf' (e.g., enable "smallbook").
|
||||
|
||||
** Check the keybindings in the refcards are correct, and add any new ones.
|
||||
Regenerate the pdf versions in etc/refcards/.
|
||||
|
|
|
@ -1,3 +1,49 @@
|
|||
2012-05-09 Chong Yidong <cyd@gnu.org>
|
||||
|
||||
* frames.texi (Mouse References, Mouse Commands): Fix index
|
||||
entries (Bug#11362).
|
||||
|
||||
2012-05-09 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* custom.texi (Customization Groups, Custom Themes, Examining):
|
||||
Improve page breaks.
|
||||
|
||||
* rmail.texi (Rmail Display): Use example rather than smallexample.
|
||||
|
||||
* calendar.texi: Convert inforefs to refs.
|
||||
|
||||
* dired.texi (Dired Enter): Improve page break.
|
||||
|
||||
* abbrevs.texi (Abbrev Concepts): Copyedits.
|
||||
|
||||
* maintaining.texi (Registering, Tag Syntax):
|
||||
Tweak line and page breaks.
|
||||
|
||||
* programs.texi (Programs, Electric C): Copyedits.
|
||||
(Program Modes): Add xref to Fortran.
|
||||
(Left Margin Paren): Remove what was (oddly enough) the only use
|
||||
of defvar in the entire Emacs manual.
|
||||
(Hungry Delete): Remove footnote about ancient Emacs version.
|
||||
(Other C Commands): Use example rather than smallexample.
|
||||
|
||||
* text.texi (Pages, Filling, Foldout, Org Mode, HTML Mode)
|
||||
(Nroff Mode, Enriched Indentation, Table Rows and Columns):
|
||||
Tweak line and page breaks.
|
||||
|
||||
* modes.texi (Major Modes, Minor Modes): Reword to improve page-breaks.
|
||||
(Major Modes): Use example rather than smallexample.
|
||||
|
||||
* mule.texi (Output Coding): Reword to improve page-breaks.
|
||||
|
||||
* frames.texi (Fonts): Tweak line and page breaks.
|
||||
Use example rather than smallexample. Change cross-reference.
|
||||
(Text-Only Mouse): Fix xref.
|
||||
|
||||
* buffers.texi (Buffers, Kill Buffer, Several Buffers)
|
||||
(Indirect Buffers): Tweak line- and page-breaks.
|
||||
|
||||
* fixit.texi (Fixit, Undo): Reword to improve page-breaks.
|
||||
|
||||
2012-05-05 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* custom.texi (Customization Groups, Custom Themes, Examining):
|
||||
|
|
|
@ -67,6 +67,7 @@ for doing so on MS-DOS).
|
|||
@node Mouse Commands
|
||||
@section Mouse Commands for Editing
|
||||
@cindex mouse buttons (what they do)
|
||||
@cindex mouse, selecting text using
|
||||
|
||||
@kindex Mouse-1
|
||||
@kindex Mouse-2
|
||||
|
@ -106,6 +107,7 @@ setting the variable @code{x-mouse-click-focus-ignore-position} to
|
|||
selects the frame, without doing anything else; clicking again selects
|
||||
the window and sets the cursor position.
|
||||
|
||||
@cindex mouse, dragging
|
||||
@findex mouse-set-region
|
||||
Holding down @kbd{Mouse-1} and ``dragging'' the mouse over a stretch
|
||||
of text activates the region around that text
|
||||
|
@ -235,8 +237,8 @@ Select the text you drag across, in the form of whole lines.
|
|||
|
||||
@node Mouse References
|
||||
@section Following References with the Mouse
|
||||
@kindex Mouse-1 @r{(selection)}
|
||||
@kindex Mouse-2 @r{(selection)}
|
||||
@kindex Mouse-1 @r{(on buttons)}
|
||||
@kindex Mouse-2 @r{(on buttons)}
|
||||
@cindex hyperlinks
|
||||
@cindex links
|
||||
@cindex text buttons
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2012-05-09 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs-lisp-intro.texi (Making Errors): Don't mention Emacs 20.
|
||||
(Void Function, Wrong Type of Argument, Recursion with list)
|
||||
(Simple Extension): Assume a non-ancient Emacs.
|
||||
(Void Variable, Switching Buffers): Improve page breaks.
|
||||
|
||||
* emacs-lisp-intro.texi: Update GNU Press contact details.
|
||||
|
||||
2012-05-05 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs-lisp-intro.texi (Making Errors): Don't mention Emacs 20.
|
||||
|
|
|
@ -238,7 +238,7 @@ GNU Press, @hfill @uref{http://www.fsf.org/campaigns/gnu-press/}@*
|
|||
a division of the @hfill email: @email{sales@@fsf.org}@*
|
||||
Free Software Foundation, Inc. @hfill Tel: +1 (617) 542-5942@*
|
||||
51 Franklin Street, Fifth Floor @hfill Fax: +1 (617) 542-2652@*
|
||||
Boston, MA 02110-1301 USA
|
||||
Boston, MA 02110-1301 USA
|
||||
@end iftex
|
||||
|
||||
@ifnottex
|
||||
|
@ -249,7 +249,7 @@ GNU Press, http://www.fsf.org/campaigns/gnu-press/
|
|||
a division of the email: sales@@fsf.org
|
||||
Free Software Foundation, Inc. Tel: +1 (617) 542-5942
|
||||
51 Franklin Street, Fifth Floor Fax: +1 (617) 542-2652
|
||||
Boston, MA 02110-1301 USA
|
||||
Boston, MA 02110-1301 USA
|
||||
@end example
|
||||
@end ifnottex
|
||||
|
||||
|
|
|
@ -1,3 +1,56 @@
|
|||
2012-05-09 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (clean, mostlyclean): Add some more vol1/2 items.
|
||||
|
||||
* two-volume.make (emacsdir): New.
|
||||
(tex): Add directory with emacsver.texi to TEXINPUTS.
|
||||
|
||||
* minibuf.texi (Minibuffer History, Basic Completion):
|
||||
Tweak page breaks.
|
||||
|
||||
* internals.texi (Garbage Collection, Memory Usage)
|
||||
(Writing Emacs Primitives): Tweak page breaks.
|
||||
|
||||
* streams.texi (Output Variables): Improve page break.
|
||||
|
||||
* edebug.texi (Edebug Display Update): Improve page break.
|
||||
|
||||
* compile.texi (Disassembly): Condense the examples.
|
||||
|
||||
* eval.texi, functions.texi, loading.texi, macros.texi:
|
||||
Where possible, use example rather than smallexample.
|
||||
|
||||
* symbols.texi: Where possible, use example rather than smallexample.
|
||||
(Symbol Components): Fix typo.
|
||||
(Other Plists): Tweak page break.
|
||||
|
||||
* sequences.texi (Arrays): Tweak page breaks.
|
||||
|
||||
* customize.texi: Where possible, use example rather than smallexample.
|
||||
(Common Keywords, Variable Definitions, Applying Customizations)
|
||||
(Custom Themes): Tweak page breaks.
|
||||
|
||||
* control.texi: Where possible, use example rather than smallexample.
|
||||
(Sequencing, Conditionals, Signaling Errors, Handling Errors):
|
||||
Tweak page breaks.
|
||||
|
||||
* lists.texi (List-related Predicates, List Variables):
|
||||
Tweak page-breaks.
|
||||
(Sets And Lists): Convert inforef to xref.
|
||||
|
||||
* text.texi (Auto Filling): Don't mention Emacs 19.
|
||||
|
||||
* commands.texi (Event Input Misc): Don't mention unread-command-char.
|
||||
* numbers.texi (Predicates on Numbers): Don't mention Emacs 18.
|
||||
|
||||
* objects.texi (Process Type, Overlay Type): Tweak page-breaks.
|
||||
|
||||
* intro.texi (Caveats): Copyedit.
|
||||
(Lisp History): Convert inforef to xref.
|
||||
(Lisp History, Printing Notation, Version Info): Improve page-breaks.
|
||||
|
||||
* elisp.texi (DATE): Forgot to change the month in 2012-04-21 change.
|
||||
|
||||
2012-05-08 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* two.el: Remove; unused since creation of two-volume.make.
|
||||
|
|
|
@ -132,10 +132,11 @@ elisp.pdf: $(srcs)
|
|||
mostlyclean:
|
||||
rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
|
||||
*.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs
|
||||
rm -f elisp[12]*
|
||||
rm -f elisp[12]* vol[12].tmp
|
||||
|
||||
clean: mostlyclean
|
||||
rm -f elisp.dvi elisp.pdf elisp.ps vol[12].pdf
|
||||
rm -f elisp.dvi elisp.pdf elisp.ps
|
||||
rm -f vol[12].dvi vol[12].pdf vol[12].ps
|
||||
rm -rf elisp.html
|
||||
rm -f emacs-lispref-${version}.tar*
|
||||
|
||||
|
|
|
@ -637,41 +637,34 @@ Lisp source; these do not appear in the output of @code{disassemble}.
|
|||
@end group
|
||||
|
||||
@group
|
||||
0 varref integer ; @r{Get the value of @code{integer}}
|
||||
; @r{and push it onto the stack.}
|
||||
1 constant 1 ; @r{Push 1 onto stack.}
|
||||
0 varref integer ; @r{Get the value of @code{integer} and}
|
||||
; @r{push it onto the stack.}
|
||||
1 constant 1 ; @r{Push 1 onto stack.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
2 eqlsign ; @r{Pop top two values off stack, compare}
|
||||
; @r{them, and push result onto stack.}
|
||||
2 eqlsign ; @r{Pop top two values off stack, compare}
|
||||
; @r{them, and push result onto stack.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
3 goto-if-nil 1 ; @r{Pop and test top of stack;}
|
||||
; @r{if @code{nil}, go to 1,}
|
||||
; @r{else continue.}
|
||||
6 constant 1 ; @r{Push 1 onto top of stack.}
|
||||
7 return ; @r{Return the top element}
|
||||
; @r{of the stack.}
|
||||
3 goto-if-nil 1 ; @r{Pop and test top of stack;}
|
||||
; @r{if @code{nil}, go to 1, else continue.}
|
||||
6 constant 1 ; @r{Push 1 onto top of stack.}
|
||||
7 return ; @r{Return the top element of the stack.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
8:1 varref integer ; @r{Push value of @code{integer} onto stack.}
|
||||
9 constant factorial ; @r{Push @code{factorial} onto stack.}
|
||||
10 varref integer ; @r{Push value of @code{integer} onto stack.}
|
||||
11 sub1 ; @r{Pop @code{integer}, decrement value,}
|
||||
; @r{push new value onto stack.}
|
||||
12 call 1 ; @r{Call function @code{factorial} using}
|
||||
; @r{the first (i.e., the top) element}
|
||||
; @r{of the stack as the argument;}
|
||||
; @r{push returned value onto stack.}
|
||||
8:1 varref integer ; @r{Push value of @code{integer} onto stack.}
|
||||
9 constant factorial ; @r{Push @code{factorial} onto stack.}
|
||||
10 varref integer ; @r{Push value of @code{integer} onto stack.}
|
||||
11 sub1 ; @r{Pop @code{integer}, decrement value,}
|
||||
; @r{push new value onto stack.}
|
||||
12 call 1 ; @r{Call function @code{factorial} using first}
|
||||
; @r{(i.e. top) stack element as argument;}
|
||||
; @r{push returned value onto stack.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
13 mult ; @r{Pop top two values off stack, multiply}
|
||||
; @r{them, and push result onto stack.}
|
||||
14 return ; @r{Return the top element of stack.}
|
||||
13 mult ; @r{Pop top two values off stack, multiply}
|
||||
; @r{them, and push result onto stack.}
|
||||
14 return ; @r{Return the top element of the stack.}
|
||||
@end group
|
||||
@end example
|
||||
|
||||
|
@ -693,70 +686,56 @@ The @code{silly-loop} function is somewhat more complex:
|
|||
@print{} byte-code for silly-loop:
|
||||
doc: Return time before and after N iterations of a loop.
|
||||
args: (n)
|
||||
@end group
|
||||
|
||||
0 constant current-time-string ; @r{Push}
|
||||
; @r{@code{current-time-string}}
|
||||
@group
|
||||
0 constant current-time-string ; @r{Push @code{current-time-string}}
|
||||
; @r{onto top of stack.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
1 call 0 ; @r{Call @code{current-time-string}}
|
||||
; @r{with no argument,}
|
||||
; @r{pushing result onto stack.}
|
||||
1 call 0 ; @r{Call @code{current-time-string} with no}
|
||||
; @r{argument, push result onto stack.}
|
||||
@end group
|
||||
@group
|
||||
2 varbind t1 ; @r{Pop stack and bind @code{t1} to popped value.}
|
||||
@end group
|
||||
@group
|
||||
3:1 varref n ; @r{Get value of @code{n} from the environment}
|
||||
; @r{and push the value on the stack.}
|
||||
4 sub1 ; @r{Subtract 1 from top of stack.}
|
||||
@end group
|
||||
@group
|
||||
5 dup ; @r{Duplicate top of stack; i.e. copy the top}
|
||||
; @r{of the stack and push copy onto stack.}
|
||||
6 varset n ; @r{Pop the top of the stack,}
|
||||
; @r{and bind @code{n} to the value.}
|
||||
|
||||
;; @r{(In effect, the sequence @code{dup varset} copies the top of the stack}
|
||||
;; @r{into the value of @code{n} without popping it.)}
|
||||
@end group
|
||||
|
||||
@group
|
||||
2 varbind t1 ; @r{Pop stack and bind @code{t1}}
|
||||
; @r{to popped value.}
|
||||
7 constant 0 ; @r{Push 0 onto stack.}
|
||||
8 gtr ; @r{Pop top two values off stack,}
|
||||
; @r{test if @var{n} is greater than 0}
|
||||
; @r{and push result onto stack.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
3:1 varref n ; @r{Get value of @code{n} from}
|
||||
; @r{the environment and push}
|
||||
; @r{the value onto the stack.}
|
||||
4 sub1 ; @r{Subtract 1 from top of stack.}
|
||||
9 goto-if-not-nil 1 ; @r{Goto 1 if @code{n} > 0}
|
||||
; @r{(this continues the while loop)}
|
||||
; @r{else continue.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
5 dup ; @r{Duplicate the top of the stack;}
|
||||
; @r{i.e., copy the top of}
|
||||
; @r{the stack and push the}
|
||||
; @r{copy onto the stack.}
|
||||
6 varset n ; @r{Pop the top of the stack,}
|
||||
; @r{and bind @code{n} to the value.}
|
||||
|
||||
; @r{In effect, the sequence @code{dup varset}}
|
||||
; @r{copies the top of the stack}
|
||||
; @r{into the value of @code{n}}
|
||||
; @r{without popping it.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
7 constant 0 ; @r{Push 0 onto stack.}
|
||||
8 gtr ; @r{Pop top two values off stack,}
|
||||
; @r{test if @var{n} is greater than 0}
|
||||
; @r{and push result onto stack.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
9 goto-if-not-nil 1 ; @r{Goto 1 if @code{n} > 0}
|
||||
; @r{(this continues the while loop)}
|
||||
; @r{else continue.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
12 varref t1 ; @r{Push value of @code{t1} onto stack.}
|
||||
12 varref t1 ; @r{Push value of @code{t1} onto stack.}
|
||||
13 constant current-time-string ; @r{Push @code{current-time-string}}
|
||||
; @r{onto top of stack.}
|
||||
14 call 0 ; @r{Call @code{current-time-string} again.}
|
||||
; @r{onto the top of the stack.}
|
||||
14 call 0 ; @r{Call @code{current-time-string} again.}
|
||||
@end group
|
||||
|
||||
@group
|
||||
15 unbind 1 ; @r{Unbind @code{t1} in local environment.}
|
||||
16 list2 ; @r{Pop top two elements off stack,}
|
||||
; @r{create a list of them,}
|
||||
; @r{and push list onto stack.}
|
||||
17 return ; @r{Return value of the top of stack.}
|
||||
15 unbind 1 ; @r{Unbind @code{t1} in local environment.}
|
||||
16 list2 ; @r{Pop top two elements off stack, create a}
|
||||
; @r{list of them, and push it onto stack.}
|
||||
17 return ; @r{Return value of the top of stack.}
|
||||
@end group
|
||||
@end example
|
||||
|
||||
|
|
|
@ -93,8 +93,8 @@ order, returning the result of the final form.
|
|||
@end example
|
||||
@end defspec
|
||||
|
||||
Two other control constructs likewise evaluate a series of forms but return
|
||||
a different value:
|
||||
Two other constructs likewise evaluate a series of forms but return
|
||||
different values:
|
||||
|
||||
@defspec prog1 form1 forms@dots{}
|
||||
This special form evaluates @var{form1} and all of the @var{forms}, in
|
||||
|
@ -159,8 +159,8 @@ If @var{condition} has the value @code{nil}, and no @var{else-forms} are
|
|||
given, @code{if} returns @code{nil}.
|
||||
|
||||
@code{if} is a special form because the branch that is not selected is
|
||||
never evaluated---it is ignored. Thus, in the example below,
|
||||
@code{true} is not printed because @code{print} is never called.
|
||||
never evaluated---it is ignored. Thus, in this example,
|
||||
@code{true} is not printed because @code{print} is never called:
|
||||
|
||||
@example
|
||||
@group
|
||||
|
@ -257,9 +257,7 @@ clauses was successful. To do this, we use @code{t} as the
|
|||
@var{condition} of the last clause, like this: @code{(t
|
||||
@var{body-forms})}. The form @code{t} evaluates to @code{t}, which is
|
||||
never @code{nil}, so this clause never fails, provided the @code{cond}
|
||||
gets to it at all.
|
||||
|
||||
For example,
|
||||
gets to it at all. For example:
|
||||
|
||||
@example
|
||||
@group
|
||||
|
@ -811,10 +809,10 @@ handlers that handle the error: @code{condition-case} binds a local
|
|||
variable to a list of the form @code{(@var{error-symbol} .@:
|
||||
@var{data})} (@pxref{Handling Errors}).
|
||||
|
||||
The function @code{signal} never returns (though in older Emacs versions
|
||||
it could sometimes return).
|
||||
The function @code{signal} never returns.
|
||||
@c (though in older Emacs versions it sometimes could).
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(signal 'wrong-number-of-arguments '(x y))
|
||||
@error{} Wrong number of arguments: x, y
|
||||
|
@ -824,7 +822,7 @@ it could sometimes return).
|
|||
(signal 'no-such-error '("My unknown error condition"))
|
||||
@error{} peculiar error: "My unknown error condition"
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
@cindex CL note---no continuable errors
|
||||
|
@ -990,7 +988,7 @@ to allow the debugger to run before the handler); @var{body} is one or more
|
|||
Lisp expressions to be executed when this handler handles an error.
|
||||
Here are examples of handlers:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(error nil)
|
||||
|
||||
|
@ -1000,7 +998,7 @@ Here are examples of handlers:
|
|||
(message
|
||||
"Either division by zero or failure to open a file"))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
Each error that occurs has an @dfn{error symbol} that describes what
|
||||
kind of error it is. The @code{error-conditions} property of this
|
||||
|
@ -1033,9 +1031,9 @@ Sometimes it is necessary to re-throw a signal caught by
|
|||
@code{condition-case}, for some outer-level handler to catch. Here's
|
||||
how to do that:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(signal (car err) (cdr err))
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
where @code{err} is the error description variable, the first argument
|
||||
|
@ -1054,7 +1052,7 @@ Here is an example of using @code{condition-case} to handle the error
|
|||
that results from dividing by zero. The handler displays the error
|
||||
message (but without a beep), then returns a very large number.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(defun safe-divide (dividend divisor)
|
||||
(condition-case err
|
||||
|
@ -1075,22 +1073,24 @@ message (but without a beep), then returns a very large number.
|
|||
@print{} Arithmetic error: (arith-error)
|
||||
@result{} 1000000
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
The handler specifies condition name @code{arith-error} so that it will handle only division-by-zero errors. Other kinds of errors will not be handled, at least not by this @code{condition-case}. Thus,
|
||||
The handler specifies condition name @code{arith-error} so that it
|
||||
will handle only division-by-zero errors. Other kinds of errors will
|
||||
not be handled (by this @code{condition-case}). Thus:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(safe-divide nil 3)
|
||||
@error{} Wrong type argument: number-or-marker-p, nil
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
Here is a @code{condition-case} that catches all kinds of errors,
|
||||
including those signaled with @code{error}:
|
||||
including those from @code{error}:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(setq baz 34)
|
||||
@result{} 34
|
||||
|
@ -1108,7 +1108,7 @@ including those signaled with @code{error}:
|
|||
@print{} The error was: (error "Rats! The variable baz was 34, not 35")
|
||||
@result{} 2
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@defmac ignore-errors body@dots{}
|
||||
This construct executes @var{body}, ignoring any errors that occur
|
||||
|
@ -1119,12 +1119,12 @@ otherwise, it returns @code{nil}.
|
|||
Here's the example at the beginning of this subsection rewritten using
|
||||
@code{ignore-errors}:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(ignore-errors
|
||||
(delete-file filename))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
@end defmac
|
||||
|
||||
@defmac with-demoted-errors body@dots{}
|
||||
|
@ -1279,7 +1279,7 @@ Variables}).
|
|||
For example, here we make an invisible buffer for temporary use, and
|
||||
make sure to kill it before finishing:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(let ((buffer (get-buffer-create " *temp*")))
|
||||
(with-current-buffer buffer
|
||||
|
@ -1287,7 +1287,7 @@ make sure to kill it before finishing:
|
|||
@var{body-form}
|
||||
(kill-buffer buffer))))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
You might think that we could just as well write @code{(kill-buffer
|
||||
|
@ -1312,7 +1312,7 @@ is protected with a form that guarantees deletion of the process in the
|
|||
event of failure. Otherwise, Emacs might fill up with useless
|
||||
subprocesses.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(let ((win nil))
|
||||
(unwind-protect
|
||||
|
@ -1323,7 +1323,7 @@ subprocesses.
|
|||
(error "Ftp login failed")))
|
||||
(or win (and process (delete-process process)))))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
This example has a small bug: if the user types @kbd{C-g} to
|
||||
quit, and the quit happens immediately after the function
|
||||
|
|
|
@ -157,7 +157,7 @@ Packages distributed as part of Emacs that use the
|
|||
@defvar customize-package-emacs-version-alist
|
||||
This alist provides a mapping for the versions of Emacs that are
|
||||
associated with versions of a package listed in the
|
||||
@code{:package-version} keyword. Its elements look like this:
|
||||
@code{:package-version} keyword. Its elements are:
|
||||
|
||||
@example
|
||||
(@var{package} (@var{pversion} . @var{eversion})@dots{})
|
||||
|
@ -168,6 +168,8 @@ elements that contain a package version @var{pversion} with an
|
|||
associated Emacs version @var{eversion}. These versions are strings.
|
||||
For example, the MH-E package updates this alist with the following:
|
||||
|
||||
@c Must be small else too wide.
|
||||
@c FIXME obviously this is out of date (in the code).
|
||||
@smallexample
|
||||
(add-to-list 'customize-package-emacs-version-alist
|
||||
'(MH-E ("6.0" . "22.1") ("6.1" . "22.1") ("7.0" . "22.1")
|
||||
|
@ -394,7 +396,7 @@ Set the variable's @code{safe-local-variable} property to
|
|||
@item :set-after @var{variables}
|
||||
@kindex set-after@r{, @code{defcustom} keyword}
|
||||
When setting variables according to saved customizations, make sure to
|
||||
set the variables @var{variables} before this one; in other words, delay
|
||||
set the variables @var{variables} before this one; i.e., delay
|
||||
setting this variable until after those others have been handled. Use
|
||||
@code{:set-after} if setting this variable won't work properly unless
|
||||
those other variables already have their intended values.
|
||||
|
@ -673,9 +675,9 @@ The argument to the @code{:options} keywords should be a list of
|
|||
specifications for reasonable keys in the alist. Ordinarily, they are
|
||||
simply atoms, which stand for themselves. For example:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
:options '("foo" "bar" "baz")
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
specifies that there are three ``known'' keys, namely @code{"foo"},
|
||||
|
@ -687,9 +689,9 @@ integer. You can specify this by using a list instead of an atom in
|
|||
the list. The first element will specify the key, like before, while
|
||||
the second element will specify the value type. For example:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
:options '("foo" ("bar" integer) "baz")
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
Finally, you may want to change how the key is presented. By default,
|
||||
the key is simply shown as a @code{const}, since the user cannot change
|
||||
|
@ -699,37 +701,37 @@ you may want to use a more specialized type for presenting the key, like
|
|||
This is done by using a customization type specification instead of a
|
||||
symbol for the key.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
:options '("foo" ((function-item some-function) integer)
|
||||
"baz")
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
Many alists use lists with two elements, instead of cons cells. For
|
||||
example,
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(defcustom list-alist '(("foo" 1) ("bar" 2) ("baz" 3))
|
||||
"Each element is a list of the form (KEY VALUE).")
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
instead of
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(defcustom cons-alist '(("foo" . 1) ("bar" . 2) ("baz" . 3))
|
||||
"Each element is a cons-cell (KEY . VALUE).")
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
Because of the way lists are implemented on top of cons cells, you can
|
||||
treat @code{list-alist} in the example above as a cons cell alist, where
|
||||
the value type is a list with a single element containing the real
|
||||
value.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(defcustom list-alist '(("foo" 1) ("bar" 2) ("baz" 3))
|
||||
"Each element is a list of the form (KEY VALUE)."
|
||||
:type '(alist :value-type (group integer)))
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
The @code{group} widget is used here instead of @code{list} only because
|
||||
the formatting is better suited for the purpose.
|
||||
|
@ -737,14 +739,14 @@ the formatting is better suited for the purpose.
|
|||
Similarly, you can have alists with more values associated with each
|
||||
key, using variations of this trick:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(defcustom person-data '(("brian" 50 t)
|
||||
("dorith" 55 nil)
|
||||
("ken" 52 t))
|
||||
"Alist of basic info about people.
|
||||
Each element has the form (NAME AGE MALE-FLAG)."
|
||||
:type '(alist :value-type (group integer boolean)))
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@item (plist :key-type @var{key-type} :value-type @var{value-type})
|
||||
This customization type is similar to @code{alist} (see above), except
|
||||
|
@ -1255,7 +1257,7 @@ customization settings for variables and faces, respectively. When
|
|||
the user invokes @samp{Save for future sessions} in the Customize
|
||||
interface, that takes effect by writing a @code{custom-set-variables}
|
||||
and/or a @code{custom-set-faces} form into the custom file, to be
|
||||
evaluated the next time Emacs starts up.
|
||||
evaluated the next time Emacs starts.
|
||||
|
||||
@defun custom-set-variables &rest args
|
||||
This function installs the variable customizations specified by
|
||||
|
@ -1326,11 +1328,10 @@ the theme; this is the description shown when the user invokes the
|
|||
@code{describe-theme} command or types @kbd{?} in the @samp{*Custom
|
||||
Themes*} buffer.
|
||||
|
||||
Two special theme names are disallowed: @code{user} is a ``dummy''
|
||||
theme which stores the user's direct customization settings, and
|
||||
@code{changed} is a ``dummy'' theme which stores changes made outside
|
||||
of the Customize system. If you specify either of these as the
|
||||
@var{theme} argument, @code{deftheme} signals an error.
|
||||
Two special theme names are disallowed (using them causes an error):
|
||||
@code{user} is a ``dummy'' theme that stores the user's direct
|
||||
customization settings, and @code{changed} is a ``dummy'' theme that
|
||||
stores changes made outside of the Customize system.
|
||||
@end defmac
|
||||
|
||||
@defmac provide-theme theme
|
||||
|
@ -1378,7 +1379,7 @@ displays the source file and asks for confirmation from the user
|
|||
before loading any non-built-in theme for the first time.
|
||||
|
||||
The following functions are useful for programmatically enabling and
|
||||
disabling Custom themes:
|
||||
disabling themes:
|
||||
|
||||
@defun custom-theme-p theme
|
||||
This function return a non-@code{nil} value if @var{theme} (a symbol)
|
||||
|
@ -1391,14 +1392,11 @@ it returns @code{nil}.
|
|||
This function loads the Custom theme named @var{theme} from its source
|
||||
file, looking for the source file in the directories specified by the
|
||||
variable @code{custom-theme-load-path}. @xref{Custom Themes,,, emacs,
|
||||
The GNU Emacs Manual}. It also @dfn{enables} the theme, causing its
|
||||
variable and face settings to take effect.
|
||||
|
||||
If the optional argument @var{no-confirm} is non-@code{nil}, this
|
||||
skips prompting the user for confirmation before loading the theme.
|
||||
|
||||
If the optional argument @var{no-enable} is non-@code{nil}, the theme
|
||||
is loaded but not enabled.
|
||||
The GNU Emacs Manual}. It also @dfn{enables} the theme (unless the
|
||||
optional argument @var{no-enable} is non-@code{nil}), causing its
|
||||
variable and face settings to take effect. It prompts the user for
|
||||
confirmation before loading the theme, unless the optional argument
|
||||
@var{no-confirm} is non-@code{nil}.
|
||||
@end deffn
|
||||
|
||||
@deffn Command enable-theme theme
|
||||
|
|
|
@ -975,8 +975,8 @@ unless @code{edebug-continue-kbd-macro} is non-@code{nil}.
|
|||
@c needs an xref to be on just one line.
|
||||
When Edebug needs to display something (e.g., in trace mode), it saves
|
||||
the current window configuration from ``outside'' Edebug
|
||||
(@pxref{Window Configurations}). When you exit Edebug (by continuing
|
||||
the program), it restores the previous window configuration.
|
||||
(@pxref{Window Configurations}). When you exit Edebug, it restores
|
||||
the previous window configuration.
|
||||
|
||||
Emacs redisplays only when it pauses. Usually, when you continue
|
||||
execution, the program re-enters Edebug at a breakpoint or after
|
||||
|
|
|
@ -260,16 +260,13 @@ use @code{fset} to set the function cell of a symbol and
|
|||
into the function cell of @code{first}, and the symbol @code{first} into
|
||||
the function cell of @code{erste}.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
;; @r{Build this function cell linkage:}
|
||||
;; ------------- ----- ------- -------
|
||||
;; | #<subr car> | <-- | car | <-- | first | <-- | erste |
|
||||
;; ------------- ----- ------- -------
|
||||
@end group
|
||||
@end smallexample
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
(symbol-function 'car)
|
||||
@result{} #<subr car>
|
||||
|
@ -286,19 +283,19 @@ the function cell of @code{erste}.
|
|||
(erste '(1 2 3)) ; @r{Call the function referenced by @code{erste}.}
|
||||
@result{} 1
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
By contrast, the following example calls a function without any symbol
|
||||
function indirection, because the first element is an anonymous Lisp
|
||||
function, not a symbol.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
((lambda (arg) (erste arg))
|
||||
'(1 2 3))
|
||||
@result{} 1
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
Executing the function itself evaluates its body; this does involve
|
||||
|
@ -307,18 +304,18 @@ symbol function indirection when calling @code{erste}.
|
|||
This form is rarely used and is now deprecated. Instead, you should write it
|
||||
as:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(funcall (lambda (arg) (erste arg))
|
||||
'(1 2 3))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
or just
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(let ((arg '(1 2 3))) (erste arg))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
The built-in function @code{indirect-function} provides an easy way to
|
||||
perform symbol function indirection explicitly.
|
||||
|
@ -341,12 +338,12 @@ loop in the chain of symbols.
|
|||
|
||||
Here is how you could define @code{indirect-function} in Lisp:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(defun indirect-function (function)
|
||||
(if (symbolp function)
|
||||
(indirect-function (symbol-function function))
|
||||
function))
|
||||
@end smallexample
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
@node Function Forms
|
||||
|
|
|
@ -397,7 +397,7 @@ after a @code{&rest} argument.
|
|||
|
||||
Here are some examples of argument lists and proper calls:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(funcall (lambda (n) (1+ n)) ; @r{One required:}
|
||||
1) ; @r{requires exactly one argument.}
|
||||
@result{} 2
|
||||
|
@ -409,7 +409,7 @@ after a @code{&rest} argument.
|
|||
(+ n (apply '+ ns))) ; @r{1 or more arguments.}
|
||||
1 2 3 4 5)
|
||||
@result{} 15
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@node Function Documentation
|
||||
@subsection Documentation Strings of Functions
|
||||
|
@ -820,7 +820,7 @@ char-table; that is, a list, a vector, a bool-vector, or a string. The
|
|||
result is always a list. The length of the result is the same as the
|
||||
length of @var{sequence}. For example:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(mapcar 'car '((a b) (c d) (e f)))
|
||||
@result{} (a c e)
|
||||
|
@ -852,7 +852,7 @@ Return the list of results."
|
|||
(mapcar* 'cons '(a b c) '(1 2 3 4))
|
||||
@result{} ((a . 1) (b . 2) (c . 3))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
@defun mapc function sequence
|
||||
|
@ -873,7 +873,7 @@ argument and return a string. The argument @var{sequence} can be any
|
|||
kind of sequence except a char-table; that is, a list, a vector, a
|
||||
bool-vector, or a string.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(mapconcat 'symbol-name
|
||||
'(The cat in the hat)
|
||||
|
@ -887,7 +887,7 @@ bool-vector, or a string.
|
|||
"")
|
||||
@result{} "IBM.9111"
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
@node Anonymous Functions
|
||||
|
@ -1188,18 +1188,18 @@ still allow the code to be byte compiled).
|
|||
For instance, in old versions of Emacs the @code{sit-for} function
|
||||
accepted three arguments, like this
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(sit-for seconds milliseconds nodisp)
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
However, calling @code{sit-for} this way is considered obsolete
|
||||
(@pxref{Waiting}). The old calling convention is deprecated like
|
||||
this:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(set-advertised-calling-convention
|
||||
'sit-for '(seconds &optional nodisp))
|
||||
@end smallexample
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
@node Inline Functions
|
||||
|
@ -1259,11 +1259,11 @@ indicates a real problem, but usually the functions in question are
|
|||
defined in other files which would be loaded if that code is run. For
|
||||
example, byte-compiling @file{fortran.el} used to warn:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
In end of data:
|
||||
fortran.el:2152:1:Warning: the function `gud-find-c-expr' is not known
|
||||
to be defined.
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
In fact, @code{gud-find-c-expr} is only used in the function that
|
||||
Fortran mode uses for the local value of
|
||||
|
@ -1276,9 +1276,9 @@ visible. You do that with @code{declare-function}.
|
|||
All you need to do is add a @code{declare-function} statement before the
|
||||
first use of the function in question:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(declare-function gud-find-c-expr "gud.el" nil)
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
This says that @code{gud-find-c-expr} is defined in @file{gud.el} (the
|
||||
@samp{.el} can be omitted). The compiler takes for granted that that file
|
||||
|
|
|
@ -354,7 +354,7 @@ itself; the latter is only allocated when the string is created.)
|
|||
|
||||
If there was overflow in pure space (@pxref{Pure Storage}),
|
||||
@code{garbage-collect} returns @code{nil}, because a real garbage
|
||||
collection can not be done in this situation.
|
||||
collection cannot be done.
|
||||
@end deffn
|
||||
|
||||
@defopt garbage-collection-messages
|
||||
|
@ -471,12 +471,12 @@ in this Emacs session.
|
|||
|
||||
@defvar string-chars-consed
|
||||
The total number of string characters that have been allocated so far
|
||||
in this Emacs session.
|
||||
in this session.
|
||||
@end defvar
|
||||
|
||||
@defvar misc-objects-consed
|
||||
The total number of miscellaneous objects that have been allocated so
|
||||
far in this Emacs session. These include markers and overlays, plus
|
||||
far in this session. These include markers and overlays, plus
|
||||
certain objects not visible to users.
|
||||
@end defvar
|
||||
|
||||
|
@ -580,8 +580,8 @@ there is a fixed maximum. Alternatively, it can be @code{UNEVALLED},
|
|||
indicating a special form that receives unevaluated arguments, or
|
||||
@code{MANY}, indicating an unlimited number of evaluated arguments (the
|
||||
equivalent of @code{&rest}). Both @code{UNEVALLED} and @code{MANY} are
|
||||
macros. If @var{max} is a number, it may not be less than @var{min} and
|
||||
it may not be greater than eight.
|
||||
macros. If @var{max} is a number, it must be more than @var{min} but
|
||||
less than 8.
|
||||
|
||||
@item interactive
|
||||
This is an interactive specification, a string such as might be used as
|
||||
|
|
|
@ -250,31 +250,31 @@ for @code{PATH}; directory names are separated by @samp{:} (or
|
|||
current default directory. Here is an example of how to set
|
||||
@env{EMACSLOADPATH} variable from @command{sh}:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
export EMACSLOADPATH
|
||||
EMACSLOADPATH=/home/foo/.emacs.d/lisp:/opt/emacs/lisp
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
Here is how to set it from @code{csh}:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
setenv EMACSLOADPATH /home/foo/.emacs.d/lisp:/opt/emacs/lisp
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
If @env{EMACSLOADPATH} is not set (which is usually the case), Emacs
|
||||
initializes @code{load-path} with the following two directories:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
"/usr/local/share/emacs/@var{version}/site-lisp"
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
and
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
"/usr/local/share/emacs/site-lisp"
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
The first one is for locally installed packages for a particular Emacs
|
||||
|
@ -303,9 +303,9 @@ packages are installed, if any (@pxref{Packaging Basics}).
|
|||
It is common to add code to one's init file (@pxref{Init File}) to
|
||||
add one or more directories to @code{load-path}. For example:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(push "~/.emacs.d/lisp" load-path)
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
Dumping Emacs uses a special value of @code{load-path}. If the
|
||||
value of @code{load-path} at the end of dumping is unchanged (that is,
|
||||
|
@ -339,9 +339,9 @@ similarly-named file in a directory earlier on @code{load-path}.
|
|||
|
||||
For instance, suppose @code{load-path} is set to
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
("/opt/emacs/site-lisp" "/usr/share/emacs/23.3/lisp")
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
and that both these directories contain a file named @file{foo.el}.
|
||||
|
@ -534,24 +534,24 @@ it is executed while building Emacs.
|
|||
The following example shows how @code{doctor} is prepared for
|
||||
autoloading with a magic comment:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
;;;###autoload
|
||||
(defun doctor ()
|
||||
"Switch to *doctor* buffer and start giving psychotherapy."
|
||||
(interactive)
|
||||
(switch-to-buffer "*doctor*")
|
||||
(doctor-mode))
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
Here's what that produces in @file{loaddefs.el}:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(autoload (quote doctor) "doctor" "\
|
||||
Switch to *doctor* buffer and start giving psychotherapy.
|
||||
|
||||
\(fn)" t nil)
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
@cindex @code{fn} in function's documentation string
|
||||
|
@ -570,11 +570,11 @@ ordinary magic autoload comment would copy the whole definition into
|
|||
@code{loaddefs.el}. That is not desirable. You can put the desired
|
||||
@code{autoload} call into @code{loaddefs.el} instead by writing this:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
;;;###autoload (autoload 'foo "myfile")
|
||||
(mydefunmacro foo
|
||||
...)
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
You can use a non-default string as the autoload cookie and have the
|
||||
corresponding autoload calls written into a file whose name is
|
||||
|
@ -679,7 +679,7 @@ file should call @code{provide} at the top level to add the feature to
|
|||
For example, in @file{idlwave.el}, the definition for
|
||||
@code{idlwave-complete-filename} includes the following code:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(defun idlwave-complete-filename ()
|
||||
"Use the comint stuff to complete a file name."
|
||||
(require 'comint)
|
||||
|
@ -687,7 +687,7 @@ file should call @code{provide} at the top level to add the feature to
|
|||
(comint-completion-addsuffix nil)
|
||||
...)
|
||||
(comint-dynamic-complete-filename)))
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
The expression @code{(require 'comint)} loads the file @file{comint.el}
|
||||
|
@ -702,9 +702,9 @@ after the let exits.)
|
|||
|
||||
The @file{comint.el} file contains the following top-level expression:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(provide 'comint)
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
This adds @code{comint} to the global @code{features} list, so that
|
||||
|
@ -725,13 +725,13 @@ ensure that a file of definitions is loaded before it is byte-compiled
|
|||
by including a @code{provide} followed by a @code{require} for the same
|
||||
feature, as in the following example.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(provide 'my-feature) ; @r{Ignored by byte compiler,}
|
||||
; @r{evaluated by @code{load}.}
|
||||
(require 'my-feature) ; @r{Evaluated by byte compiler.}
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
The compiler ignores the @code{provide}, then processes the
|
||||
|
@ -761,7 +761,7 @@ package, which might or might not be loaded, or might or might not be
|
|||
present in a given version. @xref{Network Feature Testing}, for
|
||||
an example.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
features
|
||||
@result{} (bar bish)
|
||||
|
||||
|
@ -769,7 +769,7 @@ features
|
|||
@result{} foo
|
||||
features
|
||||
@result{} (foo bar bish)
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
When a file is loaded to satisfy an autoload, and it stops due to an
|
||||
error in the evaluation of its contents, any function definitions or
|
||||
|
|
|
@ -109,7 +109,7 @@ If @var{environment} is provided, it specifies an alist of macro
|
|||
definitions that shadow the currently defined macros. Byte compilation
|
||||
uses this feature.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(defmacro inc (var)
|
||||
(list 'setq var (list '1+ var)))
|
||||
|
@ -131,7 +131,7 @@ uses this feature.
|
|||
(macroexpand '(inc2 r s))
|
||||
@result{} (progn (inc r) (inc s)) ; @r{@code{inc} not expanded here.}
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
|
||||
|
@ -145,10 +145,10 @@ Repeating the example used for @code{macroexpand} above with
|
|||
@code{macroexpand-all}, we see that @code{macroexpand-all} @emph{does}
|
||||
expand the embedded calls to @code{inc}:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(macroexpand-all '(inc2 r s))
|
||||
@result{} (progn (setq r (1+ r)) (setq s (1+ s)))
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@end defun
|
||||
|
||||
|
@ -332,7 +332,7 @@ following macro (used to facilitate iteration) illustrates the
|
|||
problem. This macro allows us to write a ``for'' loop construct.
|
||||
|
||||
@findex for
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(defmacro for (var from init to final do &rest body)
|
||||
"Execute a simple \"for\" loop.
|
||||
|
@ -363,7 +363,7 @@ For example, (for i from 1 to 10 do (print i))."
|
|||
@print{}3 9
|
||||
@result{} nil
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
The arguments @code{from}, @code{to}, and @code{do} in this macro are
|
||||
|
@ -373,7 +373,7 @@ in those positions in the macro call.
|
|||
|
||||
Here's an equivalent definition simplified through use of backquote:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(defmacro for (var from init to final do &rest body)
|
||||
"Execute a simple \"for\" loop.
|
||||
|
@ -383,7 +383,7 @@ For example, (for i from 1 to 10 do (print i))."
|
|||
,@@body
|
||||
(inc ,var))))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
Both forms of this definition (with backquote and without) suffer from
|
||||
the defect that @var{final} is evaluated on every iteration. If
|
||||
|
@ -398,7 +398,7 @@ producing an expansion that evaluates the argument expressions exactly
|
|||
once unless repeated evaluation is part of the intended purpose of the
|
||||
macro. Here is a correct expansion for the @code{for} macro:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(let ((i 1)
|
||||
(max 3))
|
||||
|
@ -407,11 +407,11 @@ macro. Here is a correct expansion for the @code{for} macro:
|
|||
(princ (format "%d %d" i square))
|
||||
(inc i)))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
Here is a macro definition that creates this expansion:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(defmacro for (var from init to final do &rest body)
|
||||
"Execute a simple for loop: (for i from 1 to 10 do (print i))."
|
||||
|
@ -421,7 +421,7 @@ Here is a macro definition that creates this expansion:
|
|||
,@@body
|
||||
(inc ,var))))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
Unfortunately, this fix introduces another problem,
|
||||
described in the following section.
|
||||
|
@ -434,7 +434,7 @@ described in the following section.
|
|||
follows to make the expansion evaluate the macro arguments the proper
|
||||
number of times:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(defmacro for (var from init to final do &rest body)
|
||||
"Execute a simple for loop: (for i from 1 to 10 do (print i))."
|
||||
|
@ -446,14 +446,14 @@ number of times:
|
|||
,@@body
|
||||
(inc ,var))))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
@end ifnottex
|
||||
|
||||
The new definition of @code{for} has a new problem: it introduces a
|
||||
local variable named @code{max} which the user does not expect. This
|
||||
causes trouble in examples such as the following:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(let ((max 0))
|
||||
(for x from 0 to 10 do
|
||||
|
@ -461,7 +461,7 @@ causes trouble in examples such as the following:
|
|||
(if (< max this)
|
||||
(setq max this)))))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
The references to @code{max} inside the body of the @code{for}, which
|
||||
|
@ -477,7 +477,7 @@ put it into the program later. It will never appear anywhere except
|
|||
where put by @code{for}. Here is a definition of @code{for} that works
|
||||
this way:
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
@group
|
||||
(defmacro for (var from init to final do &rest body)
|
||||
"Execute a simple for loop: (for i from 1 to 10 do (print i))."
|
||||
|
@ -488,7 +488,7 @@ this way:
|
|||
,@@body
|
||||
(inc ,var)))))
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
This creates an uninterned symbol named @code{max} and puts it in the
|
||||
|
|
|
@ -512,8 +512,7 @@ duplicates, and to add @var{newelt} to the list even if it is empty.
|
|||
If the value of this variable is @code{nil}, standard functions that
|
||||
read from the minibuffer don't add new elements to the history list.
|
||||
This lets Lisp programs explicitly manage input history by using
|
||||
@code{add-to-history}. By default, @code{history-add-new-input} is
|
||||
non-@code{nil}.
|
||||
@code{add-to-history}. The default value is @code{t}.
|
||||
@end defvar
|
||||
|
||||
@defopt history-length
|
||||
|
@ -696,7 +695,7 @@ You can also use a function as @var{collection}. Then the function is
|
|||
solely responsible for performing completion; @code{try-completion}
|
||||
returns whatever this function returns. The function is called with
|
||||
three arguments: @var{string}, @var{predicate} and @code{nil} (the
|
||||
reason for the third argument is so that the same function can be used
|
||||
third argument is so that the same function can be used
|
||||
in @code{all-completions} and do the appropriate thing in either
|
||||
case). @xref{Programmed Completion}.
|
||||
|
||||
|
@ -719,8 +718,8 @@ handle @code{completion-regexp-list} itself.)
|
|||
In the first of the following examples, the string @samp{foo} is
|
||||
matched by three of the alist @sc{car}s. All of the matches begin with
|
||||
the characters @samp{fooba}, so that is the result. In the second
|
||||
example, there is only one possible match, and it is exact, so the value
|
||||
is @code{t}.
|
||||
example, there is only one possible match, and it is exact, so the
|
||||
return value is @code{t}.
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
|
|
|
@ -247,7 +247,7 @@ The length of the array is fixed once you create it; you cannot
|
|||
change the length of an existing array.
|
||||
|
||||
@item
|
||||
For purposes of evaluation, the array is a constant---in other words,
|
||||
For purposes of evaluation, the array is a constant---i.e.,
|
||||
it evaluates to itself.
|
||||
|
||||
@item
|
||||
|
|
|
@ -812,7 +812,6 @@ reader to produce an uninterned symbol.
|
|||
If non-@code{nil}, that means number continuously across print calls.
|
||||
This affects the numbers printed for @samp{#@var{n}=} labels and
|
||||
@samp{#@var{m}#} references.
|
||||
|
||||
Don't set this variable with @code{setq}; you should only bind it
|
||||
temporarily to @code{t} with @code{let}. When you do that, you should
|
||||
also bind @code{print-number-table} to @code{nil}.
|
||||
|
@ -825,8 +824,8 @@ to bind it to @code{nil} when you bind @code{print-continuous-numbering}.
|
|||
@end defvar
|
||||
|
||||
@defvar float-output-format
|
||||
This variable specifies how to print floating point numbers. Its
|
||||
default value is @code{nil}, meaning use the shortest output
|
||||
This variable specifies how to print floating point numbers. The
|
||||
default is @code{nil}, meaning use the shortest output
|
||||
that represents the number without losing information.
|
||||
|
||||
To control output format more precisely, you can put a string in this
|
||||
|
|
|
@ -90,7 +90,7 @@ the contents of a symbol's function cell, use the function
|
|||
@code{symbol-function} (@pxref{Function Cells}).
|
||||
|
||||
The property list cell normally should hold a correctly formatted
|
||||
property list. To get a symbol's function cell, use the function
|
||||
property list. To get a symbol's property list, use the function
|
||||
@code{symbol-plist}. @xref{Property Lists}.
|
||||
|
||||
The function cell or the value cell may be @dfn{void}, which means
|
||||
|
@ -310,7 +310,7 @@ The argument @var{name} may also be a symbol; in that case,
|
|||
the function returns @var{name} if @var{name} is interned
|
||||
in the specified obarray, and otherwise @code{nil}.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(intern-soft "frazzle") ; @r{No such symbol exists.}
|
||||
@result{} nil
|
||||
(make-symbol "frazzle") ; @r{Create an uninterned one.}
|
||||
|
@ -331,7 +331,7 @@ in the specified obarray, and otherwise @code{nil}.
|
|||
(eq sym 'frazzle) ; @r{And it is the same one.}
|
||||
@result{} t
|
||||
@end group
|
||||
@end smallexample
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
@defvar obarray
|
||||
|
@ -346,7 +346,7 @@ This function calls @var{function} once with each symbol in the obarray
|
|||
omitted, it defaults to the value of @code{obarray}, the standard
|
||||
obarray for ordinary symbols.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(setq count 0)
|
||||
@result{} 0
|
||||
(defun count-syms (s)
|
||||
|
@ -356,7 +356,7 @@ obarray for ordinary symbols.
|
|||
@result{} nil
|
||||
count
|
||||
@result{} 1871
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
See @code{documentation} in @ref{Accessing Documentation}, for another
|
||||
example using @code{mapatoms}.
|
||||
|
@ -462,12 +462,12 @@ This function sets @var{symbol}'s property list to @var{plist}.
|
|||
Normally, @var{plist} should be a well-formed property list, but this is
|
||||
not enforced. The return value is @var{plist}.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(setplist 'foo '(a 1 b (2 3) c nil))
|
||||
@result{} (a 1 b (2 3) c nil)
|
||||
(symbol-plist 'foo)
|
||||
@result{} (a 1 b (2 3) c nil)
|
||||
@end smallexample
|
||||
@end example
|
||||
|
||||
For symbols in special obarrays, which are not used for ordinary
|
||||
purposes, it may make sense to use the property list cell in a
|
||||
|
@ -492,7 +492,7 @@ This function puts @var{value} onto @var{symbol}'s property list under
|
|||
the property name @var{property}, replacing any previous property value.
|
||||
The @code{put} function returns @var{value}.
|
||||
|
||||
@smallexample
|
||||
@example
|
||||
(put 'fly 'verb 'transitive)
|
||||
@result{}'transitive
|
||||
(put 'fly 'noun '(a buzzing little bug))
|
||||
|
@ -501,14 +501,14 @@ The @code{put} function returns @var{value}.
|
|||
@result{} transitive
|
||||
(symbol-plist 'fly)
|
||||
@result{} (verb transitive noun (a buzzing little bug))
|
||||
@end smallexample
|
||||
@end example
|
||||
@end defun
|
||||
|
||||
@node Other Plists
|
||||
@subsection Property Lists Outside Symbols
|
||||
|
||||
These functions are useful for manipulating property lists
|
||||
that are stored in places other than symbols:
|
||||
not stored in symbols:
|
||||
|
||||
@defun plist-get plist property
|
||||
This returns the value of the @var{property} property stored in the
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2007-2012 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2007-2012 Free Software Foundation, Inc.
|
||||
# See end for copying conditions.
|
||||
|
||||
# although it would be nice to use tex rather than pdftex to avoid
|
||||
|
@ -6,8 +6,9 @@
|
|||
# existing, etc., dvips | ps2pdf doesn't preserve the page size.
|
||||
# Instead of creating a special dvips config file, put up with the warnings.
|
||||
texinfodir=../misc
|
||||
emacsdir=../emacs
|
||||
|
||||
tex = TEXINPUTS=".:$(texinfodir):${TEXINPUTS}" pdftex -interaction=nonstopmode
|
||||
tex = TEXINPUTS=".:$(texinfodir):${emacsdir}:${TEXINPUTS}" pdftex -interaction=nonstopmode
|
||||
|
||||
all: vol1.pdf vol2.pdf
|
||||
|
||||
|
|
|
@ -1,3 +1,37 @@
|
|||
2012-05-09 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* shell.el (shell-completion-vars): Fix last change (bug#11348).
|
||||
|
||||
2012-05-09 Chong Yidong <cyd@gnu.org>
|
||||
|
||||
* ansi-color.el (ansi-color-process-output): Check for validity of
|
||||
comint-last-output-start before using it. This avoids a bad
|
||||
interaction with gdb-mi's input/output buffer.
|
||||
|
||||
2012-05-09 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* files.el (dir-locals-read-from-file):
|
||||
Mention dir-locals in any error message.
|
||||
|
||||
2012-05-09 Chong Yidong <cyd@gnu.org>
|
||||
|
||||
* emacs-lisp/package.el (package-built-in-p): Handle the `emacs'
|
||||
package (Bug#11410).
|
||||
|
||||
* emacs-lisp/package.el (package-buffer-info): Avoid putting local
|
||||
variables into description.
|
||||
|
||||
2012-05-09 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* shell.el (shell-completion-vars): Set pcomplete-arg-quote-list like
|
||||
shell-delimiter-argument-list (bug#11348).
|
||||
(shell-parse-pcomplete-arguments): Obey pcomplete-arg-quote-list.
|
||||
|
||||
2012-05-09 Chong Yidong <cyd@gnu.org>
|
||||
|
||||
* select.el (xselect--encode-string): Always use utf-8 for TEXT on
|
||||
Nextstep.
|
||||
|
||||
2012-05-09 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* textmodes/rst.el: Silence byte-compiler warnings.
|
||||
|
|
|
@ -217,8 +217,12 @@ The comint output is assumed to lie between the marker
|
|||
`comint-last-output-start' and the process-mark.
|
||||
|
||||
This is a good function to put in `comint-output-filter-functions'."
|
||||
(let ((start-marker (or comint-last-output-start
|
||||
(point-min-marker)))
|
||||
(let ((start-marker (if (and (markerp comint-last-output-start)
|
||||
(eq (marker-buffer comint-last-output-start)
|
||||
(current-buffer))
|
||||
(marker-position comint-last-output-start))
|
||||
comint-last-output-start
|
||||
(point-min-marker)))
|
||||
(end-marker (process-mark (get-buffer-process (current-buffer)))))
|
||||
(cond ((eq ansi-color-for-comint-mode nil))
|
||||
((eq ansi-color-for-comint-mode 'filter)
|
||||
|
|
|
@ -469,8 +469,11 @@ NAME and VERSION are both strings."
|
|||
Optional arg MIN-VERSION, if non-nil, should be a version list
|
||||
specifying the minimum acceptable version."
|
||||
(require 'finder-inf nil t) ; For `package--builtins'.
|
||||
(let ((elt (assq package package--builtins)))
|
||||
(and elt (version-list-<= min-version (package-desc-vers (cdr elt))))))
|
||||
(if (eq package 'emacs)
|
||||
(version-list-<= min-version (version-to-list emacs-version))
|
||||
(let ((elt (assq package package--builtins)))
|
||||
(and elt (version-list-<= min-version
|
||||
(package-desc-vers (cdr elt)))))))
|
||||
|
||||
;; This function goes ahead and activates a newer version of a package
|
||||
;; if an older one was already activated. This is not ideal; we'd at
|
||||
|
@ -943,7 +946,7 @@ If the buffer does not contain a conforming package, signal an
|
|||
error. If there is a package, narrow the buffer to the file's
|
||||
boundaries."
|
||||
(goto-char (point-min))
|
||||
(unless (re-search-forward "^;;; \\([^ ]*\\)\\.el --- \\(.*\\)$" nil t)
|
||||
(unless (re-search-forward "^;;; \\([^ ]*\\)\\.el ---[ \t]*\\(.*?\\)[ \t]*\\(-\\*-.*-\\*-[ \t]*\\)?$" nil t)
|
||||
(error "Packages lacks a file header"))
|
||||
(let ((file-name (match-string-no-properties 1))
|
||||
(desc (match-string-no-properties 2))
|
||||
|
|
|
@ -3629,19 +3629,21 @@ FILE is the name of the file holding the variables to apply.
|
|||
The new class name is the same as the directory in which FILE
|
||||
is found. Returns the new class name."
|
||||
(with-temp-buffer
|
||||
;; Errors reading the file are not very informative.
|
||||
;; Eg just "Error: (end-of-file)" does not give any clue that the
|
||||
;; problem is related to dir-locals.
|
||||
(with-demoted-errors
|
||||
(insert-file-contents file)
|
||||
(let* ((dir-name (file-name-directory file))
|
||||
(class-name (intern dir-name))
|
||||
(variables (let ((read-circle nil))
|
||||
(read (current-buffer)))))
|
||||
(dir-locals-set-class-variables class-name variables)
|
||||
(dir-locals-set-directory-class dir-name class-name
|
||||
(nth 5 (file-attributes file)))
|
||||
class-name))))
|
||||
;; This is with-demoted-errors, but we want to mention dir-locals
|
||||
;; in any error message.
|
||||
(let (err)
|
||||
(condition-case err
|
||||
(progn
|
||||
(insert-file-contents file)
|
||||
(let* ((dir-name (file-name-directory file))
|
||||
(class-name (intern dir-name))
|
||||
(variables (let ((read-circle nil))
|
||||
(read (current-buffer)))))
|
||||
(dir-locals-set-class-variables class-name variables)
|
||||
(dir-locals-set-directory-class dir-name class-name
|
||||
(nth 5 (file-attributes file)))
|
||||
class-name))
|
||||
(error (message "Error reading dir-locals: %S" err) nil)))))
|
||||
|
||||
(defun hack-dir-local-variables ()
|
||||
"Read per-directory local variables for the current buffer.
|
||||
|
|
|
@ -393,8 +393,11 @@ Thus, this does not include the shell's current directory.")
|
|||
(goto-char (match-end 0))
|
||||
(cond
|
||||
((match-beginning 3) ;Backslash escape.
|
||||
(push (if (= (match-beginning 3) (match-end 3))
|
||||
"\\" (match-string 3))
|
||||
(push (cond
|
||||
((null pcomplete-arg-quote-list)
|
||||
(goto-char (match-beginning 3)) "\\")
|
||||
((= (match-beginning 3) (match-end 3)) "\\")
|
||||
(t (match-string 3)))
|
||||
arg))
|
||||
((match-beginning 2) ;Double quote.
|
||||
(push (replace-regexp-in-string
|
||||
|
@ -429,7 +432,7 @@ Shell buffers. It implements `shell-completion-execonly' for
|
|||
(set (make-local-variable 'pcomplete-parse-arguments-function)
|
||||
#'shell-parse-pcomplete-arguments)
|
||||
(set (make-local-variable 'pcomplete-arg-quote-list)
|
||||
(append "\\ \t\n\r\"'`$|&;(){}[]<>#" nil))
|
||||
comint-file-name-quote-list)
|
||||
(set (make-local-variable 'pcomplete-termination-string)
|
||||
(cond ((not comint-completion-addsuffix) "")
|
||||
((stringp comint-completion-addsuffix)
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2012-05-09 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* w32proc.c (new_child): Force Windows to reserve only 64KB of
|
||||
stack for each reader_thread, instead of defaulting to 8MB
|
||||
determined by the linker. This avoids failures in creating
|
||||
subprocesses on Windows 7, see the discussion in this thread:
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2012-03/msg00119.html.
|
||||
|
||||
2012-05-07 Jérémy Compostella <jeremy.compostella@gmail.com>
|
||||
|
||||
Fix up display of the *Minibuf-0* buffer in the mini window.
|
||||
|
|
|
@ -141,7 +141,25 @@ new_child (void)
|
|||
cp->char_consumed = CreateEvent (NULL, FALSE, FALSE, NULL);
|
||||
if (cp->char_consumed)
|
||||
{
|
||||
cp->thrd = CreateThread (NULL, 1024, reader_thread, cp, 0, &id);
|
||||
/* The 0x00010000 flag is STACK_SIZE_PARAM_IS_A_RESERVATION.
|
||||
It means that the 64K stack we are requesting in the 2nd
|
||||
argument is how much memory should be reserved for the
|
||||
stack. If we don't use this flag, the memory requested
|
||||
by the 2nd argument is the amount actually _committed_,
|
||||
but Windows reserves 8MB of memory for each thread's
|
||||
stack. (The 8MB figure comes from the -stack
|
||||
command-line argument we pass to the linker when building
|
||||
Emacs, but that's because we need a large stack for
|
||||
Emacs's main thread.) Since we request 2GB of reserved
|
||||
memory at startup (see w32heap.c), which is close to the
|
||||
maximum memory available for a 32-bit process on Windows,
|
||||
the 8MB reservation for each thread causes failures in
|
||||
starting subprocesses, because we create a thread running
|
||||
reader_thread for each subprocess. As 8MB of stack is
|
||||
way too much for reader_thread, forcing Windows to
|
||||
reserve less wins the day. */
|
||||
cp->thrd = CreateThread (NULL, 64 * 1024, reader_thread, cp,
|
||||
0x00010000, &id);
|
||||
if (cp->thrd)
|
||||
return cp;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue