Merge from emacs-24; up to 2012-11-23T06:23:28Z!cyd@gnu.org

This commit is contained in:
Glenn Morris 2012-12-02 17:08:31 -08:00
commit c5bc2d1d05
34 changed files with 523 additions and 270 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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,82 +376,58 @@ 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
@subsection Accessing Symbol Properties
The following functions can be used to access symbol properties.
@defun get symbol property
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
using @code{eq}, so any object is a legitimate property.
See @code{put} for an example.
@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.
The @code{put} function returns @var{value}.
@example
(put 'fly 'verb 'transitive)
@result{}'transitive
(put 'fly 'noun '(a buzzing little bug))
@result{} (a buzzing little bug)
(get 'fly 'verb)
@result{} transitive
(symbol-plist 'fly)
@result{} (verb transitive noun (a buzzing little bug))
@end example
@end defun
@defun symbol-plist symbol
This function returns the property list of @var{symbol}.
@ -475,104 +451,110 @@ nonstandard fashion; in fact, the abbrev mechanism does so
(@pxref{Abbrevs}).
@end defun
@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
@code{nil} and the absence of the property.
The name @var{property} is compared with the existing property names
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.
The @code{put} function returns @var{value}.
@node Standard Properties
@subsection Standard Symbol Properties
@example
(put 'fly 'verb 'transitive)
@result{}'transitive
(put 'fly 'noun '(a buzzing little bug))
@result{} (a buzzing little bug)
(get 'fly 'verb)
@result{} transitive
(symbol-plist 'fly)
@result{} (verb transitive noun (a buzzing little bug))
@end example
@end defun
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.
@node Other Plists
@subsection Property Lists Outside Symbols
@table @code
@item :advertised-binding
This property value specifies the preferred key binding, when showing
documentation, for the named function. @xref{Keys in Documentation}.
These functions are useful for manipulating property lists
not stored in symbols:
@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}.
@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,
@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}.
@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
@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}.
@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,
@item disabled
If the value is non-@code{nil}, the named function is disabled as a
command. @xref{Disabling Commands}.
@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
@item face-documentation
The value stores the documentation string of the named face. This is
normally set automatically by @code{defface}. @xref{Defining Faces}.
You could define @code{put} in terms of @code{plist-put} as follows:
@item history-length
The value, if non-@code{nil}, specifies the maximum minibuffer history
length for the named history list variable. @xref{Minibuffer
History}.
@example
(defun put (symbol prop value)
(setplist symbol
(plist-put (symbol-plist symbol) prop value)))
@end example
@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}.
@defun lax-plist-get plist property
Like @code{plist-get} except that it compares properties
using @code{equal} instead of @code{eq}.
@end defun
@item menu-enable
The value is an expression for determining whether the named menu item
should be enabled in menus. @xref{Simple Menu Items}.
@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
@item mode-class
If the value is @code{special}, the named major mode is ``special''.
@xref{Major Mode Conventions}.
@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
@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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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