Merge from emacs-24; up to 2012-04-21T14:12:27Z!sdl.web@gmail.com

This commit is contained in:
Glenn Morris 2012-05-08 20:06:08 -07:00
commit 666b903b91
28 changed files with 429 additions and 264 deletions

View file

@ -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/.

View file

@ -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):

View file

@ -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

View file

@ -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.

View file

@ -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

View file

@ -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.

View file

@ -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*

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View 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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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)

View file

@ -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))

View file

@ -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.

View file

@ -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)

View file

@ -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.

View file

@ -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;
}