diff options
34 files changed, 526 insertions, 273 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index c90f6d4b712..ce56d3af1b0 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,7 @@ +2012-12-03 Chong Yidong <cyd@gnu.org> + + * custom.texi (Init Rebinding): kbd is now a function (Bug#13052). + 2012-12-02 Kevin Ryde <user42@zip.com.au> * maintaining.texi (Tag Syntax): Mention (defvar foo) handling. diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index a614126dbc0..6ea1ad5535f 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -1648,7 +1648,7 @@ you can specify them in your initialization file by writing Lisp code. @findex kbd There are several ways to write a key binding using Lisp. The -simplest is to use the @code{kbd} macro, which converts a textual +simplest is to use the @code{kbd} function, which converts a textual representation of a key sequence---similar to how we have written key sequences in this manual---into a form that can be passed as an argument to @code{global-set-key}. For example, here's how to bind @@ -1676,11 +1676,11 @@ and mouse events: (global-set-key (kbd "<mouse-2>") 'mouse-save-then-kill) @end example - Instead of using the @code{kbd} macro, you can use a Lisp string or -vector to specify the key sequence. Using a string is simpler, but -only works for @acronym{ASCII} characters and Meta-modified -@acronym{ASCII} characters. For example, here's how to bind @kbd{C-x -M-l} to @code{make-symbolic-link} (@pxref{Misc File Ops}): + Instead of using @code{kbd}, you can use a Lisp string or vector to +specify the key sequence. Using a string is simpler, but only works +for @acronym{ASCII} characters and Meta-modified @acronym{ASCII} +characters. For example, here's how to bind @kbd{C-x M-l} to +@code{make-symbolic-link} (@pxref{Misc File Ops}): @example (global-set-key "\C-x\M-l" 'make-symbolic-link) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index a0710723ea2..d15a05fe777 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,20 @@ +2012-12-03 Chong Yidong <cyd@gnu.org> + + * symbols.texi (Symbol Properties): New node. + (Symbol Plists): Make it a subsection under Symbol Properties. + (Standard Properties): New node. + + * lists.texi (Property Lists): Move here from symbols.texi. + (Plist Access): Rename from Other Plists. + + * customize.texi (Variable Definitions): + * display.texi (Defining Faces): + * sequences.texi (Char-Tables): Fix xref. + + * keymaps.texi (Key Sequences): kbd is now a function. + + * commands.texi (Using Interactive): Fix index entry. + 2012-11-24 Paul Eggert <eggert@cs.ucla.edu> * doclicense.texi: Update to latest version from FSF. diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index c42e4b3b6dc..8806c933bf3 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@ -141,10 +141,10 @@ A command may be called from Lisp programs like any other function, but then the caller supplies the arguments and @var{arg-descriptor} has no effect. -@cindex @code{interactive-form}, function property +@cindex @code{interactive-form}, symbol property The @code{interactive} form must be located at top-level in the function body, or in the function symbol's @code{interactive-form} -property (@pxref{Symbol Plists}). It has its effect because the +property (@pxref{Symbol Properties}). It has its effect because the command loop looks for it before calling the function (@pxref{Interactive Call}). Once the function is called, all its body forms are executed; at this time, if the @code{interactive} form diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi index c9d22851ed2..d85361499ba 100644 --- a/doc/lispref/customize.texi +++ b/doc/lispref/customize.texi @@ -472,8 +472,8 @@ Internally, @code{defcustom} uses the symbol property @code{saved-value} to record the value saved by the user with the customization buffer, and @code{customized-value} to record the value set by the user with the customization buffer, but not saved. -@xref{Property Lists}. These properties are lists, the car of which -is an expression that evaluates to the value. +@xref{Symbol Properties}. These properties are lists, the car of +which is an expression that evaluates to the value. @defun custom-reevaluate-setting symbol This function re-evaluates the standard value of @var{symbol}, which diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 5148c6ec22e..f1b2074f457 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -2287,7 +2287,7 @@ terminal must match one of the @var{value}s specified for it in @end example Internally, Emacs stores the face's default specification in its -@code{face-defface-spec} symbol property (@pxref{Property Lists}). +@code{face-defface-spec} symbol property (@pxref{Symbol Properties}). The @code{saved-face} property stores the face specification saved by the user, using the customization buffer; the @code{customized-face} property stores the face specification customized for the current diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index 371593f7203..3980f7ac868 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi @@ -378,6 +378,7 @@ Lists * Modifying Lists:: Storing new pieces into an existing list. * Sets And Lists:: A list can represent a finite mathematical set. * Association Lists:: A list can represent a finite relation or mapping. +* Property Lists:: A list of paired elements. Modifying Existing List Structure @@ -386,6 +387,12 @@ Modifying Existing List Structure This can be used to remove or add elements. * Rearrangement:: Reordering the elements in a list; combining lists. +Property Lists + +* Plists and Alists:: Comparison of the advantages of property + lists and association lists. +* Plist Access:: Accessing property lists stored elsewhere. + Sequences, Arrays, and Vectors * Sequence Functions:: Functions that accept any kind of sequence. @@ -410,15 +417,13 @@ Symbols and property lists. * Definitions:: A definition says how a symbol will be used. * Creating Symbols:: How symbols are kept unique. -* Property Lists:: Each symbol has a property list +* Symbol Properties:: Each symbol has a property list for recording miscellaneous information. -Property Lists +Symbol Properties -* Plists and Alists:: Comparison of the advantages of property - lists and association lists. -* Symbol Plists:: Functions to access symbols' property lists. -* Other Plists:: Accessing property lists stored elsewhere. +* Symbol Plists:: Accessing symbol properties. +* Standard Properties:: Standard meanings of symbol properties. Evaluation diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi index d01ecba4bed..d9eddcee669 100644 --- a/doc/lispref/keymaps.texi +++ b/doc/lispref/keymaps.texi @@ -75,8 +75,8 @@ the vector @code{[?\C-x ?l]} represents the key sequence @kbd{C-x l}. For examples of key sequences written in string and vector representations, @ref{Init Rebinding,,, emacs, The GNU Emacs Manual}. -@defmac kbd keyseq-text -This macro converts the text @var{keyseq-text} (a string constant) +@defun kbd keyseq-text +This function converts the text @var{keyseq-text} (a string constant) into a key sequence (a string or vector constant). The contents of @var{keyseq-text} should use the same syntax as in the buffer invoked by the @kbd{C-x C-k @key{RET}} (@code{kmacro-edit-macro}) command; in @@ -97,7 +97,7 @@ Manual}. This macro is not meant for use with arguments that vary---only with string constants. -@end defmac +@end defun @node Keymap Basics @section Keymap Basics @@ -1294,8 +1294,8 @@ numeric codes for the modifier bits don't appear in compiled files. The functions below signal an error if @var{keymap} is not a keymap, or if @var{key} is not a string or vector representing a key sequence. You can use event types (symbols) as shorthand for events that are -lists. The @code{kbd} macro (@pxref{Key Sequences}) is a convenient -way to specify the key sequence. +lists. The @code{kbd} function (@pxref{Key Sequences}) is a +convenient way to specify the key sequence. @defun define-key keymap key binding This function sets the binding for @var{key} in @var{keymap}. (If diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi index 40e8d08f72c..1a3d85b9b35 100644 --- a/doc/lispref/lists.texi +++ b/doc/lispref/lists.texi @@ -22,6 +22,7 @@ the whole list. * Modifying Lists:: Storing new pieces into an existing list. * Sets And Lists:: A list can represent a finite mathematical set. * Association Lists:: A list can represent a finite relation or mapping. +* Property Lists:: A list of paired elements. @end menu @node Cons Cells @@ -1821,3 +1822,142 @@ often modifies the original list structure of @var{alist}. compares the @sc{cdr} of each @var{alist} association instead of the @sc{car}. @end defun + +@node Property Lists +@section Property Lists +@cindex property list +@cindex plist + + A @dfn{property list} (@dfn{plist} for short) is a list of paired +elements. Each of the pairs associates a property name (usually a +symbol) with a property or value. Here is an example of a property +list: + +@example +(pine cones numbers (1 2 3) color "blue") +@end example + +@noindent +This property list associates @code{pine} with @code{cones}, +@code{numbers} with @code{(1 2 3)}, and @code{color} with +@code{"blue"}. The property names and values can be any Lisp objects, +but the names are usually symbols (as they are in this example). + + Property lists are used in several contexts. For instance, the +function @code{put-text-property} takes an argument which is a +property list, specifying text properties and associated values which +are to be applied to text in a string or buffer. @xref{Text +Properties}. + + Another prominent use of property lists is for storing symbol +properties. Every symbol possesses a list of properties, used to +record miscellaneous information about the symbol; these properties +are stored in the form of a property list. @xref{Symbol Properties}. + +@menu +* Plists and Alists:: Comparison of the advantages of property + lists and association lists. +* Plist Access:: Accessing property lists stored elsewhere. +@end menu + +@node Plists and Alists +@subsection Property Lists and Association Lists +@cindex plist vs. alist +@cindex alist vs. plist + +@cindex property lists vs association lists + Association lists (@pxref{Association Lists}) are very similar to +property lists. In contrast to association lists, the order of the +pairs in the property list is not significant, since the property +names must be distinct. + + Property lists are better than association lists for attaching +information to various Lisp function names or variables. If your +program keeps all such information in one association list, it will +typically need to search that entire list each time it checks for an +association for a particular Lisp function name or variable, which +could be slow. By contrast, if you keep the same information in the +property lists of the function names or variables themselves, each +search will scan only the length of one property list, which is +usually short. This is why the documentation for a variable is +recorded in a property named @code{variable-documentation}. The byte +compiler likewise uses properties to record those functions needing +special treatment. + + However, association lists have their own advantages. Depending on +your application, it may be faster to add an association to the front of +an association list than to update a property. All properties for a +symbol are stored in the same property list, so there is a possibility +of a conflict between different uses of a property name. (For this +reason, it is a good idea to choose property names that are probably +unique, such as by beginning the property name with the program's usual +name-prefix for variables and functions.) An association list may be +used like a stack where associations are pushed on the front of the list +and later discarded; this is not possible with a property list. + +@node Plist Access +@subsection Property Lists Outside Symbols + + The following functions can be used to manipulate property lists. +They all compare property names using @code{eq}. + +@defun plist-get plist property +This returns the value of the @var{property} property stored in the +property list @var{plist}. It accepts a malformed @var{plist} +argument. If @var{property} is not found in the @var{plist}, it +returns @code{nil}. For example, + +@example +(plist-get '(foo 4) 'foo) + @result{} 4 +(plist-get '(foo 4 bad) 'foo) + @result{} 4 +(plist-get '(foo 4 bad) 'bad) + @result{} nil +(plist-get '(foo 4 bad) 'bar) + @result{} nil +@end example +@end defun + +@defun plist-put plist property value +This stores @var{value} as the value of the @var{property} property in +the property list @var{plist}. It may modify @var{plist} destructively, +or it may construct a new list structure without altering the old. The +function returns the modified property list, so you can store that back +in the place where you got @var{plist}. For example, + +@example +(setq my-plist '(bar t foo 4)) + @result{} (bar t foo 4) +(setq my-plist (plist-put my-plist 'foo 69)) + @result{} (bar t foo 69) +(setq my-plist (plist-put my-plist 'quux '(a))) + @result{} (bar t foo 69 quux (a)) +@end example +@end defun + + You could define @code{put} in terms of @code{plist-put} as follows: + +@example +(defun put (symbol prop value) + (setplist symbol + (plist-put (symbol-plist symbol) prop value))) +@end example + +@defun lax-plist-get plist property +Like @code{plist-get} except that it compares properties +using @code{equal} instead of @code{eq}. +@end defun + +@defun lax-plist-put plist property value +Like @code{plist-put} except that it compares properties +using @code{equal} instead of @code{eq}. +@end defun + +@defun plist-member plist property +This returns non-@code{nil} if @var{plist} contains the given +@var{property}. Unlike @code{plist-get}, this allows you to distinguish +between a missing property and a property with the value @code{nil}. +The value is actually the tail of @var{plist} whose @code{car} is +@var{property}. +@end defun diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi index e66f61d22d3..8bb1e9e5abf 100644 --- a/doc/lispref/sequences.texi +++ b/doc/lispref/sequences.texi @@ -542,10 +542,10 @@ the function @code{char-table-subtype}, described below. @item The subtype controls the number of @dfn{extra slots} in the char-table. This number is specified by the subtype's -@code{char-table-extra-slots} symbol property, which should be an -integer between 0 and 10. If the subtype has no such symbol property, -the char-table has no extra slots. @xref{Property Lists}, for -information about symbol properties. +@code{char-table-extra-slots} symbol property (@pxref{Symbol +Properties}), whose value should be an integer between 0 and 10. If +the subtype has no such symbol property, the char-table has no extra +slots. @end itemize @cindex parent of char-table diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi index 326c6cd4ab2..d3e5c1f1574 100644 --- a/doc/lispref/symbols.texi +++ b/doc/lispref/symbols.texi @@ -13,8 +13,8 @@ as variables and as function names; see @ref{Variables}, and @ref{Functions}. For the precise read syntax for symbols, see @ref{Symbol Type}. - You can test whether an arbitrary Lisp object is a symbol -with @code{symbolp}: + You can test whether an arbitrary Lisp object is a symbol with +@code{symbolp}: @defun symbolp object This function returns @code{t} if @var{object} is a symbol, @code{nil} @@ -26,7 +26,7 @@ otherwise. and property lists. * Definitions:: A definition says how a symbol will be used. * Creating Symbols:: How symbols are kept unique. -* Property Lists:: Each symbol has a property list +* Symbol Properties:: Each symbol has a property list for recording miscellaneous information. @end menu @@ -91,7 +91,7 @@ the contents of a symbol's function cell, use the function The property list cell normally should hold a correctly formatted property list. To get a symbol's property list, use the function -@code{symbol-plist}. @xref{Property Lists}. +@code{symbol-plist}. @xref{Symbol Properties}. The function cell or the value cell may be @dfn{void}, which means that the cell does not reference any object. (This is not the same @@ -376,109 +376,34 @@ If @code{unintern} does delete a symbol, it returns @code{t}. Otherwise it returns @code{nil}. @end defun -@node Property Lists -@section Property Lists -@cindex property list -@cindex plist +@node Symbol Properties +@section Symbol Properties +@cindex symbol property - A @dfn{property list} (@dfn{plist} for short) is a list of paired -elements. Each of the pairs associates a property name (usually a -symbol) with a property or value. + A symbol may possess any number of @dfn{symbol properties}, which +can be used to record miscellaneous information about the symbol. For +example, when a symbol has a @code{risky-local-variable} property with +a non-@code{nil} value, that means the variable which the symbol names +is a risky file-local variable (@pxref{File Local Variables}). - Every symbol has a cell that stores a property list (@pxref{Symbol -Components}). This property list is used to record information about -the symbol, such as its variable documentation and the name of the -file where it was defined. - - Property lists can also be used in other contexts. For instance, -you can assign property lists to character positions in a string or -buffer. @xref{Text Properties}. - - The property names and values in a property list can be any Lisp -objects, but the names are usually symbols. Property list functions -compare the property names using @code{eq}. Here is an example of a -property list, found on the symbol @code{progn} when the compiler is -loaded: - -@example -(lisp-indent-function 0 byte-compile byte-compile-progn) -@end example - -@noindent -Here @code{lisp-indent-function} and @code{byte-compile} are property -names, and the other two elements are the corresponding values. + Each symbol's properties and property values are stored in the +symbol's property list cell (@pxref{Symbol Components}), in the form +of a property list (@pxref{Property Lists}). @menu -* Plists and Alists:: Comparison of the advantages of property - lists and association lists. -* Symbol Plists:: Functions to access symbols' property lists. -* Other Plists:: Accessing property lists stored elsewhere. +* Symbol Plists:: Accessing symbol properties. +* Standard Properties:: Standard meanings of symbol properties. @end menu -@node Plists and Alists -@subsection Property Lists and Association Lists -@cindex plist vs. alist -@cindex alist vs. plist - -@cindex property lists vs association lists - Association lists (@pxref{Association Lists}) are very similar to -property lists. In contrast to association lists, the order of the -pairs in the property list is not significant since the property names -must be distinct. - - Property lists are better than association lists for attaching -information to various Lisp function names or variables. If your -program keeps all such information in one association list, it will -typically need to search that entire list each time it checks for an -association for a particular Lisp function name or variable, which -could be slow. By contrast, if you keep the same information in the -property lists of the function names or variables themselves, each -search will scan only the length of one property list, which is -usually short. This is why the documentation for a variable is -recorded in a property named @code{variable-documentation}. The byte -compiler likewise uses properties to record those functions needing -special treatment. - - However, association lists have their own advantages. Depending on -your application, it may be faster to add an association to the front of -an association list than to update a property. All properties for a -symbol are stored in the same property list, so there is a possibility -of a conflict between different uses of a property name. (For this -reason, it is a good idea to choose property names that are probably -unique, such as by beginning the property name with the program's usual -name-prefix for variables and functions.) An association list may be -used like a stack where associations are pushed on the front of the list -and later discarded; this is not possible with a property list. - @node Symbol Plists -@subsection Property List Functions for Symbols - -@defun symbol-plist symbol -This function returns the property list of @var{symbol}. -@end defun - -@defun setplist symbol plist -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}. +@subsection Accessing Symbol Properties -@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 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 -nonstandard fashion; in fact, the abbrev mechanism does so -(@pxref{Abbrevs}). -@end defun + The following functions can be used to access symbol properties. @defun get symbol property -This function finds the value of the property named @var{property} in -@var{symbol}'s property list. If there is no such property, @code{nil} -is returned. Thus, there is no distinction between a value of +This function returns the value of the property named @var{property} +in @var{symbol}'s property list. If there is no such property, it +returns @code{nil}. Thus, there is no distinction between a value of @code{nil} and the absence of the property. The name @var{property} is compared with the existing property names @@ -487,12 +412,6 @@ using @code{eq}, so any object is a legitimate property. See @code{put} for an example. @end defun -@defun function-get symbol property -This function is identical to @code{get}, except that if @var{symbol} -is the name of a function alias, it looks in the property list of the -symbol naming the actual function. @xref{Defining Functions}. -@end defun - @defun put symbol property value This function puts @var{value} onto @var{symbol}'s property list under the property name @var{property}, replacing any previous property value. @@ -510,69 +429,132 @@ The @code{put} function returns @var{value}. @end example @end defun -@node Other Plists -@subsection Property Lists Outside Symbols - - These functions are useful for manipulating property lists -not stored in symbols: - -@defun plist-get plist property -This returns the value of the @var{property} property stored in the -property list @var{plist}. It accepts a malformed @var{plist} -argument. If @var{property} is not found in the @var{plist}, it -returns @code{nil}. For example, - -@example -(plist-get '(foo 4) 'foo) - @result{} 4 -(plist-get '(foo 4 bad) 'foo) - @result{} 4 -(plist-get '(foo 4 bad) 'bad) - @result{} nil -(plist-get '(foo 4 bad) 'bar) - @result{} nil -@end example -@end defun - -@defun plist-put plist property value -This stores @var{value} as the value of the @var{property} property in -the property list @var{plist}. It may modify @var{plist} destructively, -or it may construct a new list structure without altering the old. The -function returns the modified property list, so you can store that back -in the place where you got @var{plist}. For example, - -@example -(setq my-plist '(bar t foo 4)) - @result{} (bar t foo 4) -(setq my-plist (plist-put my-plist 'foo 69)) - @result{} (bar t foo 69) -(setq my-plist (plist-put my-plist 'quux '(a))) - @result{} (bar t foo 69 quux (a)) -@end example +@defun symbol-plist symbol +This function returns the property list of @var{symbol}. @end defun - You could define @code{put} in terms of @code{plist-put} as follows: +@defun setplist symbol plist +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}. @example -(defun put (symbol prop value) - (setplist symbol - (plist-put (symbol-plist symbol) prop value))) +(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 example -@defun lax-plist-get plist property -Like @code{plist-get} except that it compares properties -using @code{equal} instead of @code{eq}. +For symbols in special obarrays, which are not used for ordinary +purposes, it may make sense to use the property list cell in a +nonstandard fashion; in fact, the abbrev mechanism does so +(@pxref{Abbrevs}). @end defun -@defun lax-plist-put plist property value -Like @code{plist-put} except that it compares properties -using @code{equal} instead of @code{eq}. +@defun function-get symbol property +This function is identical to @code{get}, except that if @var{symbol} +is the name of a function alias, it looks in the property list of the +symbol naming the actual function. @xref{Defining Functions}. @end defun -@defun plist-member plist property -This returns non-@code{nil} if @var{plist} contains the given -@var{property}. Unlike @code{plist-get}, this allows you to distinguish -between a missing property and a property with the value @code{nil}. -The value is actually the tail of @var{plist} whose @code{car} is -@var{property}. -@end defun +@node Standard Properties +@subsection Standard Symbol Properties + + Here, we list the symbol properties which are used for special +purposes in Emacs. In the following table, whenever we say ``the +named function'', that means the function whose name is the relevant +symbol; similarly for ``the named variable'' etc. + +@table @code +@item :advertised-binding +This property value specifies the preferred key binding, when showing +documentation, for the named function. @xref{Keys in Documentation}. + +@item char-table-extra-slots +The value, if non-@code{nil}, specifies the number of extra slots in +the named char-table type. @xref{Char-Tables}. + +@itemx customized-face +@item face-defface-spec +@itemx saved-face +@itemx theme-face +These properties are used to record a face's standard, saved, +customized, and themed face specs. Do not set them directly; they are +managed by @code{defface} and related functions. @xref{Defining +Faces}. + +@itemx customized-value +@itemx saved-value +@item standard-value +@itemx theme-value +These properties are used to record a customizable variable's standard +value, saved value, customized-but-unsaved value, and themed values. +Do not set them directly; they are managed by @code{defcustom} and +related functions. @xref{Variable Definitions}. + +@item disabled +If the value is non-@code{nil}, the named function is disabled as a +command. @xref{Disabling Commands}. + +@item face-documentation +The value stores the documentation string of the named face. This is +normally set automatically by @code{defface}. @xref{Defining Faces}. + +@item history-length +The value, if non-@code{nil}, specifies the maximum minibuffer history +length for the named history list variable. @xref{Minibuffer +History}. + +@item interactive-form +The value is an interactive form for the named function. Normally, +you should not set this directly; use the @code{interactive} special +form instead. @xref{Interactive Call}. + +@item menu-enable +The value is an expression for determining whether the named menu item +should be enabled in menus. @xref{Simple Menu Items}. + +@item mode-class +If the value is @code{special}, the named major mode is ``special''. +@xref{Major Mode Conventions}. + +@item permanent-local +If the value is non-@code{nil}, the named variable is a buffer-local +variable whose value should not be reset when changing major modes. +@xref{Creating Buffer-Local}. + +@item permanent-local-hook +If the value is non-@code{nil}, the named function should not be +deleted from the local value of a hook variable when changing major +modes. @xref{Setting Hooks}. + +@item pure +This property is used internally to mark certain named functions for +byte compiler optimization. Do not set it. + +@item risky-local-variable +If the value is non-@code{nil}, the named variable is considered risky +as a file-local variable. @xref{File Local Variables}. + +@item safe-function +If the value is non-@code{nil}, the named function is considered +generally safe for evaluation. @xref{Function Safety}. + +@item safe-local-eval-function +If the value is non-@code{nil}, the named function is safe to call in +file-local evaluation forms. @xref{File Local Variables}. + +@item safe-local-variable +The value specifies a function for determining safe file-local values +for the named variable. @xref{File Local Variables}. + +@item side-effect-free +A non-@code{nil} value indicates that the named function is free of +side-effects, for determining function safety (@pxref{Function +Safety}) as well as for byte compiler optimizations. Do not set it. + +@item variable-documentation +If non-@code{nil}, this specifies the named vaariable's documentation +string. This is normally set automatically by @code{defvar} and +related functions. @xref{Defining Faces}. +@end table diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index dfde3c45c04..2168bd5af05 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -1423,7 +1423,6 @@ disappear after doing its job and will not interfere with the subsequent major mode. @xref{Hooks}. @end defvar -@c Emacs 19 feature @cindex permanent local variable A buffer-local variable is @dfn{permanent} if the variable name (a symbol) has a @code{permanent-local} property that is non-@code{nil}. diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 8a067b5c100..f5e5007c58d 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,12 @@ +2012-12-03 Michael Albinus <michael.albinus@gmx.de> + + * tramp.texi (Top, Obtaining Tramp): Replace CVS by Git. + (External methods): Fix typo. + +2012-12-03 Glenn Morris <rgm@gnu.org> + + * rcirc.texi (Notices): Fix typo. + 2012-11-25 Bill Wohler <wohler@newt.com> Release MH-E manual version 8.4. diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi index 0174c3fa87f..ac97db414a4 100644 --- a/doc/misc/rcirc.texi +++ b/doc/misc/rcirc.texi @@ -764,7 +764,7 @@ You can control which notices get omitted via the omit away messages: @example -(setq rcirc-omit-responses '("JOIN" "PART" "QUIT" "NICK" "AWAY)) +(setq rcirc-omit-responses '("JOIN" "PART" "QUIT" "NICK" "AWAY")) @end example @vindex rcirc-omit-threshold diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index a983f76ffd3..020a6e55833 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -7,7 +7,7 @@ @c This is *so* much nicer :) @footnotestyle end -@c In the Tramp CVS, the version number is auto-frobbed from +@c In the Tramp repository, the version number is auto-frobbed from @c configure.ac, so you should edit that file and run @c "autoconf && ./configure" to change the version number. @@ -106,7 +106,7 @@ If you're using the other Emacs flavor, you should read the @ifhtml The latest release of @value{tramp} is available for @uref{ftp://ftp.gnu.org/gnu/tramp/, download}, or you may see -@ref{Obtaining Tramp} for more details, including the CVS server +@ref{Obtaining Tramp} for more details, including the Git server details. @value{tramp} also has a @uref{http://savannah.gnu.org/projects/tramp/, @@ -377,13 +377,13 @@ includes @value{tramp} already, and there is a @value{tramp} package for XEmacs, as well. So maybe it is easier to just use those. But if you want the bleeding edge, read on@dots{...} -For the especially brave, @value{tramp} is available from CVS. The CVS +For the especially brave, @value{tramp} is available from Git. The Git version is the latest version of the code and may contain incomplete features or new issues. Use these versions at your own risk. Instructions for obtaining the latest development version of @value{tramp} -from CVS can be found by going to the Savannah project page at the -following URL and then clicking on the CVS link in the navigation bar +from Git can be found by going to the Savannah project page at the +following URL and then clicking on the Git link in the navigation bar at the top. @noindent @@ -394,8 +394,14 @@ Or follow the example session below: @example ] @strong{cd ~/@value{emacsdir}} -] @strong{export CVS_RSH="ssh"} -] @strong{cvs -z3 -d:pserver:anonymous@@cvs.savannah.gnu.org:/sources/tramp co tramp} +] @strong{git clone git://git.savannah.gnu.org/tramp.git} +@end example + +@noindent +Tramp developers use instead + +@example +] @strong{git clone login@@git.sv.gnu.org:/srv/git/tramp.git} @end example @noindent @@ -405,12 +411,11 @@ updates from the repository by issuing the command: @example ] @strong{cd ~/@value{emacsdir}/tramp} -] @strong{export CVS_RSH="ssh"} -] @strong{cvs update -d} +] @strong{git pull} @end example @noindent -Once you've got updated files from the CVS repository, you need to run +Once you've got updated files from the Git repository, you need to run @command{autoconf} in order to get an up-to-date @file{configure} script: @@ -980,7 +985,7 @@ This works only for unified filenames, see @ref{Issues}. @cindex method smb @cindex smb method -This is another not natural @value{tramp} method. It uses the +This is another not native @value{tramp} method. It uses the @command{smbclient} command on different Unices in order to connect to an SMB server. An SMB server might be a Samba (or CIFS) server on another UNIX host or, more interesting, a host running MS Windows. So @@ -812,9 +812,9 @@ The function `user-variable-p' is now an obsolete alias for +++ ** The return values of `defalias', `defun' and `defmacro' have changed, -and are now undefined. For backwards compatibility, defun and -defmacro currently return the name of the newly defined function/macro -but this should not be relied upon. +and are now undefined. For backwards compatibility, `defun' and +`defmacro' currently return the name of the newly defined +function/macro, but this should not be relied upon. --- ** `face-spec-set' no longer sets frame-specific attributes when the @@ -1061,6 +1061,12 @@ takes precedence over most other maps for a short while (normally one key). +++ ** New macros `setq-local' and `defvar-local'. +** Changes to special forms and macros ++++ +*** `defun' and `defmacro' are now macros rather than special forms ++++ +*** `kbd' is now a function rather than a macro. + +++ ** New fringe bitmap `exclamation-mark'. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1fd8fffa8a8..bb14f1340df 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,31 @@ +2012-12-03 Leo Liu <sdl.web@gmail.com> + + * files.el (dir-locals-read-from-file): Check file non-empty + before reading. (Bug#13038) + +2012-12-03 Glenn Morris <rgm@gnu.org> + + * jka-cmpr-hook.el (jka-compr-get-compression-info): + Remove any version extension before checking filename. (Bug#13006) + (jka-compr-compression-info-list): Belated :version bump. + +2012-12-03 Chong Yidong <cyd@gnu.org> + + * simple.el (transient-mark-mode): Doc fix (Bug#11523). + + * buff-menu.el (Buffer-menu-delete-backwards, Buffer-menu-mode) + (buffer-menu): Doc fix (Bug#12294). + +2012-12-03 Roland Winkler <winkler@gnu.org> + + * calendar/diary-lib.el (diary-header-line-format): Use keybinding + of diary-show-all-entries in the diary buffer (Bug#12994). + +2012-12-03 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-sh.el (tramp-perl-encode): Use "read STDIN" instead of + "<STDIN>". This is binary safe. + 2012-12-03 Jay Belanger <jay.p.belanger@gmail.com> * calc/calc-forms.el (math-absolute-from-iso-dt) diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el index 01035f8727d..3161973ba32 100644 --- a/lisp/buff-menu.el +++ b/lisp/buff-menu.el @@ -204,31 +204,11 @@ commands.") (define-derived-mode Buffer-menu-mode tabulated-list-mode "Buffer Menu" "Major mode for Buffer Menu buffers. -The Buffer Menu is invoked by the commands \\[list-buffers], \\[buffer-menu], and -\\[buffer-menu-other-window]. See `buffer-menu' for details." - (set (make-local-variable 'buffer-stale-function) - (lambda (&optional _noconfirm) 'fast)) - (add-hook 'tabulated-list-revert-hook 'list-buffers--refresh nil t)) - -(defun buffer-menu (&optional arg) - "Switch to the Buffer Menu. -By default, all buffers are listed except those whose names start -with a space (which are for internal use). With prefix argument -ARG, show only buffers that are visiting files. - -The first column (denoted \"C\") shows \".\" for the buffer from -which you came. It shows \">\" for buffers you mark to be -displayed, and \"D\" for those you mark for deletion. - -The \"R\" column has a \"%\" if the buffer is read-only. -The \"M\" column has a \"*\" if it is modified, or \"S\" if you -have marked it for saving. - -After this come the buffer name, its size in characters, its -major mode, and the visited file name (if any). - +The Buffer Menu is invoked by the commands \\[list-buffers], +\\[buffer-menu], and \\[buffer-menu-other-window]. +See `buffer-menu' for a description of its contents. -In the Buffer Menu, the following commands are defined: +In Buffer Menu mode, the following commands are defined: \\<Buffer-menu-mode-map> \\[quit-window] Remove the Buffer Menu from the display. \\[Buffer-menu-this-window] Select current line's buffer in place of the buffer menu. @@ -244,7 +224,7 @@ In the Buffer Menu, the following commands are defined: \\[Buffer-menu-1-window] Select that buffer in full-frame window. \\[Buffer-menu-2-window] Select that buffer in one window, together with the buffer selected before this one in another window. -\\[Buffer-menu-isearch-buffers] Incremental search in the marked buffers. +\\[Buffer-menu-isearch-buffers] Incremental search in the marked buffers. \\[Buffer-menu-isearch-buffers-regexp] Isearch for regexp in the marked buffers. \\[Buffer-menu-visit-tags-table] visit-tags-table this buffer. \\[Buffer-menu-not-modified] Clear modified-flag on that buffer. @@ -259,6 +239,29 @@ In the Buffer Menu, the following commands are defined: \\[revert-buffer] Update the list of buffers. \\[Buffer-menu-toggle-files-only] Toggle whether the menu displays only file buffers. \\[Buffer-menu-bury] Bury the buffer listed on this line." + (set (make-local-variable 'buffer-stale-function) + (lambda (&optional _noconfirm) 'fast)) + (add-hook 'tabulated-list-revert-hook 'list-buffers--refresh nil t)) + +(defun buffer-menu (&optional arg) + "Switch to the Buffer Menu. +By default, the Buffer Menu lists all buffers except those whose +names start with a space (which are for internal use). With +prefix argument ARG, show only buffers that are visiting files. + +In the Buffer Menu, the first column (denoted \"C\") shows \".\" +for the buffer from which you came, \">\" for buffers you mark to +be displayed, and \"D\" for those you mark for deletion. + +The \"R\" column has a \"%\" if the buffer is read-only. +The \"M\" column has a \"*\" if it is modified, or \"S\" if you +have marked it for saving. + +The remaining columns show the buffer name, the buffer size in +characters, its major mode, and the visited file name (if any). + +See `Buffer-menu-mode' for the keybindings available the Buffer +Menu." (interactive "P") (switch-to-buffer (list-buffers-noselect arg)) (message @@ -280,7 +283,7 @@ ARG, show only buffers that are visiting files." (defun list-buffers (&optional arg) "Display a list of existing buffers. The list is displayed in a buffer named \"*Buffer List*\". -See `buffer-menu' for details about the Buffer Menu buffer. +See `buffer-menu' for a description of the Buffer Menu. By default, all buffers are listed except those whose names start with a space (which are for internal use). With prefix argument @@ -377,7 +380,9 @@ buffers to delete; a negative ARG means to delete backwards." (defun Buffer-menu-delete-backwards (&optional arg) "Mark the buffer on this Buffer Menu line for deletion, and move up. -Prefix ARG means move that many lines." +A subsequent \\<Buffer-menu-mode-map>`\\[Buffer-menu-execute]' +command will delete the marked buffer. Prefix ARG means move +that many lines." (interactive "p") (Buffer-menu-delete (- (or arg 1)))) diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index 27c6f76581c..46a7f703019 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -444,8 +444,7 @@ The format of the header is specified by `diary-header-line-format'." (defcustom diary-header-line-format '(:eval (calendar-string-spread (list (if diary-selective-display - "Some text is hidden - press \"s\" in calendar \ -before edit/copy" + "Some text is hidden - press \"C-c C-s\" before edit/copy" "Diary")) ?\s (window-width))) "Format of the header line displayed by `diary-simple-display'. diff --git a/lisp/files.el b/lisp/files.el index 1bb140c0562..c8a75f67820 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3640,14 +3640,15 @@ is found. Returns the new class name." (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)) + (unless (zerop (buffer-size)) + (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))))) (defcustom enable-remote-dir-locals nil diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index d0dfd100f44..0aef3732ad5 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,12 @@ +2012-12-03 Andreas Schwab <schwab@linux-m68k.org> + + * gnus-sum.el (gnus-summary-mode-map): Bind gnus-summary-widget-forward + to TAB, not [tab]. + (gnus-summary-article-map): Likewise. + + * gnus-sync.el (gnus-sync-newsrc-offsets): Restore definition. + (gnus-sync-save): Use correct format for gnus-sync-newsrc-loader. + 2012-11-19 Katsumi Yamaoka <yamaoka@jpl.org> * message.el (message-get-reply-headers): diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index b44b953bec6..1d4f470aea2 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -1911,7 +1911,7 @@ increase the score of each group you read." "a" gnus-summary-post-news "x" gnus-summary-limit-to-unread "s" gnus-summary-isearch-article - [tab] gnus-summary-widget-forward + "\t" gnus-summary-widget-forward [backtab] gnus-summary-widget-backward "t" gnus-summary-toggle-header "g" gnus-summary-show-article @@ -2076,7 +2076,7 @@ increase the score of each group you read." "W" gnus-warp-to-article "g" gnus-summary-show-article "s" gnus-summary-isearch-article - [tab] gnus-summary-widget-forward + "\t" gnus-summary-widget-forward [backtab] gnus-summary-widget-backward "P" gnus-summary-print-article "S" gnus-sticky-article diff --git a/lisp/gnus/gnus-sync.el b/lisp/gnus/gnus-sync.el index b5f8379e367..c235892a9d3 100644 --- a/lisp/gnus/gnus-sync.el +++ b/lisp/gnus/gnus-sync.el @@ -109,6 +109,12 @@ this setting is harmless until the user chooses a sync backend." :group 'gnus-sync :type '(repeat regexp)) +(defcustom gnus-sync-newsrc-offsets '(2 3) + "List of per-group data to be synchronized." + :group 'gnus-sync + :type '(set (const :tag "Read ranges" 2) + (const :tag "Marks" 3))) + (defcustom gnus-sync-global-vars nil "List of global variables to be synchronized. You may want to sync `gnus-newsrc-last-checked-date' but pretty @@ -743,7 +749,15 @@ With a prefix, FORCE is set and all groups will be saved." ;; entry in gnus-newsrc-alist whose group matches any of the ;; gnus-sync-newsrc-groups ;; TODO: keep the old contents for groups we don't have! - (let ((gnus-sync-newsrc-loader (gnus-sync-newsrc-loader-builder))) + (let ((gnus-sync-newsrc-loader + (loop for entry in (cdr gnus-newsrc-alist) + when (gnus-grep-in-list + (car entry) ;the group name + gnus-sync-newsrc-groups) + collect (cons (car entry) + (mapcar (lambda (offset) + (cons offset (nth offset entry))) + gnus-sync-newsrc-offsets))))) (with-temp-file gnus-sync-backend (progn (let ((coding-system-for-write gnus-ding-file-coding-system) diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el index e4743ada045..75d1bbbad6b 100644 --- a/lisp/jka-cmpr-hook.el +++ b/lisp/jka-cmpr-hook.el @@ -109,6 +109,7 @@ Otherwise, it is nil.") "Return information about the compression scheme of FILENAME. The determination as to which compression scheme, if any, to use is based on the filename itself and `jka-compr-compression-info-list'." + (setq filename (file-name-sans-versions filename)) (catch 'compression-info (let ((case-fold-search nil)) (dolist (x jka-compr-compression-info-list) @@ -191,19 +192,6 @@ options through Custom does this automatically." ;; I have this defined so that .Z files are assumed to be in unix ;; compress format; and .gz files, in gzip format, and .bz2 files in bzip fmt. - -;; FIXME? It seems ugly that one has to add "\\(~\\|\\.~[0-9]+~\\)?" to -;; all the regexps here, in order to match backup files etc. -;; It's trivial to modify jka-compr-get-compression-info to match -;; regexps against file-name-sans-versions, but this regexp is also -;; used to build a file-name-handler-alist entry. -;; find-file-name-handler does not use file-name-sans-versions. -;; Perhaps it should, -;; http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg00812.html, -;; but it's used all over the place and there are probably other ramifications. -;; One could modify jka-compr-build-file-regexp to add the backup regexp, -;; but jka-compr-compression-info-list is a defcustom to which -;; anything could be added, so it's easiest to leave things as they are. (defcustom jka-compr-compression-info-list ;;[regexp ;; compr-message compr-prog compr-args @@ -310,6 +298,7 @@ variables. Setting this through Custom does that automatically." (boolean :tag "Strip Extension") (string :tag "Magic Bytes"))) :set 'jka-compr-set + :version "24.1" ; removed version extension piece :group 'jka-compr) (defcustom jka-compr-mode-alist-additions diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 07da0b3dc16..340b7ad353d 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -813,14 +813,11 @@ my %%trans = do { map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)} split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/); }; - -binmode(\\*STDIN); +my $data; # We read in chunks of 54 bytes, to generate output lines # of 72 chars (plus end of line) -$/ = \\54; - -while (my $data = <STDIN>) { +while (read STDIN, $data, 54) { my $pad = q(); # Only for the last chunk, and only if did not fill the last three-byte packet diff --git a/lisp/simple.el b/lisp/simple.el index ecd02545b41..c86f367c8a8 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4333,14 +4333,14 @@ else--for example, incremental search, \\[beginning-of-buffer], and \\[end-of-bu You can also deactivate the mark by typing \\[keyboard-quit] or \\[keyboard-escape-quit]. -Many commands change their behavior when Transient Mark mode is in effect -and the mark is active, by acting on the region instead of their usual -default part of the buffer's text. Examples of such commands include -\\[comment-dwim], \\[flush-lines], \\[keep-lines], \ +Many commands change their behavior when Transient Mark mode is +in effect and the mark is active, by acting on the region instead +of their usual default part of the buffer's text. Examples of +such commands include \\[comment-dwim], \\[flush-lines], \\[keep-lines], \\[query-replace], \\[query-replace-regexp], \\[ispell], and \\[undo]. -Invoke \\[apropos-documentation] and type \"transient\" or -\"mark.*active\" at the prompt, to see the documentation of -commands which are sensitive to the Transient Mark mode." +To see the documentation of commands which are sensitive to the +Transient Mark mode, invoke \\[apropos-documentation] and type \"transient\" +or \"mark.*active\" at the prompt." :global t ;; It's defined in C/cus-start, this stops the d-m-m macro defining it again. :variable transient-mark-mode) diff --git a/msdos/ChangeLog b/msdos/ChangeLog index 753931ae097..1fdd9316847 100644 --- a/msdos/ChangeLog +++ b/msdos/ChangeLog @@ -1,3 +1,8 @@ +2012-12-03 Eli Zaretskii <eliz@gnu.org> + + * sed1v2.inp: Dump emacs.exe and copy to b-emacs.exe before + generating leim-list.el. + 2012-11-24 Ken Brown <kbrown@cornell.edu> * sed2v2.inp (HAVE_MOUSE): Remove. diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp index 84f24bf2c1a..0ee7510bec1 100644 --- a/msdos/sed1v2.inp +++ b/msdos/sed1v2.inp @@ -157,6 +157,12 @@ s/^ [^ ]*move-if-change / update / /^ echo[ ][ ]*timestamp/s/echo /djecho / /^ .*djecho timestamp/a\ @rm -f gl-tmp +/^ cd \$(leimdir) && \$(MAKE)/i\ + $(RUN_TEMACS) -batch -l loadup dump\ + stubify emacs\ + stubedit emacs.exe minstack=2048k\ + rm -f b-emacs$(EXEEXT)\ + cp emacs$(EXEEXT) b-emacs$(EXEEXT) /^ cd \$(leimdir) && \$(MAKE)/c\ $(MAKE) $(MFLAGS) -C $(leimdir) leim-list.el EMACS=$(bootstrap_exe) /^ cd \$(lib) && \$(MAKE)/c\ diff --git a/src/ChangeLog b/src/ChangeLog index d5794b513e6..0808dad2c93 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,25 @@ +2012-12-03 Chong Yidong <cyd@gnu.org> + + * fileio.c (Vauto_save_list_file_name): Doc fix. + +2012-12-03 Fabrice Popineau <fabrice.popineau@gmail.com> + + * w32fns.c: Remove prototype of atof. + (syspage_mask): Declared DWORD_PTR, for compatibility with 64-bit + builds. + (file_dialog_callback): Declared UINT_PTR. + + * w32common.h (syspage_mask): Declare DWORD_PTR, for compatibility + with 64-bit builds. + + * w32.c (FILE_DEVICE_FILE_SYSTEM, METHOD_BUFFERED) + (FILE_ANY_ACCESS, CTL_CODE) [_MSC_VER]: Define only if not already + defined. + +2012-12-03 Glenn Morris <rgm@gnu.org> + + * data.c (Fboundp, Fsymbol_value): Doc fix re lexical-binding. + 2012-12-02 Paul Eggert <eggert@cs.ucla.edu> Fix xpalloc confusion after memory is exhausted. diff --git a/src/data.c b/src/data.c index 5fc6afaaa03..a72fa3e2b5f 100644 --- a/src/data.c +++ b/src/data.c @@ -506,7 +506,9 @@ DEFUN ("setcdr", Fsetcdr, Ssetcdr, 2, 2, 0, /* Extract and set components of symbols. */ DEFUN ("boundp", Fboundp, Sboundp, 1, 1, 0, - doc: /* Return t if SYMBOL's value is not void. */) + doc: /* Return t if SYMBOL's value is not void. +Note that if `lexical-binding' is in effect, this refers to the +global value outside of any lexical scope. */) (register Lisp_Object symbol) { Lisp_Object valcontents; @@ -1047,7 +1049,9 @@ find_symbol_value (Lisp_Object symbol) } DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, - doc: /* Return SYMBOL's value. Error if that is void. */) + doc: /* Return SYMBOL's value. Error if that is void. +Note that if `lexical-binding' is in effect, this returns the +global value outside of any lexical scope. */) (Lisp_Object symbol) { Lisp_Object val; diff --git a/src/fileio.c b/src/fileio.c index 48dbf20b88f..9edd88ca64f 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -5771,7 +5771,7 @@ This applies only to the operation `inhibit-file-name-operation'. */); DEFVAR_LISP ("auto-save-list-file-name", Vauto_save_list_file_name, doc: /* File name in which we write a list of all auto save file names. This variable is initialized automatically from `auto-save-list-file-prefix' -shortly after Emacs reads your `.emacs' file, if you have not yet given it +shortly after Emacs reads your init file, if you have not yet given it a non-nil value. */); Vauto_save_list_file_name = Qnil; diff --git a/src/w32.c b/src/w32.c index c8e16dfaa94..e81fc7b4f3e 100644 --- a/src/w32.c +++ b/src/w32.c @@ -150,10 +150,18 @@ typedef struct _REPARSE_DATA_BUFFER { } DUMMYUNIONNAME; } REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER; +#ifndef FILE_DEVICE_FILE_SYSTEM #define FILE_DEVICE_FILE_SYSTEM 9 +#endif +#ifndef METHOD_BUFFERED #define METHOD_BUFFERED 0 +#endif +#ifndef FILE_ANY_ACCESS #define FILE_ANY_ACCESS 0x00000000 +#endif +#ifndef CTL_CODE #define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) +#endif #define FSCTL_GET_REPARSE_POINT \ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) #endif diff --git a/src/w32common.h b/src/w32common.h index 50724e5553c..5e9b61824ae 100644 --- a/src/w32common.h +++ b/src/w32common.h @@ -34,7 +34,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. extern SYSTEM_INFO sysinfo_cache; extern OSVERSIONINFO osinfo_cache; -extern unsigned long syspage_mask; +extern DWORD_PTR syspage_mask; extern int w32_major_version; extern int w32_minor_version; diff --git a/src/w32fns.c b/src/w32fns.c index 90f5b1695ea..044c377f496 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -82,7 +82,6 @@ void syms_of_w32fns (void); void globals_of_w32fns (void); extern void free_frame_menubar (struct frame *); -extern double atof (const char *); extern int w32_console_toggle_lock_key (int, Lisp_Object); extern void w32_menu_display_help (HWND, HMENU, UINT, UINT); extern void w32_free_menu_strings (HWND); @@ -223,7 +222,7 @@ SYSTEM_INFO sysinfo_cache; /* This gives us version, build, and platform identification. */ OSVERSIONINFO osinfo_cache; -unsigned long syspage_mask = 0; +DWORD_PTR syspage_mask = 0; /* The major and minor versions of NT. */ int w32_major_version; @@ -6035,7 +6034,7 @@ typedef char guichar_t; read-only when "Directories" is selected in the filter. This allows us to work around the fact that the standard Open File dialog does not support directories. */ -static UINT CALLBACK +static UINT_PTR CALLBACK file_dialog_callback (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { if (msg == WM_NOTIFY) |