mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
Merge from emacs-24; up to 2012-11-23T06:23:28Z!cyd@gnu.org
This commit is contained in:
commit
c5bc2d1d05
34 changed files with 523 additions and 270 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
12
etc/NEWS
12
etc/NEWS
|
|
@ -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'.
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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))))
|
||||
|
||||
|
|
|
|||
|
|
@ -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'.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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\
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue