aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2012-12-02 17:08:31 -0800
committerGlenn Morris2012-12-02 17:08:31 -0800
commitc5bc2d1d0558bbaa29ef04f9bd7bef50146382ab (patch)
treebeabc46c767d32fe6cda79f0567834d5ea8225ee
parent1bf3989cd4ebffdeeebfaaca83c6866416c3908a (diff)
parent328dac0d42a2b395a327c0eda0ed4bbcec4f6c55 (diff)
downloademacs-c5bc2d1d0558bbaa29ef04f9bd7bef50146382ab.tar.gz
emacs-c5bc2d1d0558bbaa29ef04f9bd7bef50146382ab.zip
Merge from emacs-24; up to 2012-11-23T06:23:28Z!cyd@gnu.org
-rw-r--r--doc/emacs/ChangeLog4
-rw-r--r--doc/emacs/custom.texi12
-rw-r--r--doc/lispref/ChangeLog17
-rw-r--r--doc/lispref/commands.texi4
-rw-r--r--doc/lispref/customize.texi4
-rw-r--r--doc/lispref/display.texi2
-rw-r--r--doc/lispref/elisp.texi17
-rw-r--r--doc/lispref/keymaps.texi10
-rw-r--r--doc/lispref/lists.texi140
-rw-r--r--doc/lispref/sequences.texi8
-rw-r--r--doc/lispref/symbols.texi300
-rw-r--r--doc/lispref/variables.texi1
-rw-r--r--doc/misc/ChangeLog9
-rw-r--r--doc/misc/rcirc.texi2
-rw-r--r--doc/misc/tramp.texi27
-rw-r--r--etc/NEWS12
-rw-r--r--lisp/ChangeLog28
-rw-r--r--lisp/buff-menu.el59
-rw-r--r--lisp/calendar/diary-lib.el3
-rw-r--r--lisp/files.el17
-rw-r--r--lisp/gnus/ChangeLog9
-rw-r--r--lisp/gnus/gnus-sum.el4
-rw-r--r--lisp/gnus/gnus-sync.el16
-rw-r--r--lisp/jka-cmpr-hook.el15
-rw-r--r--lisp/net/tramp-sh.el7
-rw-r--r--lisp/simple.el14
-rw-r--r--msdos/ChangeLog5
-rw-r--r--msdos/sed1v2.inp6
-rw-r--r--src/ChangeLog22
-rw-r--r--src/data.c8
-rw-r--r--src/fileio.c2
-rw-r--r--src/w32.c8
-rw-r--r--src/w32common.h2
-rw-r--r--src/w32fns.c5
34 files changed, 526 insertions, 273 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index c90f6d4b712..ce56d3af1b0 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,7 @@
12012-12-03 Chong Yidong <cyd@gnu.org>
2
3 * custom.texi (Init Rebinding): kbd is now a function (Bug#13052).
4
12012-12-02 Kevin Ryde <user42@zip.com.au> 52012-12-02 Kevin Ryde <user42@zip.com.au>
2 6
3 * maintaining.texi (Tag Syntax): Mention (defvar foo) handling. 7 * maintaining.texi (Tag Syntax): Mention (defvar foo) handling.
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index a614126dbc0..6ea1ad5535f 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -1648,7 +1648,7 @@ you can specify them in your initialization file by writing Lisp code.
1648 1648
1649@findex kbd 1649@findex kbd
1650 There are several ways to write a key binding using Lisp. The 1650 There are several ways to write a key binding using Lisp. The
1651simplest is to use the @code{kbd} macro, which converts a textual 1651simplest is to use the @code{kbd} function, which converts a textual
1652representation of a key sequence---similar to how we have written key 1652representation of a key sequence---similar to how we have written key
1653sequences in this manual---into a form that can be passed as an 1653sequences in this manual---into a form that can be passed as an
1654argument to @code{global-set-key}. For example, here's how to bind 1654argument to @code{global-set-key}. For example, here's how to bind
@@ -1676,11 +1676,11 @@ and mouse events:
1676(global-set-key (kbd "<mouse-2>") 'mouse-save-then-kill) 1676(global-set-key (kbd "<mouse-2>") 'mouse-save-then-kill)
1677@end example 1677@end example
1678 1678
1679 Instead of using the @code{kbd} macro, you can use a Lisp string or 1679 Instead of using @code{kbd}, you can use a Lisp string or vector to
1680vector to specify the key sequence. Using a string is simpler, but 1680specify the key sequence. Using a string is simpler, but only works
1681only works for @acronym{ASCII} characters and Meta-modified 1681for @acronym{ASCII} characters and Meta-modified @acronym{ASCII}
1682@acronym{ASCII} characters. For example, here's how to bind @kbd{C-x 1682characters. For example, here's how to bind @kbd{C-x M-l} to
1683M-l} to @code{make-symbolic-link} (@pxref{Misc File Ops}): 1683@code{make-symbolic-link} (@pxref{Misc File Ops}):
1684 1684
1685@example 1685@example
1686(global-set-key "\C-x\M-l" 'make-symbolic-link) 1686(global-set-key "\C-x\M-l" 'make-symbolic-link)
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index a0710723ea2..d15a05fe777 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,20 @@
12012-12-03 Chong Yidong <cyd@gnu.org>
2
3 * symbols.texi (Symbol Properties): New node.
4 (Symbol Plists): Make it a subsection under Symbol Properties.
5 (Standard Properties): New node.
6
7 * lists.texi (Property Lists): Move here from symbols.texi.
8 (Plist Access): Rename from Other Plists.
9
10 * customize.texi (Variable Definitions):
11 * display.texi (Defining Faces):
12 * sequences.texi (Char-Tables): Fix xref.
13
14 * keymaps.texi (Key Sequences): kbd is now a function.
15
16 * commands.texi (Using Interactive): Fix index entry.
17
12012-11-24 Paul Eggert <eggert@cs.ucla.edu> 182012-11-24 Paul Eggert <eggert@cs.ucla.edu>
2 19
3 * doclicense.texi: Update to latest version from FSF. 20 * doclicense.texi: Update to latest version from FSF.
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index c42e4b3b6dc..8806c933bf3 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -141,10 +141,10 @@ A command may be called from Lisp programs like any other function, but
141then the caller supplies the arguments and @var{arg-descriptor} has no 141then the caller supplies the arguments and @var{arg-descriptor} has no
142effect. 142effect.
143 143
144@cindex @code{interactive-form}, function property 144@cindex @code{interactive-form}, symbol property
145The @code{interactive} form must be located at top-level in the 145The @code{interactive} form must be located at top-level in the
146function body, or in the function symbol's @code{interactive-form} 146function body, or in the function symbol's @code{interactive-form}
147property (@pxref{Symbol Plists}). It has its effect because the 147property (@pxref{Symbol Properties}). It has its effect because the
148command loop looks for it before calling the function 148command loop looks for it before calling the function
149(@pxref{Interactive Call}). Once the function is called, all its body 149(@pxref{Interactive Call}). Once the function is called, all its body
150forms are executed; at this time, if the @code{interactive} form 150forms are executed; at this time, if the @code{interactive} form
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index c9d22851ed2..d85361499ba 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -472,8 +472,8 @@ Internally, @code{defcustom} uses the symbol property
472@code{saved-value} to record the value saved by the user with the 472@code{saved-value} to record the value saved by the user with the
473customization buffer, and @code{customized-value} to record the value 473customization buffer, and @code{customized-value} to record the value
474set by the user with the customization buffer, but not saved. 474set by the user with the customization buffer, but not saved.
475@xref{Property Lists}. These properties are lists, the car of which 475@xref{Symbol Properties}. These properties are lists, the car of
476is an expression that evaluates to the value. 476which is an expression that evaluates to the value.
477 477
478@defun custom-reevaluate-setting symbol 478@defun custom-reevaluate-setting symbol
479This function re-evaluates the standard value of @var{symbol}, which 479This function re-evaluates the standard value of @var{symbol}, which
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 5148c6ec22e..f1b2074f457 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -2287,7 +2287,7 @@ terminal must match one of the @var{value}s specified for it in
2287@end example 2287@end example
2288 2288
2289 Internally, Emacs stores the face's default specification in its 2289 Internally, Emacs stores the face's default specification in its
2290@code{face-defface-spec} symbol property (@pxref{Property Lists}). 2290@code{face-defface-spec} symbol property (@pxref{Symbol Properties}).
2291The @code{saved-face} property stores the face specification saved by 2291The @code{saved-face} property stores the face specification saved by
2292the user, using the customization buffer; the @code{customized-face} 2292the user, using the customization buffer; the @code{customized-face}
2293property stores the face specification customized for the current 2293property stores the face specification customized for the current
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 371593f7203..3980f7ac868 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -378,6 +378,7 @@ Lists
378* Modifying Lists:: Storing new pieces into an existing list. 378* Modifying Lists:: Storing new pieces into an existing list.
379* Sets And Lists:: A list can represent a finite mathematical set. 379* Sets And Lists:: A list can represent a finite mathematical set.
380* Association Lists:: A list can represent a finite relation or mapping. 380* Association Lists:: A list can represent a finite relation or mapping.
381* Property Lists:: A list of paired elements.
381 382
382Modifying Existing List Structure 383Modifying Existing List Structure
383 384
@@ -386,6 +387,12 @@ Modifying Existing List Structure
386 This can be used to remove or add elements. 387 This can be used to remove or add elements.
387* Rearrangement:: Reordering the elements in a list; combining lists. 388* Rearrangement:: Reordering the elements in a list; combining lists.
388 389
390Property Lists
391
392* Plists and Alists:: Comparison of the advantages of property
393 lists and association lists.
394* Plist Access:: Accessing property lists stored elsewhere.
395
389Sequences, Arrays, and Vectors 396Sequences, Arrays, and Vectors
390 397
391* Sequence Functions:: Functions that accept any kind of sequence. 398* Sequence Functions:: Functions that accept any kind of sequence.
@@ -410,15 +417,13 @@ Symbols
410 and property lists. 417 and property lists.
411* Definitions:: A definition says how a symbol will be used. 418* Definitions:: A definition says how a symbol will be used.
412* Creating Symbols:: How symbols are kept unique. 419* Creating Symbols:: How symbols are kept unique.
413* Property Lists:: Each symbol has a property list 420* Symbol Properties:: Each symbol has a property list
414 for recording miscellaneous information. 421 for recording miscellaneous information.
415 422
416Property Lists 423Symbol Properties
417 424
418* Plists and Alists:: Comparison of the advantages of property 425* Symbol Plists:: Accessing symbol properties.
419 lists and association lists. 426* Standard Properties:: Standard meanings of symbol properties.
420* Symbol Plists:: Functions to access symbols' property lists.
421* Other Plists:: Accessing property lists stored elsewhere.
422 427
423Evaluation 428Evaluation
424 429
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index d01ecba4bed..d9eddcee669 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -75,8 +75,8 @@ the vector @code{[?\C-x ?l]} represents the key sequence @kbd{C-x l}.
75 For examples of key sequences written in string and vector 75 For examples of key sequences written in string and vector
76representations, @ref{Init Rebinding,,, emacs, The GNU Emacs Manual}. 76representations, @ref{Init Rebinding,,, emacs, The GNU Emacs Manual}.
77 77
78@defmac kbd keyseq-text 78@defun kbd keyseq-text
79This macro converts the text @var{keyseq-text} (a string constant) 79This function converts the text @var{keyseq-text} (a string constant)
80into a key sequence (a string or vector constant). The contents of 80into a key sequence (a string or vector constant). The contents of
81@var{keyseq-text} should use the same syntax as in the buffer invoked 81@var{keyseq-text} should use the same syntax as in the buffer invoked
82by the @kbd{C-x C-k @key{RET}} (@code{kmacro-edit-macro}) command; in 82by the @kbd{C-x C-k @key{RET}} (@code{kmacro-edit-macro}) command; in
@@ -97,7 +97,7 @@ Manual}.
97 97
98This macro is not meant for use with arguments that vary---only 98This macro is not meant for use with arguments that vary---only
99with string constants. 99with string constants.
100@end defmac 100@end defun
101 101
102@node Keymap Basics 102@node Keymap Basics
103@section Keymap Basics 103@section Keymap Basics
@@ -1294,8 +1294,8 @@ numeric codes for the modifier bits don't appear in compiled files.
1294 The functions below signal an error if @var{keymap} is not a keymap, 1294 The functions below signal an error if @var{keymap} is not a keymap,
1295or if @var{key} is not a string or vector representing a key sequence. 1295or if @var{key} is not a string or vector representing a key sequence.
1296You can use event types (symbols) as shorthand for events that are 1296You can use event types (symbols) as shorthand for events that are
1297lists. The @code{kbd} macro (@pxref{Key Sequences}) is a convenient 1297lists. The @code{kbd} function (@pxref{Key Sequences}) is a
1298way to specify the key sequence. 1298convenient way to specify the key sequence.
1299 1299
1300@defun define-key keymap key binding 1300@defun define-key keymap key binding
1301This function sets the binding for @var{key} in @var{keymap}. (If 1301This function sets the binding for @var{key} in @var{keymap}. (If
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index 40e8d08f72c..1a3d85b9b35 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -22,6 +22,7 @@ the whole list.
22* Modifying Lists:: Storing new pieces into an existing list. 22* Modifying Lists:: Storing new pieces into an existing list.
23* Sets And Lists:: A list can represent a finite mathematical set. 23* Sets And Lists:: A list can represent a finite mathematical set.
24* Association Lists:: A list can represent a finite relation or mapping. 24* Association Lists:: A list can represent a finite relation or mapping.
25* Property Lists:: A list of paired elements.
25@end menu 26@end menu
26 27
27@node Cons Cells 28@node Cons Cells
@@ -1821,3 +1822,142 @@ often modifies the original list structure of @var{alist}.
1821compares the @sc{cdr} of each @var{alist} association instead of the 1822compares the @sc{cdr} of each @var{alist} association instead of the
1822@sc{car}. 1823@sc{car}.
1823@end defun 1824@end defun
1825
1826@node Property Lists
1827@section Property Lists
1828@cindex property list
1829@cindex plist
1830
1831 A @dfn{property list} (@dfn{plist} for short) is a list of paired
1832elements. Each of the pairs associates a property name (usually a
1833symbol) with a property or value. Here is an example of a property
1834list:
1835
1836@example
1837(pine cones numbers (1 2 3) color "blue")
1838@end example
1839
1840@noindent
1841This property list associates @code{pine} with @code{cones},
1842@code{numbers} with @code{(1 2 3)}, and @code{color} with
1843@code{"blue"}. The property names and values can be any Lisp objects,
1844but the names are usually symbols (as they are in this example).
1845
1846 Property lists are used in several contexts. For instance, the
1847function @code{put-text-property} takes an argument which is a
1848property list, specifying text properties and associated values which
1849are to be applied to text in a string or buffer. @xref{Text
1850Properties}.
1851
1852 Another prominent use of property lists is for storing symbol
1853properties. Every symbol possesses a list of properties, used to
1854record miscellaneous information about the symbol; these properties
1855are stored in the form of a property list. @xref{Symbol Properties}.
1856
1857@menu
1858* Plists and Alists:: Comparison of the advantages of property
1859 lists and association lists.
1860* Plist Access:: Accessing property lists stored elsewhere.
1861@end menu
1862
1863@node Plists and Alists
1864@subsection Property Lists and Association Lists
1865@cindex plist vs. alist
1866@cindex alist vs. plist
1867
1868@cindex property lists vs association lists
1869 Association lists (@pxref{Association Lists}) are very similar to
1870property lists. In contrast to association lists, the order of the
1871pairs in the property list is not significant, since the property
1872names must be distinct.
1873
1874 Property lists are better than association lists for attaching
1875information to various Lisp function names or variables. If your
1876program keeps all such information in one association list, it will
1877typically need to search that entire list each time it checks for an
1878association for a particular Lisp function name or variable, which
1879could be slow. By contrast, if you keep the same information in the
1880property lists of the function names or variables themselves, each
1881search will scan only the length of one property list, which is
1882usually short. This is why the documentation for a variable is
1883recorded in a property named @code{variable-documentation}. The byte
1884compiler likewise uses properties to record those functions needing
1885special treatment.
1886
1887 However, association lists have their own advantages. Depending on
1888your application, it may be faster to add an association to the front of
1889an association list than to update a property. All properties for a
1890symbol are stored in the same property list, so there is a possibility
1891of a conflict between different uses of a property name. (For this
1892reason, it is a good idea to choose property names that are probably
1893unique, such as by beginning the property name with the program's usual
1894name-prefix for variables and functions.) An association list may be
1895used like a stack where associations are pushed on the front of the list
1896and later discarded; this is not possible with a property list.
1897
1898@node Plist Access
1899@subsection Property Lists Outside Symbols
1900
1901 The following functions can be used to manipulate property lists.
1902They all compare property names using @code{eq}.
1903
1904@defun plist-get plist property
1905This returns the value of the @var{property} property stored in the
1906property list @var{plist}. It accepts a malformed @var{plist}
1907argument. If @var{property} is not found in the @var{plist}, it
1908returns @code{nil}. For example,
1909
1910@example
1911(plist-get '(foo 4) 'foo)
1912 @result{} 4
1913(plist-get '(foo 4 bad) 'foo)
1914 @result{} 4
1915(plist-get '(foo 4 bad) 'bad)
1916 @result{} nil
1917(plist-get '(foo 4 bad) 'bar)
1918 @result{} nil
1919@end example
1920@end defun
1921
1922@defun plist-put plist property value
1923This stores @var{value} as the value of the @var{property} property in
1924the property list @var{plist}. It may modify @var{plist} destructively,
1925or it may construct a new list structure without altering the old. The
1926function returns the modified property list, so you can store that back
1927in the place where you got @var{plist}. For example,
1928
1929@example
1930(setq my-plist '(bar t foo 4))
1931 @result{} (bar t foo 4)
1932(setq my-plist (plist-put my-plist 'foo 69))
1933 @result{} (bar t foo 69)
1934(setq my-plist (plist-put my-plist 'quux '(a)))
1935 @result{} (bar t foo 69 quux (a))
1936@end example
1937@end defun
1938
1939 You could define @code{put} in terms of @code{plist-put} as follows:
1940
1941@example
1942(defun put (symbol prop value)
1943 (setplist symbol
1944 (plist-put (symbol-plist symbol) prop value)))
1945@end example
1946
1947@defun lax-plist-get plist property
1948Like @code{plist-get} except that it compares properties
1949using @code{equal} instead of @code{eq}.
1950@end defun
1951
1952@defun lax-plist-put plist property value
1953Like @code{plist-put} except that it compares properties
1954using @code{equal} instead of @code{eq}.
1955@end defun
1956
1957@defun plist-member plist property
1958This returns non-@code{nil} if @var{plist} contains the given
1959@var{property}. Unlike @code{plist-get}, this allows you to distinguish
1960between a missing property and a property with the value @code{nil}.
1961The value is actually the tail of @var{plist} whose @code{car} is
1962@var{property}.
1963@end defun
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index e66f61d22d3..8bb1e9e5abf 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -542,10 +542,10 @@ the function @code{char-table-subtype}, described below.
542@item 542@item
543The subtype controls the number of @dfn{extra slots} in the 543The subtype controls the number of @dfn{extra slots} in the
544char-table. This number is specified by the subtype's 544char-table. This number is specified by the subtype's
545@code{char-table-extra-slots} symbol property, which should be an 545@code{char-table-extra-slots} symbol property (@pxref{Symbol
546integer between 0 and 10. If the subtype has no such symbol property, 546Properties}), whose value should be an integer between 0 and 10. If
547the char-table has no extra slots. @xref{Property Lists}, for 547the subtype has no such symbol property, the char-table has no extra
548information about symbol properties. 548slots.
549@end itemize 549@end itemize
550 550
551@cindex parent of char-table 551@cindex parent of char-table
diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi
index 326c6cd4ab2..d3e5c1f1574 100644
--- a/doc/lispref/symbols.texi
+++ b/doc/lispref/symbols.texi
@@ -13,8 +13,8 @@ as variables and as function names; see @ref{Variables}, and
13@ref{Functions}. For the precise read syntax for symbols, see 13@ref{Functions}. For the precise read syntax for symbols, see
14@ref{Symbol Type}. 14@ref{Symbol Type}.
15 15
16 You can test whether an arbitrary Lisp object is a symbol 16 You can test whether an arbitrary Lisp object is a symbol with
17with @code{symbolp}: 17@code{symbolp}:
18 18
19@defun symbolp object 19@defun symbolp object
20This function returns @code{t} if @var{object} is a symbol, @code{nil} 20This function returns @code{t} if @var{object} is a symbol, @code{nil}
@@ -26,7 +26,7 @@ otherwise.
26 and property lists. 26 and property lists.
27* Definitions:: A definition says how a symbol will be used. 27* Definitions:: A definition says how a symbol will be used.
28* Creating Symbols:: How symbols are kept unique. 28* Creating Symbols:: How symbols are kept unique.
29* Property Lists:: Each symbol has a property list 29* Symbol Properties:: Each symbol has a property list
30 for recording miscellaneous information. 30 for recording miscellaneous information.
31@end menu 31@end menu
32 32
@@ -91,7 +91,7 @@ the contents of a symbol's function cell, use the function
91 91
92 The property list cell normally should hold a correctly formatted 92 The property list cell normally should hold a correctly formatted
93property list. To get a symbol's property list, use the function 93property list. To get a symbol's property list, use the function
94@code{symbol-plist}. @xref{Property Lists}. 94@code{symbol-plist}. @xref{Symbol Properties}.
95 95
96 The function cell or the value cell may be @dfn{void}, which means 96 The function cell or the value cell may be @dfn{void}, which means
97that the cell does not reference any object. (This is not the same 97that the cell does not reference any object. (This is not the same
@@ -376,109 +376,34 @@ If @code{unintern} does delete a symbol, it returns @code{t}. Otherwise
376it returns @code{nil}. 376it returns @code{nil}.
377@end defun 377@end defun
378 378
379@node Property Lists 379@node Symbol Properties
380@section Property Lists 380@section Symbol Properties
381@cindex property list 381@cindex symbol property
382@cindex plist
383 382
384 A @dfn{property list} (@dfn{plist} for short) is a list of paired 383 A symbol may possess any number of @dfn{symbol properties}, which
385elements. Each of the pairs associates a property name (usually a 384can be used to record miscellaneous information about the symbol. For
386symbol) with a property or value. 385example, when a symbol has a @code{risky-local-variable} property with
386a non-@code{nil} value, that means the variable which the symbol names
387is a risky file-local variable (@pxref{File Local Variables}).
387 388
388 Every symbol has a cell that stores a property list (@pxref{Symbol 389 Each symbol's properties and property values are stored in the
389Components}). This property list is used to record information about 390symbol's property list cell (@pxref{Symbol Components}), in the form
390the symbol, such as its variable documentation and the name of the 391of a property list (@pxref{Property Lists}).
391file where it was defined.
392
393 Property lists can also be used in other contexts. For instance,
394you can assign property lists to character positions in a string or
395buffer. @xref{Text Properties}.
396
397 The property names and values in a property list can be any Lisp
398objects, but the names are usually symbols. Property list functions
399compare the property names using @code{eq}. Here is an example of a
400property list, found on the symbol @code{progn} when the compiler is
401loaded:
402
403@example
404(lisp-indent-function 0 byte-compile byte-compile-progn)
405@end example
406
407@noindent
408Here @code{lisp-indent-function} and @code{byte-compile} are property
409names, and the other two elements are the corresponding values.
410 392
411@menu 393@menu
412* Plists and Alists:: Comparison of the advantages of property 394* Symbol Plists:: Accessing symbol properties.
413 lists and association lists. 395* Standard Properties:: Standard meanings of symbol properties.
414* Symbol Plists:: Functions to access symbols' property lists.
415* Other Plists:: Accessing property lists stored elsewhere.
416@end menu 396@end menu
417 397
418@node Plists and Alists
419@subsection Property Lists and Association Lists
420@cindex plist vs. alist
421@cindex alist vs. plist
422
423@cindex property lists vs association lists
424 Association lists (@pxref{Association Lists}) are very similar to
425property lists. In contrast to association lists, the order of the
426pairs in the property list is not significant since the property names
427must be distinct.
428
429 Property lists are better than association lists for attaching
430information to various Lisp function names or variables. If your
431program keeps all such information in one association list, it will
432typically need to search that entire list each time it checks for an
433association for a particular Lisp function name or variable, which
434could be slow. By contrast, if you keep the same information in the
435property lists of the function names or variables themselves, each
436search will scan only the length of one property list, which is
437usually short. This is why the documentation for a variable is
438recorded in a property named @code{variable-documentation}. The byte
439compiler likewise uses properties to record those functions needing
440special treatment.
441
442 However, association lists have their own advantages. Depending on
443your application, it may be faster to add an association to the front of
444an association list than to update a property. All properties for a
445symbol are stored in the same property list, so there is a possibility
446of a conflict between different uses of a property name. (For this
447reason, it is a good idea to choose property names that are probably
448unique, such as by beginning the property name with the program's usual
449name-prefix for variables and functions.) An association list may be
450used like a stack where associations are pushed on the front of the list
451and later discarded; this is not possible with a property list.
452
453@node Symbol Plists 398@node Symbol Plists
454@subsection Property List Functions for Symbols 399@subsection Accessing Symbol Properties
455
456@defun symbol-plist symbol
457This function returns the property list of @var{symbol}.
458@end defun
459
460@defun setplist symbol plist
461This function sets @var{symbol}'s property list to @var{plist}.
462Normally, @var{plist} should be a well-formed property list, but this is
463not enforced. The return value is @var{plist}.
464 400
465@example 401 The following functions can be used to access symbol properties.
466(setplist 'foo '(a 1 b (2 3) c nil))
467 @result{} (a 1 b (2 3) c nil)
468(symbol-plist 'foo)
469 @result{} (a 1 b (2 3) c nil)
470@end example
471
472For symbols in special obarrays, which are not used for ordinary
473purposes, it may make sense to use the property list cell in a
474nonstandard fashion; in fact, the abbrev mechanism does so
475(@pxref{Abbrevs}).
476@end defun
477 402
478@defun get symbol property 403@defun get symbol property
479This function finds the value of the property named @var{property} in 404This function returns the value of the property named @var{property}
480@var{symbol}'s property list. If there is no such property, @code{nil} 405in @var{symbol}'s property list. If there is no such property, it
481is returned. Thus, there is no distinction between a value of 406returns @code{nil}. Thus, there is no distinction between a value of
482@code{nil} and the absence of the property. 407@code{nil} and the absence of the property.
483 408
484The name @var{property} is compared with the existing property names 409The name @var{property} is compared with the existing property names
@@ -487,12 +412,6 @@ using @code{eq}, so any object is a legitimate property.
487See @code{put} for an example. 412See @code{put} for an example.
488@end defun 413@end defun
489 414
490@defun function-get symbol property
491This function is identical to @code{get}, except that if @var{symbol}
492is the name of a function alias, it looks in the property list of the
493symbol naming the actual function. @xref{Defining Functions}.
494@end defun
495
496@defun put symbol property value 415@defun put symbol property value
497This function puts @var{value} onto @var{symbol}'s property list under 416This function puts @var{value} onto @var{symbol}'s property list under
498the property name @var{property}, replacing any previous property value. 417the property name @var{property}, replacing any previous property value.
@@ -510,69 +429,132 @@ The @code{put} function returns @var{value}.
510@end example 429@end example
511@end defun 430@end defun
512 431
513@node Other Plists 432@defun symbol-plist symbol
514@subsection Property Lists Outside Symbols 433This function returns the property list of @var{symbol}.
515
516 These functions are useful for manipulating property lists
517not stored in symbols:
518
519@defun plist-get plist property
520This returns the value of the @var{property} property stored in the
521property list @var{plist}. It accepts a malformed @var{plist}
522argument. If @var{property} is not found in the @var{plist}, it
523returns @code{nil}. For example,
524
525@example
526(plist-get '(foo 4) 'foo)
527 @result{} 4
528(plist-get '(foo 4 bad) 'foo)
529 @result{} 4
530(plist-get '(foo 4 bad) 'bad)
531 @result{} nil
532(plist-get '(foo 4 bad) 'bar)
533 @result{} nil
534@end example
535@end defun
536
537@defun plist-put plist property value
538This stores @var{value} as the value of the @var{property} property in
539the property list @var{plist}. It may modify @var{plist} destructively,
540or it may construct a new list structure without altering the old. The
541function returns the modified property list, so you can store that back
542in the place where you got @var{plist}. For example,
543
544@example
545(setq my-plist '(bar t foo 4))
546 @result{} (bar t foo 4)
547(setq my-plist (plist-put my-plist 'foo 69))
548 @result{} (bar t foo 69)
549(setq my-plist (plist-put my-plist 'quux '(a)))
550 @result{} (bar t foo 69 quux (a))
551@end example
552@end defun 434@end defun
553 435
554 You could define @code{put} in terms of @code{plist-put} as follows: 436@defun setplist symbol plist
437This function sets @var{symbol}'s property list to @var{plist}.
438Normally, @var{plist} should be a well-formed property list, but this is
439not enforced. The return value is @var{plist}.
555 440
556@example 441@example
557(defun put (symbol prop value) 442(setplist 'foo '(a 1 b (2 3) c nil))
558 (setplist symbol 443 @result{} (a 1 b (2 3) c nil)
559 (plist-put (symbol-plist symbol) prop value))) 444(symbol-plist 'foo)
445 @result{} (a 1 b (2 3) c nil)
560@end example 446@end example
561 447
562@defun lax-plist-get plist property 448For symbols in special obarrays, which are not used for ordinary
563Like @code{plist-get} except that it compares properties 449purposes, it may make sense to use the property list cell in a
564using @code{equal} instead of @code{eq}. 450nonstandard fashion; in fact, the abbrev mechanism does so
451(@pxref{Abbrevs}).
565@end defun 452@end defun
566 453
567@defun lax-plist-put plist property value 454@defun function-get symbol property
568Like @code{plist-put} except that it compares properties 455This function is identical to @code{get}, except that if @var{symbol}
569using @code{equal} instead of @code{eq}. 456is the name of a function alias, it looks in the property list of the
457symbol naming the actual function. @xref{Defining Functions}.
570@end defun 458@end defun
571 459
572@defun plist-member plist property 460@node Standard Properties
573This returns non-@code{nil} if @var{plist} contains the given 461@subsection Standard Symbol Properties
574@var{property}. Unlike @code{plist-get}, this allows you to distinguish 462
575between a missing property and a property with the value @code{nil}. 463 Here, we list the symbol properties which are used for special
576The value is actually the tail of @var{plist} whose @code{car} is 464purposes in Emacs. In the following table, whenever we say ``the
577@var{property}. 465named function'', that means the function whose name is the relevant
578@end defun 466symbol; similarly for ``the named variable'' etc.
467
468@table @code
469@item :advertised-binding
470This property value specifies the preferred key binding, when showing
471documentation, for the named function. @xref{Keys in Documentation}.
472
473@item char-table-extra-slots
474The value, if non-@code{nil}, specifies the number of extra slots in
475the named char-table type. @xref{Char-Tables}.
476
477@itemx customized-face
478@item face-defface-spec
479@itemx saved-face
480@itemx theme-face
481These properties are used to record a face's standard, saved,
482customized, and themed face specs. Do not set them directly; they are
483managed by @code{defface} and related functions. @xref{Defining
484Faces}.
485
486@itemx customized-value
487@itemx saved-value
488@item standard-value
489@itemx theme-value
490These properties are used to record a customizable variable's standard
491value, saved value, customized-but-unsaved value, and themed values.
492Do not set them directly; they are managed by @code{defcustom} and
493related functions. @xref{Variable Definitions}.
494
495@item disabled
496If the value is non-@code{nil}, the named function is disabled as a
497command. @xref{Disabling Commands}.
498
499@item face-documentation
500The value stores the documentation string of the named face. This is
501normally set automatically by @code{defface}. @xref{Defining Faces}.
502
503@item history-length
504The value, if non-@code{nil}, specifies the maximum minibuffer history
505length for the named history list variable. @xref{Minibuffer
506History}.
507
508@item interactive-form
509The value is an interactive form for the named function. Normally,
510you should not set this directly; use the @code{interactive} special
511form instead. @xref{Interactive Call}.
512
513@item menu-enable
514The value is an expression for determining whether the named menu item
515should be enabled in menus. @xref{Simple Menu Items}.
516
517@item mode-class
518If the value is @code{special}, the named major mode is ``special''.
519@xref{Major Mode Conventions}.
520
521@item permanent-local
522If the value is non-@code{nil}, the named variable is a buffer-local
523variable whose value should not be reset when changing major modes.
524@xref{Creating Buffer-Local}.
525
526@item permanent-local-hook
527If the value is non-@code{nil}, the named function should not be
528deleted from the local value of a hook variable when changing major
529modes. @xref{Setting Hooks}.
530
531@item pure
532This property is used internally to mark certain named functions for
533byte compiler optimization. Do not set it.
534
535@item risky-local-variable
536If the value is non-@code{nil}, the named variable is considered risky
537as a file-local variable. @xref{File Local Variables}.
538
539@item safe-function
540If the value is non-@code{nil}, the named function is considered
541generally safe for evaluation. @xref{Function Safety}.
542
543@item safe-local-eval-function
544If the value is non-@code{nil}, the named function is safe to call in
545file-local evaluation forms. @xref{File Local Variables}.
546
547@item safe-local-variable
548The value specifies a function for determining safe file-local values
549for the named variable. @xref{File Local Variables}.
550
551@item side-effect-free
552A non-@code{nil} value indicates that the named function is free of
553side-effects, for determining function safety (@pxref{Function
554Safety}) as well as for byte compiler optimizations. Do not set it.
555
556@item variable-documentation
557If non-@code{nil}, this specifies the named vaariable's documentation
558string. This is normally set automatically by @code{defvar} and
559related functions. @xref{Defining Faces}.
560@end table
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index dfde3c45c04..2168bd5af05 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1423,7 +1423,6 @@ disappear after doing its job and will not interfere with the
1423subsequent major mode. @xref{Hooks}. 1423subsequent major mode. @xref{Hooks}.
1424@end defvar 1424@end defvar
1425 1425
1426@c Emacs 19 feature
1427@cindex permanent local variable 1426@cindex permanent local variable
1428A buffer-local variable is @dfn{permanent} if the variable name (a 1427A buffer-local variable is @dfn{permanent} if the variable name (a
1429symbol) has a @code{permanent-local} property that is non-@code{nil}. 1428symbol) has a @code{permanent-local} property that is non-@code{nil}.
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 8a067b5c100..f5e5007c58d 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,12 @@
12012-12-03 Michael Albinus <michael.albinus@gmx.de>
2
3 * tramp.texi (Top, Obtaining Tramp): Replace CVS by Git.
4 (External methods): Fix typo.
5
62012-12-03 Glenn Morris <rgm@gnu.org>
7
8 * rcirc.texi (Notices): Fix typo.
9
12012-11-25 Bill Wohler <wohler@newt.com> 102012-11-25 Bill Wohler <wohler@newt.com>
2 11
3 Release MH-E manual version 8.4. 12 Release MH-E manual version 8.4.
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index 0174c3fa87f..ac97db414a4 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -764,7 +764,7 @@ You can control which notices get omitted via the
764omit away messages: 764omit away messages:
765 765
766@example 766@example
767(setq rcirc-omit-responses '("JOIN" "PART" "QUIT" "NICK" "AWAY)) 767(setq rcirc-omit-responses '("JOIN" "PART" "QUIT" "NICK" "AWAY"))
768@end example 768@end example
769 769
770@vindex rcirc-omit-threshold 770@vindex rcirc-omit-threshold
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index a983f76ffd3..020a6e55833 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -7,7 +7,7 @@
7@c This is *so* much nicer :) 7@c This is *so* much nicer :)
8@footnotestyle end 8@footnotestyle end
9 9
10@c In the Tramp CVS, the version number is auto-frobbed from 10@c In the Tramp repository, the version number is auto-frobbed from
11@c configure.ac, so you should edit that file and run 11@c configure.ac, so you should edit that file and run
12@c "autoconf && ./configure" to change the version number. 12@c "autoconf && ./configure" to change the version number.
13 13
@@ -106,7 +106,7 @@ If you're using the other Emacs flavor, you should read the
106@ifhtml 106@ifhtml
107The latest release of @value{tramp} is available for 107The latest release of @value{tramp} is available for
108@uref{ftp://ftp.gnu.org/gnu/tramp/, download}, or you may see 108@uref{ftp://ftp.gnu.org/gnu/tramp/, download}, or you may see
109@ref{Obtaining Tramp} for more details, including the CVS server 109@ref{Obtaining Tramp} for more details, including the Git server
110details. 110details.
111 111
112@value{tramp} also has a @uref{http://savannah.gnu.org/projects/tramp/, 112@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
377for XEmacs, as well. So maybe it is easier to just use those. But if 377for XEmacs, as well. So maybe it is easier to just use those. But if
378you want the bleeding edge, read on@dots{...} 378you want the bleeding edge, read on@dots{...}
379 379
380For the especially brave, @value{tramp} is available from CVS. The CVS 380For the especially brave, @value{tramp} is available from Git. The Git
381version is the latest version of the code and may contain incomplete 381version is the latest version of the code and may contain incomplete
382features or new issues. Use these versions at your own risk. 382features or new issues. Use these versions at your own risk.
383 383
384Instructions for obtaining the latest development version of @value{tramp} 384Instructions for obtaining the latest development version of @value{tramp}
385from CVS can be found by going to the Savannah project page at the 385from Git can be found by going to the Savannah project page at the
386following URL and then clicking on the CVS link in the navigation bar 386following URL and then clicking on the Git link in the navigation bar
387at the top. 387at the top.
388 388
389@noindent 389@noindent
@@ -394,8 +394,14 @@ Or follow the example session below:
394 394
395@example 395@example
396] @strong{cd ~/@value{emacsdir}} 396] @strong{cd ~/@value{emacsdir}}
397] @strong{export CVS_RSH="ssh"} 397] @strong{git clone git://git.savannah.gnu.org/tramp.git}
398] @strong{cvs -z3 -d:pserver:anonymous@@cvs.savannah.gnu.org:/sources/tramp co tramp} 398@end example
399
400@noindent
401Tramp developers use instead
402
403@example
404] @strong{git clone login@@git.sv.gnu.org:/srv/git/tramp.git}
399@end example 405@end example
400 406
401@noindent 407@noindent
@@ -405,12 +411,11 @@ updates from the repository by issuing the command:
405 411
406@example 412@example
407] @strong{cd ~/@value{emacsdir}/tramp} 413] @strong{cd ~/@value{emacsdir}/tramp}
408] @strong{export CVS_RSH="ssh"} 414] @strong{git pull}
409] @strong{cvs update -d}
410@end example 415@end example
411 416
412@noindent 417@noindent
413Once you've got updated files from the CVS repository, you need to run 418Once you've got updated files from the Git repository, you need to run
414@command{autoconf} in order to get an up-to-date @file{configure} 419@command{autoconf} in order to get an up-to-date @file{configure}
415script: 420script:
416 421
@@ -980,7 +985,7 @@ This works only for unified filenames, see @ref{Issues}.
980@cindex method smb 985@cindex method smb
981@cindex smb method 986@cindex smb method
982 987
983This is another not natural @value{tramp} method. It uses the 988This is another not native @value{tramp} method. It uses the
984@command{smbclient} command on different Unices in order to connect to 989@command{smbclient} command on different Unices in order to connect to
985an SMB server. An SMB server might be a Samba (or CIFS) server on 990an SMB server. An SMB server might be a Samba (or CIFS) server on
986another UNIX host or, more interesting, a host running MS Windows. So 991another UNIX host or, more interesting, a host running MS Windows. So
diff --git a/etc/NEWS b/etc/NEWS
index 05a57e9afe7..fd1e5bb2a21 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -812,9 +812,9 @@ The function `user-variable-p' is now an obsolete alias for
812 812
813+++ 813+++
814** The return values of `defalias', `defun' and `defmacro' have changed, 814** The return values of `defalias', `defun' and `defmacro' have changed,
815and are now undefined. For backwards compatibility, defun and 815and are now undefined. For backwards compatibility, `defun' and
816defmacro currently return the name of the newly defined function/macro 816`defmacro' currently return the name of the newly defined
817but this should not be relied upon. 817function/macro, but this should not be relied upon.
818 818
819--- 819---
820** `face-spec-set' no longer sets frame-specific attributes when the 820** `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).
1061+++ 1061+++
1062** New macros `setq-local' and `defvar-local'. 1062** New macros `setq-local' and `defvar-local'.
1063 1063
1064** Changes to special forms and macros
1065+++
1066*** `defun' and `defmacro' are now macros rather than special forms
1067+++
1068*** `kbd' is now a function rather than a macro.
1069
1064+++ 1070+++
1065** New fringe bitmap `exclamation-mark'. 1071** New fringe bitmap `exclamation-mark'.
1066 1072
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 1fd8fffa8a8..bb14f1340df 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,31 @@
12012-12-03 Leo Liu <sdl.web@gmail.com>
2
3 * files.el (dir-locals-read-from-file): Check file non-empty
4 before reading. (Bug#13038)
5
62012-12-03 Glenn Morris <rgm@gnu.org>
7
8 * jka-cmpr-hook.el (jka-compr-get-compression-info):
9 Remove any version extension before checking filename. (Bug#13006)
10 (jka-compr-compression-info-list): Belated :version bump.
11
122012-12-03 Chong Yidong <cyd@gnu.org>
13
14 * simple.el (transient-mark-mode): Doc fix (Bug#11523).
15
16 * buff-menu.el (Buffer-menu-delete-backwards, Buffer-menu-mode)
17 (buffer-menu): Doc fix (Bug#12294).
18
192012-12-03 Roland Winkler <winkler@gnu.org>
20
21 * calendar/diary-lib.el (diary-header-line-format): Use keybinding
22 of diary-show-all-entries in the diary buffer (Bug#12994).
23
242012-12-03 Michael Albinus <michael.albinus@gmx.de>
25
26 * net/tramp-sh.el (tramp-perl-encode): Use "read STDIN" instead of
27 "<STDIN>". This is binary safe.
28
12012-12-03 Jay Belanger <jay.p.belanger@gmail.com> 292012-12-03 Jay Belanger <jay.p.belanger@gmail.com>
2 30
3 * calc/calc-forms.el (math-absolute-from-iso-dt) 31 * calc/calc-forms.el (math-absolute-from-iso-dt)
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 01035f8727d..3161973ba32 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -204,31 +204,11 @@ commands.")
204 204
205(define-derived-mode Buffer-menu-mode tabulated-list-mode "Buffer Menu" 205(define-derived-mode Buffer-menu-mode tabulated-list-mode "Buffer Menu"
206 "Major mode for Buffer Menu buffers. 206 "Major mode for Buffer Menu buffers.
207The Buffer Menu is invoked by the commands \\[list-buffers], \\[buffer-menu], and 207The Buffer Menu is invoked by the commands \\[list-buffers],
208\\[buffer-menu-other-window]. See `buffer-menu' for details." 208\\[buffer-menu], and \\[buffer-menu-other-window].
209 (set (make-local-variable 'buffer-stale-function) 209See `buffer-menu' for a description of its contents.
210 (lambda (&optional _noconfirm) 'fast))
211 (add-hook 'tabulated-list-revert-hook 'list-buffers--refresh nil t))
212
213(defun buffer-menu (&optional arg)
214 "Switch to the Buffer Menu.
215By default, all buffers are listed except those whose names start
216with a space (which are for internal use). With prefix argument
217ARG, show only buffers that are visiting files.
218
219The first column (denoted \"C\") shows \".\" for the buffer from
220which you came. It shows \">\" for buffers you mark to be
221displayed, and \"D\" for those you mark for deletion.
222
223The \"R\" column has a \"%\" if the buffer is read-only.
224The \"M\" column has a \"*\" if it is modified, or \"S\" if you
225have marked it for saving.
226
227After this come the buffer name, its size in characters, its
228major mode, and the visited file name (if any).
229
230 210
231In the Buffer Menu, the following commands are defined: 211In Buffer Menu mode, the following commands are defined:
232\\<Buffer-menu-mode-map> 212\\<Buffer-menu-mode-map>
233\\[quit-window] Remove the Buffer Menu from the display. 213\\[quit-window] Remove the Buffer Menu from the display.
234\\[Buffer-menu-this-window] Select current line's buffer in place of the buffer menu. 214\\[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:
244\\[Buffer-menu-1-window] Select that buffer in full-frame window. 224\\[Buffer-menu-1-window] Select that buffer in full-frame window.
245\\[Buffer-menu-2-window] Select that buffer in one window, together with the 225\\[Buffer-menu-2-window] Select that buffer in one window, together with the
246 buffer selected before this one in another window. 226 buffer selected before this one in another window.
247\\[Buffer-menu-isearch-buffers] Incremental search in the marked buffers. 227\\[Buffer-menu-isearch-buffers] Incremental search in the marked buffers.
248\\[Buffer-menu-isearch-buffers-regexp] Isearch for regexp in the marked buffers. 228\\[Buffer-menu-isearch-buffers-regexp] Isearch for regexp in the marked buffers.
249\\[Buffer-menu-visit-tags-table] visit-tags-table this buffer. 229\\[Buffer-menu-visit-tags-table] visit-tags-table this buffer.
250\\[Buffer-menu-not-modified] Clear modified-flag on that buffer. 230\\[Buffer-menu-not-modified] Clear modified-flag on that buffer.
@@ -259,6 +239,29 @@ In the Buffer Menu, the following commands are defined:
259\\[revert-buffer] Update the list of buffers. 239\\[revert-buffer] Update the list of buffers.
260\\[Buffer-menu-toggle-files-only] Toggle whether the menu displays only file buffers. 240\\[Buffer-menu-toggle-files-only] Toggle whether the menu displays only file buffers.
261\\[Buffer-menu-bury] Bury the buffer listed on this line." 241\\[Buffer-menu-bury] Bury the buffer listed on this line."
242 (set (make-local-variable 'buffer-stale-function)
243 (lambda (&optional _noconfirm) 'fast))
244 (add-hook 'tabulated-list-revert-hook 'list-buffers--refresh nil t))
245
246(defun buffer-menu (&optional arg)
247 "Switch to the Buffer Menu.
248By default, the Buffer Menu lists all buffers except those whose
249names start with a space (which are for internal use). With
250prefix argument ARG, show only buffers that are visiting files.
251
252In the Buffer Menu, the first column (denoted \"C\") shows \".\"
253for the buffer from which you came, \">\" for buffers you mark to
254be displayed, and \"D\" for those you mark for deletion.
255
256The \"R\" column has a \"%\" if the buffer is read-only.
257The \"M\" column has a \"*\" if it is modified, or \"S\" if you
258have marked it for saving.
259
260The remaining columns show the buffer name, the buffer size in
261characters, its major mode, and the visited file name (if any).
262
263See `Buffer-menu-mode' for the keybindings available the Buffer
264Menu."
262 (interactive "P") 265 (interactive "P")
263 (switch-to-buffer (list-buffers-noselect arg)) 266 (switch-to-buffer (list-buffers-noselect arg))
264 (message 267 (message
@@ -280,7 +283,7 @@ ARG, show only buffers that are visiting files."
280(defun list-buffers (&optional arg) 283(defun list-buffers (&optional arg)
281 "Display a list of existing buffers. 284 "Display a list of existing buffers.
282The list is displayed in a buffer named \"*Buffer List*\". 285The list is displayed in a buffer named \"*Buffer List*\".
283See `buffer-menu' for details about the Buffer Menu buffer. 286See `buffer-menu' for a description of the Buffer Menu.
284 287
285By default, all buffers are listed except those whose names start 288By default, all buffers are listed except those whose names start
286with a space (which are for internal use). With prefix argument 289with a space (which are for internal use). With prefix argument
@@ -377,7 +380,9 @@ buffers to delete; a negative ARG means to delete backwards."
377 380
378(defun Buffer-menu-delete-backwards (&optional arg) 381(defun Buffer-menu-delete-backwards (&optional arg)
379 "Mark the buffer on this Buffer Menu line for deletion, and move up. 382 "Mark the buffer on this Buffer Menu line for deletion, and move up.
380Prefix ARG means move that many lines." 383A subsequent \\<Buffer-menu-mode-map>`\\[Buffer-menu-execute]'
384command will delete the marked buffer. Prefix ARG means move
385that many lines."
381 (interactive "p") 386 (interactive "p")
382 (Buffer-menu-delete (- (or arg 1)))) 387 (Buffer-menu-delete (- (or arg 1))))
383 388
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 27c6f76581c..46a7f703019 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -444,8 +444,7 @@ The format of the header is specified by `diary-header-line-format'."
444(defcustom diary-header-line-format 444(defcustom diary-header-line-format
445 '(:eval (calendar-string-spread 445 '(:eval (calendar-string-spread
446 (list (if diary-selective-display 446 (list (if diary-selective-display
447 "Some text is hidden - press \"s\" in calendar \ 447 "Some text is hidden - press \"C-c C-s\" before edit/copy"
448before edit/copy"
449 "Diary")) 448 "Diary"))
450 ?\s (window-width))) 449 ?\s (window-width)))
451 "Format of the header line displayed by `diary-simple-display'. 450 "Format of the header line displayed by `diary-simple-display'.
diff --git a/lisp/files.el b/lisp/files.el
index 1bb140c0562..c8a75f67820 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3640,14 +3640,15 @@ is found. Returns the new class name."
3640 (condition-case err 3640 (condition-case err
3641 (progn 3641 (progn
3642 (insert-file-contents file) 3642 (insert-file-contents file)
3643 (let* ((dir-name (file-name-directory file)) 3643 (unless (zerop (buffer-size))
3644 (class-name (intern dir-name)) 3644 (let* ((dir-name (file-name-directory file))
3645 (variables (let ((read-circle nil)) 3645 (class-name (intern dir-name))
3646 (read (current-buffer))))) 3646 (variables (let ((read-circle nil))
3647 (dir-locals-set-class-variables class-name variables) 3647 (read (current-buffer)))))
3648 (dir-locals-set-directory-class dir-name class-name 3648 (dir-locals-set-class-variables class-name variables)
3649 (nth 5 (file-attributes file))) 3649 (dir-locals-set-directory-class dir-name class-name
3650 class-name)) 3650 (nth 5 (file-attributes file)))
3651 class-name)))
3651 (error (message "Error reading dir-locals: %S" err) nil))))) 3652 (error (message "Error reading dir-locals: %S" err) nil)))))
3652 3653
3653(defcustom enable-remote-dir-locals nil 3654(defcustom enable-remote-dir-locals nil
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index d0dfd100f44..0aef3732ad5 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,12 @@
12012-12-03 Andreas Schwab <schwab@linux-m68k.org>
2
3 * gnus-sum.el (gnus-summary-mode-map): Bind gnus-summary-widget-forward
4 to TAB, not [tab].
5 (gnus-summary-article-map): Likewise.
6
7 * gnus-sync.el (gnus-sync-newsrc-offsets): Restore definition.
8 (gnus-sync-save): Use correct format for gnus-sync-newsrc-loader.
9
12012-11-19 Katsumi Yamaoka <yamaoka@jpl.org> 102012-11-19 Katsumi Yamaoka <yamaoka@jpl.org>
2 11
3 * message.el (message-get-reply-headers): 12 * message.el (message-get-reply-headers):
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index b44b953bec6..1d4f470aea2 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -1911,7 +1911,7 @@ increase the score of each group you read."
1911 "a" gnus-summary-post-news 1911 "a" gnus-summary-post-news
1912 "x" gnus-summary-limit-to-unread 1912 "x" gnus-summary-limit-to-unread
1913 "s" gnus-summary-isearch-article 1913 "s" gnus-summary-isearch-article
1914 [tab] gnus-summary-widget-forward 1914 "\t" gnus-summary-widget-forward
1915 [backtab] gnus-summary-widget-backward 1915 [backtab] gnus-summary-widget-backward
1916 "t" gnus-summary-toggle-header 1916 "t" gnus-summary-toggle-header
1917 "g" gnus-summary-show-article 1917 "g" gnus-summary-show-article
@@ -2076,7 +2076,7 @@ increase the score of each group you read."
2076 "W" gnus-warp-to-article 2076 "W" gnus-warp-to-article
2077 "g" gnus-summary-show-article 2077 "g" gnus-summary-show-article
2078 "s" gnus-summary-isearch-article 2078 "s" gnus-summary-isearch-article
2079 [tab] gnus-summary-widget-forward 2079 "\t" gnus-summary-widget-forward
2080 [backtab] gnus-summary-widget-backward 2080 [backtab] gnus-summary-widget-backward
2081 "P" gnus-summary-print-article 2081 "P" gnus-summary-print-article
2082 "S" gnus-sticky-article 2082 "S" gnus-sticky-article
diff --git a/lisp/gnus/gnus-sync.el b/lisp/gnus/gnus-sync.el
index b5f8379e367..c235892a9d3 100644
--- a/lisp/gnus/gnus-sync.el
+++ b/lisp/gnus/gnus-sync.el
@@ -109,6 +109,12 @@ this setting is harmless until the user chooses a sync backend."
109 :group 'gnus-sync 109 :group 'gnus-sync
110 :type '(repeat regexp)) 110 :type '(repeat regexp))
111 111
112(defcustom gnus-sync-newsrc-offsets '(2 3)
113 "List of per-group data to be synchronized."
114 :group 'gnus-sync
115 :type '(set (const :tag "Read ranges" 2)
116 (const :tag "Marks" 3)))
117
112(defcustom gnus-sync-global-vars nil 118(defcustom gnus-sync-global-vars nil
113 "List of global variables to be synchronized. 119 "List of global variables to be synchronized.
114You may want to sync `gnus-newsrc-last-checked-date' but pretty 120You 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."
743 ;; entry in gnus-newsrc-alist whose group matches any of the 749 ;; entry in gnus-newsrc-alist whose group matches any of the
744 ;; gnus-sync-newsrc-groups 750 ;; gnus-sync-newsrc-groups
745 ;; TODO: keep the old contents for groups we don't have! 751 ;; TODO: keep the old contents for groups we don't have!
746 (let ((gnus-sync-newsrc-loader (gnus-sync-newsrc-loader-builder))) 752 (let ((gnus-sync-newsrc-loader
753 (loop for entry in (cdr gnus-newsrc-alist)
754 when (gnus-grep-in-list
755 (car entry) ;the group name
756 gnus-sync-newsrc-groups)
757 collect (cons (car entry)
758 (mapcar (lambda (offset)
759 (cons offset (nth offset entry)))
760 gnus-sync-newsrc-offsets)))))
747 (with-temp-file gnus-sync-backend 761 (with-temp-file gnus-sync-backend
748 (progn 762 (progn
749 (let ((coding-system-for-write gnus-ding-file-coding-system) 763 (let ((coding-system-for-write gnus-ding-file-coding-system)
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index e4743ada045..75d1bbbad6b 100644
--- a/lisp/jka-cmpr-hook.el
+++ b/lisp/jka-cmpr-hook.el
@@ -109,6 +109,7 @@ Otherwise, it is nil.")
109 "Return information about the compression scheme of FILENAME. 109 "Return information about the compression scheme of FILENAME.
110The determination as to which compression scheme, if any, to use is 110The determination as to which compression scheme, if any, to use is
111based on the filename itself and `jka-compr-compression-info-list'." 111based on the filename itself and `jka-compr-compression-info-list'."
112 (setq filename (file-name-sans-versions filename))
112 (catch 'compression-info 113 (catch 'compression-info
113 (let ((case-fold-search nil)) 114 (let ((case-fold-search nil))
114 (dolist (x jka-compr-compression-info-list) 115 (dolist (x jka-compr-compression-info-list)
@@ -191,19 +192,6 @@ options through Custom does this automatically."
191 192
192;; I have this defined so that .Z files are assumed to be in unix 193;; I have this defined so that .Z files are assumed to be in unix
193;; compress format; and .gz files, in gzip format, and .bz2 files in bzip fmt. 194;; compress format; and .gz files, in gzip format, and .bz2 files in bzip fmt.
194
195;; FIXME? It seems ugly that one has to add "\\(~\\|\\.~[0-9]+~\\)?" to
196;; all the regexps here, in order to match backup files etc.
197;; It's trivial to modify jka-compr-get-compression-info to match
198;; regexps against file-name-sans-versions, but this regexp is also
199;; used to build a file-name-handler-alist entry.
200;; find-file-name-handler does not use file-name-sans-versions.
201;; Perhaps it should,
202;; http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg00812.html,
203;; but it's used all over the place and there are probably other ramifications.
204;; One could modify jka-compr-build-file-regexp to add the backup regexp,
205;; but jka-compr-compression-info-list is a defcustom to which
206;; anything could be added, so it's easiest to leave things as they are.
207(defcustom jka-compr-compression-info-list 195(defcustom jka-compr-compression-info-list
208 ;;[regexp 196 ;;[regexp
209 ;; compr-message compr-prog compr-args 197 ;; compr-message compr-prog compr-args
@@ -310,6 +298,7 @@ variables. Setting this through Custom does that automatically."
310 (boolean :tag "Strip Extension") 298 (boolean :tag "Strip Extension")
311 (string :tag "Magic Bytes"))) 299 (string :tag "Magic Bytes")))
312 :set 'jka-compr-set 300 :set 'jka-compr-set
301 :version "24.1" ; removed version extension piece
313 :group 'jka-compr) 302 :group 'jka-compr)
314 303
315(defcustom jka-compr-mode-alist-additions 304(defcustom jka-compr-mode-alist-additions
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 07da0b3dc16..340b7ad353d 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -813,14 +813,11 @@ my %%trans = do {
813 map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)} 813 map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)}
814 split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/); 814 split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/);
815}; 815};
816 816my $data;
817binmode(\\*STDIN);
818 817
819# We read in chunks of 54 bytes, to generate output lines 818# We read in chunks of 54 bytes, to generate output lines
820# of 72 chars (plus end of line) 819# of 72 chars (plus end of line)
821$/ = \\54; 820while (read STDIN, $data, 54) {
822
823while (my $data = <STDIN>) {
824 my $pad = q(); 821 my $pad = q();
825 822
826 # Only for the last chunk, and only if did not fill the last three-byte packet 823 # Only for the last chunk, and only if did not fill the last three-byte packet
diff --git a/lisp/simple.el b/lisp/simple.el
index ecd02545b41..c86f367c8a8 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4333,14 +4333,14 @@ else--for example, incremental search, \\[beginning-of-buffer], and \\[end-of-bu
4333You can also deactivate the mark by typing \\[keyboard-quit] or 4333You can also deactivate the mark by typing \\[keyboard-quit] or
4334\\[keyboard-escape-quit]. 4334\\[keyboard-escape-quit].
4335 4335
4336Many commands change their behavior when Transient Mark mode is in effect 4336Many commands change their behavior when Transient Mark mode is
4337and the mark is active, by acting on the region instead of their usual 4337in effect and the mark is active, by acting on the region instead
4338default part of the buffer's text. Examples of such commands include 4338of their usual default part of the buffer's text. Examples of
4339\\[comment-dwim], \\[flush-lines], \\[keep-lines], \ 4339such commands include \\[comment-dwim], \\[flush-lines], \\[keep-lines],
4340\\[query-replace], \\[query-replace-regexp], \\[ispell], and \\[undo]. 4340\\[query-replace], \\[query-replace-regexp], \\[ispell], and \\[undo].
4341Invoke \\[apropos-documentation] and type \"transient\" or 4341To see the documentation of commands which are sensitive to the
4342\"mark.*active\" at the prompt, to see the documentation of 4342Transient Mark mode, invoke \\[apropos-documentation] and type \"transient\"
4343commands which are sensitive to the Transient Mark mode." 4343or \"mark.*active\" at the prompt."
4344 :global t 4344 :global t
4345 ;; It's defined in C/cus-start, this stops the d-m-m macro defining it again. 4345 ;; It's defined in C/cus-start, this stops the d-m-m macro defining it again.
4346 :variable transient-mark-mode) 4346 :variable transient-mark-mode)
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
index 753931ae097..1fdd9316847 100644
--- a/msdos/ChangeLog
+++ b/msdos/ChangeLog
@@ -1,3 +1,8 @@
12012-12-03 Eli Zaretskii <eliz@gnu.org>
2
3 * sed1v2.inp: Dump emacs.exe and copy to b-emacs.exe before
4 generating leim-list.el.
5
12012-11-24 Ken Brown <kbrown@cornell.edu> 62012-11-24 Ken Brown <kbrown@cornell.edu>
2 7
3 * sed2v2.inp (HAVE_MOUSE): Remove. 8 * sed2v2.inp (HAVE_MOUSE): Remove.
diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp
index 84f24bf2c1a..0ee7510bec1 100644
--- a/msdos/sed1v2.inp
+++ b/msdos/sed1v2.inp
@@ -157,6 +157,12 @@ s/^ [^ ]*move-if-change / update /
157/^ echo[ ][ ]*timestamp/s/echo /djecho / 157/^ echo[ ][ ]*timestamp/s/echo /djecho /
158/^ .*djecho timestamp/a\ 158/^ .*djecho timestamp/a\
159 @rm -f gl-tmp 159 @rm -f gl-tmp
160/^ cd \$(leimdir) && \$(MAKE)/i\
161 $(RUN_TEMACS) -batch -l loadup dump\
162 stubify emacs\
163 stubedit emacs.exe minstack=2048k\
164 rm -f b-emacs$(EXEEXT)\
165 cp emacs$(EXEEXT) b-emacs$(EXEEXT)
160/^ cd \$(leimdir) && \$(MAKE)/c\ 166/^ cd \$(leimdir) && \$(MAKE)/c\
161 $(MAKE) $(MFLAGS) -C $(leimdir) leim-list.el EMACS=$(bootstrap_exe) 167 $(MAKE) $(MFLAGS) -C $(leimdir) leim-list.el EMACS=$(bootstrap_exe)
162/^ cd \$(lib) && \$(MAKE)/c\ 168/^ cd \$(lib) && \$(MAKE)/c\
diff --git a/src/ChangeLog b/src/ChangeLog
index d5794b513e6..0808dad2c93 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,25 @@
12012-12-03 Chong Yidong <cyd@gnu.org>
2
3 * fileio.c (Vauto_save_list_file_name): Doc fix.
4
52012-12-03 Fabrice Popineau <fabrice.popineau@gmail.com>
6
7 * w32fns.c: Remove prototype of atof.
8 (syspage_mask): Declared DWORD_PTR, for compatibility with 64-bit
9 builds.
10 (file_dialog_callback): Declared UINT_PTR.
11
12 * w32common.h (syspage_mask): Declare DWORD_PTR, for compatibility
13 with 64-bit builds.
14
15 * w32.c (FILE_DEVICE_FILE_SYSTEM, METHOD_BUFFERED)
16 (FILE_ANY_ACCESS, CTL_CODE) [_MSC_VER]: Define only if not already
17 defined.
18
192012-12-03 Glenn Morris <rgm@gnu.org>
20
21 * data.c (Fboundp, Fsymbol_value): Doc fix re lexical-binding.
22
12012-12-02 Paul Eggert <eggert@cs.ucla.edu> 232012-12-02 Paul Eggert <eggert@cs.ucla.edu>
2 24
3 Fix xpalloc confusion after memory is exhausted. 25 Fix xpalloc confusion after memory is exhausted.
diff --git a/src/data.c b/src/data.c
index 5fc6afaaa03..a72fa3e2b5f 100644
--- a/src/data.c
+++ b/src/data.c
@@ -506,7 +506,9 @@ DEFUN ("setcdr", Fsetcdr, Ssetcdr, 2, 2, 0,
506/* Extract and set components of symbols. */ 506/* Extract and set components of symbols. */
507 507
508DEFUN ("boundp", Fboundp, Sboundp, 1, 1, 0, 508DEFUN ("boundp", Fboundp, Sboundp, 1, 1, 0,
509 doc: /* Return t if SYMBOL's value is not void. */) 509 doc: /* Return t if SYMBOL's value is not void.
510Note that if `lexical-binding' is in effect, this refers to the
511global value outside of any lexical scope. */)
510 (register Lisp_Object symbol) 512 (register Lisp_Object symbol)
511{ 513{
512 Lisp_Object valcontents; 514 Lisp_Object valcontents;
@@ -1047,7 +1049,9 @@ find_symbol_value (Lisp_Object symbol)
1047} 1049}
1048 1050
1049DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, 1051DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0,
1050 doc: /* Return SYMBOL's value. Error if that is void. */) 1052 doc: /* Return SYMBOL's value. Error if that is void.
1053Note that if `lexical-binding' is in effect, this returns the
1054global value outside of any lexical scope. */)
1051 (Lisp_Object symbol) 1055 (Lisp_Object symbol)
1052{ 1056{
1053 Lisp_Object val; 1057 Lisp_Object val;
diff --git a/src/fileio.c b/src/fileio.c
index 48dbf20b88f..9edd88ca64f 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -5771,7 +5771,7 @@ This applies only to the operation `inhibit-file-name-operation'. */);
5771 DEFVAR_LISP ("auto-save-list-file-name", Vauto_save_list_file_name, 5771 DEFVAR_LISP ("auto-save-list-file-name", Vauto_save_list_file_name,
5772 doc: /* File name in which we write a list of all auto save file names. 5772 doc: /* File name in which we write a list of all auto save file names.
5773This variable is initialized automatically from `auto-save-list-file-prefix' 5773This variable is initialized automatically from `auto-save-list-file-prefix'
5774shortly after Emacs reads your `.emacs' file, if you have not yet given it 5774shortly after Emacs reads your init file, if you have not yet given it
5775a non-nil value. */); 5775a non-nil value. */);
5776 Vauto_save_list_file_name = Qnil; 5776 Vauto_save_list_file_name = Qnil;
5777 5777
diff --git a/src/w32.c b/src/w32.c
index c8e16dfaa94..e81fc7b4f3e 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -150,10 +150,18 @@ typedef struct _REPARSE_DATA_BUFFER {
150 } DUMMYUNIONNAME; 150 } DUMMYUNIONNAME;
151} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER; 151} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
152 152
153#ifndef FILE_DEVICE_FILE_SYSTEM
153#define FILE_DEVICE_FILE_SYSTEM 9 154#define FILE_DEVICE_FILE_SYSTEM 9
155#endif
156#ifndef METHOD_BUFFERED
154#define METHOD_BUFFERED 0 157#define METHOD_BUFFERED 0
158#endif
159#ifndef FILE_ANY_ACCESS
155#define FILE_ANY_ACCESS 0x00000000 160#define FILE_ANY_ACCESS 0x00000000
161#endif
162#ifndef CTL_CODE
156#define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) 163#define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m))
164#endif
157#define FSCTL_GET_REPARSE_POINT \ 165#define FSCTL_GET_REPARSE_POINT \
158 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) 166 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
159#endif 167#endif
diff --git a/src/w32common.h b/src/w32common.h
index 50724e5553c..5e9b61824ae 100644
--- a/src/w32common.h
+++ b/src/w32common.h
@@ -34,7 +34,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
34 34
35extern SYSTEM_INFO sysinfo_cache; 35extern SYSTEM_INFO sysinfo_cache;
36extern OSVERSIONINFO osinfo_cache; 36extern OSVERSIONINFO osinfo_cache;
37extern unsigned long syspage_mask; 37extern DWORD_PTR syspage_mask;
38 38
39extern int w32_major_version; 39extern int w32_major_version;
40extern int w32_minor_version; 40extern int w32_minor_version;
diff --git a/src/w32fns.c b/src/w32fns.c
index 90f5b1695ea..044c377f496 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -82,7 +82,6 @@ void syms_of_w32fns (void);
82void globals_of_w32fns (void); 82void globals_of_w32fns (void);
83 83
84extern void free_frame_menubar (struct frame *); 84extern void free_frame_menubar (struct frame *);
85extern double atof (const char *);
86extern int w32_console_toggle_lock_key (int, Lisp_Object); 85extern int w32_console_toggle_lock_key (int, Lisp_Object);
87extern void w32_menu_display_help (HWND, HMENU, UINT, UINT); 86extern void w32_menu_display_help (HWND, HMENU, UINT, UINT);
88extern void w32_free_menu_strings (HWND); 87extern void w32_free_menu_strings (HWND);
@@ -223,7 +222,7 @@ SYSTEM_INFO sysinfo_cache;
223/* This gives us version, build, and platform identification. */ 222/* This gives us version, build, and platform identification. */
224OSVERSIONINFO osinfo_cache; 223OSVERSIONINFO osinfo_cache;
225 224
226unsigned long syspage_mask = 0; 225DWORD_PTR syspage_mask = 0;
227 226
228/* The major and minor versions of NT. */ 227/* The major and minor versions of NT. */
229int w32_major_version; 228int w32_major_version;
@@ -6035,7 +6034,7 @@ typedef char guichar_t;
6035 read-only when "Directories" is selected in the filter. This 6034 read-only when "Directories" is selected in the filter. This
6036 allows us to work around the fact that the standard Open File 6035 allows us to work around the fact that the standard Open File
6037 dialog does not support directories. */ 6036 dialog does not support directories. */
6038static UINT CALLBACK 6037static UINT_PTR CALLBACK
6039file_dialog_callback (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 6038file_dialog_callback (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
6040{ 6039{
6041 if (msg == WM_NOTIFY) 6040 if (msg == WM_NOTIFY)