diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE index e03e1ad98b1..1e4f9f3b48d 100644 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE @@ -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/. diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 238a8ebf8cc..60fba317232 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,49 @@ +2012-05-09 Chong Yidong + + * frames.texi (Mouse References, Mouse Commands): Fix index + entries (Bug#11362). + +2012-05-09 Glenn Morris + + * 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 * custom.texi (Customization Groups, Custom Themes, Examining): diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index 80a12afeb1b..ee468e6f685 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -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 diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog index 1191b0de919..e556fa7e998 100644 --- a/doc/lispintro/ChangeLog +++ b/doc/lispintro/ChangeLog @@ -1,3 +1,12 @@ +2012-05-09 Glenn Morris + + * 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 * emacs-lisp-intro.texi (Making Errors): Don't mention Emacs 20. diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index 1c9cd213830..9446333db2a 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -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 diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 89f91e91498..fb6d8fcada3 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,56 @@ +2012-05-09 Glenn Morris + + * 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 * two.el: Remove; unused since creation of two-volume.make. diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in index 19624693aa7..f1e3fba3691 100644 --- a/doc/lispref/Makefile.in +++ b/doc/lispref/Makefile.in @@ -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* diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi index 8cebd9fade6..c1e0706bb43 100644 --- a/doc/lispref/compile.texi +++ b/doc/lispref/compile.texi @@ -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 diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index d6dee7ecf91..a707cda2166 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -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 diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi index c8e60fd84f4..2fc07907166 100644 --- a/doc/lispref/customize.texi +++ b/doc/lispref/customize.texi @@ -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 diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index 9d50f5fb31f..e97e90f947b 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -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 diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi index 76059079ca1..57cdc57b1b9 100644 --- a/doc/lispref/eval.texi +++ b/doc/lispref/eval.texi @@ -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:} ;; ------------- ----- ------- ------- ;; | # | <-- | car | <-- | first | <-- | erste | ;; ------------- ----- ------- ------- @end group -@end smallexample - -@smallexample @group (symbol-function 'car) @result{} # @@ -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 diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index b5cf38ed6f2..5e393a399d3 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -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 diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index c9758f8704a..aad3d09695c 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -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 diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 7bd5f04d902..c9f438f6e47 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -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 diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi index 3984e5c03aa..27361a5f07e 100644 --- a/doc/lispref/macros.texi +++ b/doc/lispref/macros.texi @@ -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 diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi index 8ce7e0d4686..99118af19c7 100644 --- a/doc/lispref/minibuf.texi +++ b/doc/lispref/minibuf.texi @@ -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 diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi index 16cc5f946d0..1ccf525e75f 100644 --- a/doc/lispref/sequences.texi +++ b/doc/lispref/sequences.texi @@ -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 diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi index 66df1f34eda..acf5fae859e 100644 --- a/doc/lispref/streams.texi +++ b/doc/lispref/streams.texi @@ -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 diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi index 1e749b8c3bb..99928754038 100644 --- a/doc/lispref/symbols.texi +++ b/doc/lispref/symbols.texi @@ -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 diff --git a/doc/lispref/two-volume.make b/doc/lispref/two-volume.make index 4acbb193f82..07fcaf09b98 100644 --- a/doc/lispref/two-volume.make +++ b/doc/lispref/two-volume.make @@ -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 diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e2bc5619419..e9d849691fd 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,37 @@ +2012-05-09 Stefan Monnier + + * shell.el (shell-completion-vars): Fix last change (bug#11348). + +2012-05-09 Chong Yidong + + * 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 + + * files.el (dir-locals-read-from-file): + Mention dir-locals in any error message. + +2012-05-09 Chong Yidong + + * 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 + + * 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 + + * select.el (xselect--encode-string): Always use utf-8 for TEXT on + Nextstep. + 2012-05-09 Juanma Barranquero * textmodes/rst.el: Silence byte-compiler warnings. diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el index 15a543e9591..6a82f176676 100644 --- a/lisp/ansi-color.el +++ b/lisp/ansi-color.el @@ -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) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 4b868f72899..66370c643bf 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -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)) diff --git a/lisp/files.el b/lisp/files.el index 7ee0707d7b7..2870fedf967 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -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. diff --git a/lisp/shell.el b/lisp/shell.el index 7c5ce49a967..f7a530102ff 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -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) diff --git a/src/ChangeLog b/src/ChangeLog index 4bf848d953a..596133002ea 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2012-05-09 Eli Zaretskii + + * 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 Fix up display of the *Minibuf-0* buffer in the mini window. diff --git a/src/w32proc.c b/src/w32proc.c index 28591f90128..5bdeba25958 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -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; }