aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2007-01-13 22:59:28 +0000
committerKaroly Lorentey2007-01-13 22:59:28 +0000
commit38db5c8d522cc1faa8190e77dbc932a5560e6aad (patch)
treeefe4c81d7210843bb208282461ebce12c5bd3daf
parent191ae1cf7cd2571277635b3b8e488e773ca5c9b9 (diff)
parentb4ec8cb4e66f94547e8215a1c1eb6cda3b83ca63 (diff)
downloademacs-38db5c8d522cc1faa8190e77dbc932a5560e6aad.tar.gz
emacs-38db5c8d522cc1faa8190e77dbc932a5560e6aad.zip
Merged from emacs@sv.gnu.org
Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-592 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-593 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-594 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-595 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-596 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-597 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-598 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-186 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-187 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-188 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-189 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-190 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-191 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-593
-rw-r--r--admin/FOR-RELEASE8
-rw-r--r--admin/nt/README-ftp-server93
-rw-r--r--etc/ChangeLog2
-rw-r--r--etc/NEWS40
-rw-r--r--lisp/ChangeLog89
-rw-r--r--lisp/battery.el12
-rw-r--r--lisp/bindings.el2
-rw-r--r--lisp/calendar/icalendar.el10
-rw-r--r--lisp/ediff-init.el7
-rw-r--r--lisp/emacs-lisp/pp.el17
-rw-r--r--lisp/faces.el11
-rw-r--r--lisp/files.el5
-rw-r--r--lisp/gnus/ChangeLog30
-rw-r--r--lisp/gnus/gmm-utils.el4
-rw-r--r--lisp/gnus/gnus-soup.el24
-rw-r--r--lisp/gnus/mm-decode.el22
-rw-r--r--lisp/gnus/nnweb.el9
-rw-r--r--lisp/info.el4
-rw-r--r--lisp/international/mule-cmds.el6
-rw-r--r--lisp/ldefs-boot.el105
-rw-r--r--lisp/net/tramp.el48
-rw-r--r--lisp/progmodes/cc-langs.el40
-rw-r--r--lisp/progmodes/compile.el6
-rw-r--r--lisp/progmodes/vhdl-mode.el2
-rw-r--r--lisp/replace.el7
-rw-r--r--lisp/server.el4
-rw-r--r--lisp/subr.el10
-rw-r--r--lisp/term/mac-win.el2
-rw-r--r--lisp/textmodes/fill.el42
-rw-r--r--lisp/tumme.el2
-rw-r--r--lisp/tutorial.el5
-rw-r--r--lisp/wdired.el7
-rw-r--r--lisp/x-dnd.el2
-rw-r--r--man/ChangeLog5
-rw-r--r--man/msdog.texi12
-rw-r--r--nt/ChangeLog4
-rw-r--r--nt/README34
-rw-r--r--src/ChangeLog80
-rw-r--r--src/callproc.c6
-rw-r--r--src/dired.c12
-rw-r--r--src/editfns.c18
-rw-r--r--src/emacs.c3
-rw-r--r--src/image.c8
-rw-r--r--src/keyboard.c2
-rw-r--r--src/macgui.h2
-rw-r--r--src/macmenu.c121
-rw-r--r--src/macterm.c117
-rw-r--r--src/macterm.h10
-rw-r--r--src/xterm.c173
-rw-r--r--src/xterm.h5
50 files changed, 864 insertions, 425 deletions
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 428b2589886..64163176bbb 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -86,15 +86,15 @@ through the custom mechanism.
86** dooglus@gmail.com, Dec 29: 4 week-old pretest bugs 86** dooglus@gmail.com, Dec 29: 4 week-old pretest bugs
87 Two GTK version bugs. 87 Two GTK version bugs.
88 88
89** pgg bugs reported by rms.
90
91** (global-set-key "\M-k" 'bury-buffer) confuses tutorial warnings.
92
93** jpff@cs.bath.ac.uk, Jan 5: Failure to submit second netnews message 89** jpff@cs.bath.ac.uk, Jan 5: Failure to submit second netnews message
94 90
95** KSNetz@UseNet.ArcorNews.DE, Jan 5: 91** KSNetz@UseNet.ArcorNews.DE, Jan 5:
96 url-http.el: calling the callback function for proxy connections 92 url-http.el: calling the callback function for proxy connections
97 93
94** simon.marshall@misys.com, Jan 9: Possible mouse-face redisplay glitch
95
96** dooglus@gmail.com, Jan 10: problem with transparent PNG image display
97
98* DOCUMENTATION 98* DOCUMENTATION
99 99
100** Check the Emacs Tutorial. 100** Check the Emacs Tutorial.
diff --git a/admin/nt/README-ftp-server b/admin/nt/README-ftp-server
index e351d025309..67d8e7919ce 100644
--- a/admin/nt/README-ftp-server
+++ b/admin/nt/README-ftp-server
@@ -88,44 +88,25 @@
88 leim-21.3-src.tar.gz 88 leim-21.3-src.tar.gz
89 89
90 90
91* Distributions in multi-file .zip format
92
93 A second distribution in the form of multiple small .zip files is also
94 provided, for the benefit of people who have unreliable internet
95 connections, or who need to copy the distribution onto floppy disks:
96
97 em213b*.zip
98
99 This is equivalent to getting emacs-21.3-bin-i386.tar.gz above.
100 The lisp source is available as em213l*.zip.
101
102
103* Distributions for non-x86 platforms 91* Distributions for non-x86 platforms
104 92
105 I try to make this port available for all platforms supported by 93 Distributions for non-x86 platforms are no longer supplied. Older
106 Windows (it should build on all supported Windows NT/9x platforms). 94 platforms supported by Windows NT no longer seem to be in demand,
107 However, I do not always have access to non-x86 platforms, and so I 95 and Emacs is yet to be ported to 64bit Windows platforms. If you are
108 cannot guarantee to provide precompiled distributions for the other 96 willing to help port Emacs to 64bit versions of Windows, your
109 platforms myself. If you find there are no binaries for your 97 contribution will be welcome on the emacs-devel mailing list.
110 platform, and you have access to a Microsoft compiler, then you can
111 download the source and compile Emacs yourself (and, if you do, please
112 consider contributing your executables; send me mail and we can make
113 arrangements for making them available on this ftp server.)
114
115 98
116* Unpacking distributions 99* Unpacking distributions
117 100
118 Programs for handling the distribution file formats can be found in 101 Ports of GNU gzip and GNU tar for handling the distribution file
119 the utilities directory: 102 formats can be found in several places that distribute ports of GNU
103 programs, for example:
120 104
121 http://mirrors.sunsite.dk/gnu/windows/emacs/utilities/ 105 Cygwin: http://www.cygwin.com/
106 GnuWin32: http://gnuwin32.sourceforge.net/
122 107
123 For gzipped tar files, you will need either gunzip.exe and tar.exe 108 Many other popular file compression utilities for Windows are also
124 together, or djtarnt.exe. djtarnt.exe can also unpack .zip files. I 109 able to handle gzipped tar files.
125 strongly urge you to use these utilities since they were the ones used
126 to create the distributions; the most common problem people have in
127 trying to get Emacs to run is due to some other utility program
128 corrupting the distribution while unpacking.
129 110
130 Open a command prompt (MSDOS) window. Decide on a directory in which 111 Open a command prompt (MSDOS) window. Decide on a directory in which
131 to place Emacs. Move the distribution to that directory, and then 112 to place Emacs. Move the distribution to that directory, and then
@@ -151,25 +132,10 @@
151 You may be prompted to rename or overwrite directories when using 132 You may be prompted to rename or overwrite directories when using
152 djtarnt: simply type return to continue (this is harmless). 133 djtarnt: simply type return to continue (this is harmless).
153 134
154 If you have the multi-file .zip distribution, use djtarnt to unpack
155 all of the .zip files:
156
157 % djtarnt -x *.zip
158
159 Once you have unpacked a precompiled distribution of Emacs, it should 135 Once you have unpacked a precompiled distribution of Emacs, it should
160 have the following subdirectories: 136 have the following subdirectories:
161 137
162 bin etc info lisp lock site-lisp 138 bin etc info lisp site-lisp
163
164 If your utility failed to create the lock directory, then you can
165 simply create it by hand (it is initially empty).
166
167 One final step is needed only when installing from the multi-file .zip
168 distribution, in order to recreate emacs.exe from its fragments (it is
169 too big to fit on a floppy even when zipped):
170
171 % cd emacs-21.3\bin
172 % stitch
173 139
174 140
175* Unpacking with other tools 141* Unpacking with other tools
@@ -178,9 +144,9 @@
178 the following to be sure the distribution was not corrupted: 144 the following to be sure the distribution was not corrupted:
179 145
180 + Be sure to disable the CR/LF translation or the executables will be 146 + Be sure to disable the CR/LF translation or the executables will be
181 unusable. Older versions of WinZipNT would enable this translation 147 unusable. Older versions of WinZip would enable this translation
182 by default. If you are using WinZipNT, disable it. (I don't have 148 by default. If you are using WinZip, disable it. (I don't have
183 WinZipNT myself, and I do not know the specific commands necessary 149 WinZip myself, and I do not know the specific commands necessary
184 to disable it.) 150 to disable it.)
185 151
186 + Check that filenames were not truncated to 8.3. For example, there 152 + Check that filenames were not truncated to 8.3. For example, there
@@ -188,12 +154,9 @@
188 abbrevli.el, your distribution has been corrupted while unpacking 154 abbrevli.el, your distribution has been corrupted while unpacking
189 and Emacs will not start. 155 and Emacs will not start.
190 156
191 + I've been told that some utilities (WinZip again?) don't create the 157 + I've also had reports that some older "gnuwin32" port of tar
192 lock subdirectory. The lock subdirectory needs to be created. 158 corrupts the executables. Use the latest version from the gnuwin32
193 159 site or another port of tar instead.
194 + I've also had reports that the "gnu-win32" port of tar corrupts the
195 executables. Use the version of tar or djtarnt in the utilities
196 directory instead.
197 160
198 If you believe you have unpacked the distributions correctly and are 161 If you believe you have unpacked the distributions correctly and are
199 still encountering problems, see the section on Further Information 162 still encountering problems, see the section on Further Information
@@ -204,11 +167,12 @@
204 167
205 If you would like to compile Emacs from source, download the source 168 If you would like to compile Emacs from source, download the source
206 distribution, unpack it in the same manner as a precompiled 169 distribution, unpack it in the same manner as a precompiled
207 distribution, and look in the file nt/INSTALL for detailed directions. 170 distribution, and look in the file nt/INSTALL for detailed
208 You can either use the Microsoft compiler included with Visual C++, or 171 directions. You can either use the Microsoft compiler included with
209 GCC 2.95 or later with MinGW support, to compile the source. The port 172 Visual C++ 2003 or earlier, or GCC 2.95 or later with MinGW support,
210 of GCC included in Cygwin is supported, but check the nt/INSTALL file 173 to compile the source. The port of GCC included in Cygwin is
211 if you have trouble since some builds of GNU make aren't supported. 174 supported, but check the nt/INSTALL file if you have trouble since
175 some builds of GNU make aren't supported.
212 176
213 177
214* Further information 178* Further information
@@ -250,5 +214,8 @@
250 214
251 Enjoy! 215 Enjoy!
252 216
253 Andrew Innes 217 Jason Rumney
254 (andrewi@gnu.org) 218 (jasonr@gnu.org)
219
220 Most of this README was contributed by former maintainer Andrew Innes
221 (andrewi@gnu.org) \ No newline at end of file
diff --git a/etc/ChangeLog b/etc/ChangeLog
index a4fcc77a887..c8b7a2ec1a9 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,4 +1,4 @@
12006-06-30 Francesco Potort,Al(B <pot@gnu.org> 12007-01-02 Francesco Potort,Al(B <pot@gnu.org>
2 2
3 * etags.1: Undocument the --no-warn option. 3 * etags.1: Undocument the --no-warn option.
4 4
diff --git a/etc/NEWS b/etc/NEWS
index bd5a003f503..cc0acc1d270 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -512,7 +512,7 @@ hyperlinks for variables without variable documentation, unless
512preceded by one of the words `variable' or `option'. It now makes 512preceded by one of the words `variable' or `option'. It now makes
513hyperlinks to Info anchors (or nodes) if the anchor (or node) name is 513hyperlinks to Info anchors (or nodes) if the anchor (or node) name is
514enclosed in single quotes and preceded by `info anchor' or `Info 514enclosed in single quotes and preceded by `info anchor' or `Info
515anchor' (in addition to earlier `info node' and `Info node'). In 515anchor' (in addition to earlier `info node' and `Info node'). In
516addition, it now makes hyperlinks to URLs as well if the URL is 516addition, it now makes hyperlinks to URLs as well if the URL is
517enclosed in single quotes and preceded by `URL'. 517enclosed in single quotes and preceded by `URL'.
518 518
@@ -778,7 +778,7 @@ parts less visible than normal, so that the rest of the differing
778parts is, by contrast, slightly highlighted. 778parts is, by contrast, slightly highlighted.
779 779
780Above fontification is always done when listing completions is 780Above fontification is always done when listing completions is
781triggered at minibuffer. If you want to fontify completions whose 781triggered at minibuffer. If you want to fontify completions whose
782listing is triggered at the other normal buffer, you have to pass 782listing is triggered at the other normal buffer, you have to pass
783the common prefix of completions to `display-completion-list' as 783the common prefix of completions to `display-completion-list' as
784its second argument. 784its second argument.
@@ -1666,8 +1666,8 @@ on the mode line, header line and display margin, when run in an xterm.
1666 1666
1667--- 1667---
1668*** Improved key bindings support when running in an xterm. 1668*** Improved key bindings support when running in an xterm.
1669When emacs is running in an xterm more key bindings are available. The 1669When emacs is running in an xterm more key bindings are available.
1670following should work: 1670The following should work:
1671{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}. 1671{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
1672These key bindings work on xterm from X.org 6.8, they might not work on 1672These key bindings work on xterm from X.org 6.8, they might not work on
1673some older versions of xterm, or on some proprietary versions. 1673some older versions of xterm, or on some proprietary versions.
@@ -2032,7 +2032,7 @@ boundaries during scrolling.
2032+++ 2032+++
2033** The file t-mouse.el is now part of Emacs and provides access to mouse 2033** The file t-mouse.el is now part of Emacs and provides access to mouse
2034events from the console. It still requires gpm to work but has been updated 2034events from the console. It still requires gpm to work but has been updated
2035for Emacs 22. In particular, the mode-line is now position sensitive. 2035for Emacs 22. In particular, the mode-line is now position sensitive.
2036 2036
2037* Changes in Specialized Modes and Packages in Emacs 22.1: 2037* Changes in Specialized Modes and Packages in Emacs 22.1:
2038 2038
@@ -2047,7 +2047,7 @@ is similar to the way sequential output to a terminal works.)
2047+++ 2047+++
2048*** Bindings for Tumme added 2048*** Bindings for Tumme added
2049Several new keybindings, all starting with the C-t prefix, have been 2049Several new keybindings, all starting with the C-t prefix, have been
2050added to Dired. They are all bound to commands in Tumme. As a starting 2050added to Dired. They are all bound to commands in Tumme. As a starting
2051point, mark some image files in a dired buffer and do C-t d to display 2051point, mark some image files in a dired buffer and do C-t d to display
2052thumbnails of them in a separate buffer. 2052thumbnails of them in a separate buffer.
2053 2053
@@ -2696,7 +2696,7 @@ C-c C-i b, and so on.
2696** Fortran mode changes: 2696** Fortran mode changes:
2697 2697
2698--- 2698---
2699*** Fortran mode does more font-locking by default. Use level 3 2699*** Fortran mode does more font-locking by default. Use level 3
2700highlighting for the old default. 2700highlighting for the old default.
2701 2701
2702+++ 2702+++
@@ -2890,7 +2890,7 @@ extracting the content of a BibTeX field.
2890*** The variables `bibtex-autokey-name-case-convert' and 2890*** The variables `bibtex-autokey-name-case-convert' and
2891`bibtex-autokey-titleword-case-convert' have been renamed to 2891`bibtex-autokey-titleword-case-convert' have been renamed to
2892`bibtex-autokey-name-case-convert-function' and 2892`bibtex-autokey-name-case-convert-function' and
2893`bibtex-autokey-titleword-case-convert-function'. The old names are 2893`bibtex-autokey-titleword-case-convert-function'. The old names are
2894still available as aliases. 2894still available as aliases.
2895 2895
2896** In Artist mode the variable `artist-text-renderer' has been 2896** In Artist mode the variable `artist-text-renderer' has been
@@ -3104,13 +3104,13 @@ feature.
3104+++ 3104+++
3105*** When comparing directories. 3105*** When comparing directories.
3106Typing D brings up a buffer that lists the differences between the contents of 3106Typing D brings up a buffer that lists the differences between the contents of
3107directories. Now it is possible to use this buffer to copy the missing files 3107directories. Now it is possible to use this buffer to copy the missing files
3108from one directory to another. 3108from one directory to another.
3109 3109
3110+++ 3110+++
3111*** When comparing files or buffers. 3111*** When comparing files or buffers.
3112Typing the = key now offers to perform the word-by-word comparison of the 3112Typing the = key now offers to perform the word-by-word comparison of the
3113currently highlighted regions in an inferior Ediff session. If you answer 'n' 3113currently highlighted regions in an inferior Ediff session. If you answer 'n'
3114then it reverts to the old behavior and asks the user to select regions for 3114then it reverts to the old behavior and asks the user to select regions for
3115comparison. 3115comparison.
3116 3116
@@ -3211,6 +3211,10 @@ be used (only once) in place of a file name on the command line. Etags
3211reads from standard input and marks the produced tags as belonging to 3211reads from standard input and marks the produced tags as belonging to
3212the file FILE. 3212the file FILE.
3213 3213
3214** Ctags changes.
3215
3216*** Ctags now allows duplicate tags
3217
3214** VC Changes 3218** VC Changes
3215 3219
3216+++ 3220+++
@@ -3344,7 +3348,7 @@ appointments, paydays or anything else using a sexp.
3344 3348
3345+++ 3349+++
3346*** The new function `calendar-goto-day-of-year' (g D) prompts for a 3350*** The new function `calendar-goto-day-of-year' (g D) prompts for a
3347year and day number, and moves to that date. Negative day numbers 3351year and day number, and moves to that date. Negative day numbers
3348count backward from the end of the year. 3352count backward from the end of the year.
3349 3353
3350+++ 3354+++
@@ -3359,7 +3363,7 @@ window generated by the function `generate-calendar-window'.
3359--- 3363---
3360*** The functions `holiday-easter-etc' and `holiday-advent' now take 3364*** The functions `holiday-easter-etc' and `holiday-advent' now take
3361optional arguments, in order to only report on the specified holiday 3365optional arguments, in order to only report on the specified holiday
3362rather than all. This makes customization of variables such as 3366rather than all. This makes customization of variables such as
3363`christian-holidays' simpler. 3367`christian-holidays' simpler.
3364 3368
3365--- 3369---
@@ -3719,7 +3723,7 @@ See the Emacs 21.1 NEWS entry for tooltips for details.
3719--- 3723---
3720** Images are now supported on MS Windows. 3724** Images are now supported on MS Windows.
3721 3725
3722PBM and XBM images are supported out of the box. Other image formats 3726PBM and XBM images are supported out of the box. Other image formats
3723depend on external libraries. All of these libraries have been ported 3727depend on external libraries. All of these libraries have been ported
3724to Windows, and can be found in both source and binary form at 3728to Windows, and can be found in both source and binary form at
3725http://gnuwin32.sourceforge.net/. Note that libpng also depends on 3729http://gnuwin32.sourceforge.net/. Note that libpng also depends on
@@ -3761,7 +3765,7 @@ you wish to use them in other faces.
3761** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations. 3765** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations.
3762 3766
3763Those systems use Unicode internally, so this allows Emacs to share 3767Those systems use Unicode internally, so this allows Emacs to share
3764multilingual text with other applications. On other versions of 3768multilingual text with other applications. On other versions of
3765MS Windows, Emacs now uses the appropriate locale coding-system, so 3769MS Windows, Emacs now uses the appropriate locale coding-system, so
3766the clipboard should work correctly for your local language without 3770the clipboard should work correctly for your local language without
3767any customizations. 3771any customizations.
@@ -3771,12 +3775,12 @@ any customizations.
3771 3775
3772Previous versions of Emacs erred on the side of having a usable Emacs 3776Previous versions of Emacs erred on the side of having a usable Emacs
3773through telnet, even though that was inconvenient if you use Emacs in 3777through telnet, even though that was inconvenient if you use Emacs in
3774a local console window with a scrollback buffer. The default value of 3778a local console window with a scrollback buffer. The default value of
3775w32-use-full-screen-buffer is now nil, which favors local console 3779w32-use-full-screen-buffer is now nil, which favors local console
3776windows. Recent versions of Windows telnet also work well with this 3780windows. Recent versions of Windows telnet also work well with this
3777setting. If you are using an older telnet server then Emacs detects 3781setting. If you are using an older telnet server then Emacs detects
3778that the console window dimensions that are reported are not sane, and 3782that the console window dimensions that are reported are not sane, and
3779defaults to 80x25. If you use such a telnet server regularly at a size 3783defaults to 80x25. If you use such a telnet server regularly at a size
3780other than 80x25, you can still manually set 3784other than 80x25, you can still manually set
3781w32-use-full-screen-buffer to t. 3785w32-use-full-screen-buffer to t.
3782 3786
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d1825190c1a..f24de58fbb7 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,87 @@
12007-01-10 Juanma Barranquero <lekktu@gmail.com>
2
3 * ediff-init.el (ediff-autostore-merges):
4 * textmodes/fill.el (fill-region): Doc fix.
5
62007-01-10 Stefan Monnier <monnier@iro.umontreal.ca>
7
8 * server.el (server-ensure-safe-dir): UIDs may be floats.
9
102007-01-10 Richard Stallman <rms@gnu.org>
11
12 * battery.el (battery-linux-proc-acpi): Use ignore-errors
13 around calls to directory-files.
14
15 * subr.el (momentary-string-display): Use save-excursion.
16
17 * emacs-lisp/pp.el (pp-eval-expression): Once again eval the
18 argument, but read it as `X' does.
19
202007-01-09 Juri Linkov <juri@jurta.org>
21
22 * info.el (Info-fontify-node): Don't hide node names of index entries.
23
24 * faces.el (momentary): Change :group to basic-faces where all
25 basic faces belong to. Add :version.
26
272007-01-09 Lennart Borgman <lennart.borgman.073@student.lu.se>
28
29 * tutorial.el (tutorial--display-changes): Show M-x sequence if no
30 keybinding is found.
31 (tutorial--find-changed-keys): Never treat null keybinding as a
32 remapping.
33
342007-01-09 Martin Rudalics <rudalics@gmx.at>
35
36 * wdired.el (wdired-xcase-word): Skip non-word read-only characters.
37
382007-01-09 Kenichi Handa <handa@m17n.org>
39
40 * international/mule-cmds.el
41 (select-safe-coding-system-interactively): Fix message.
42
432007-01-09 Michael Albinus <michael.albinus@gmx.de>
44
45 * net/tramp.el (tramp-process-one-action): Remove `with-timeout'.
46 (tramp-process-actions): Add optional parameter TIMEOUT.
47 (tramp-open-connection-telnet, tramp-open-connection-rsh)
48 (tramp-open-connection-su): Add timeout of 60".
49
502007-01-09 Richard Stallman <rms@gnu.org>
51
52 * progmodes/compile.el (compile): Doc fix.
53
542007-01-09 Markus Triska <markus.triska@gmx.at>
55
56 * tumme.el (tumme-display-thumb): Doc fix.
57
582007-01-08 Juanma Barranquero <lekktu@gmail.com>
59
60 * battery.el (battery-search-for-one-match-in-files):
61 * bindings.el (mode-line-minor-mode-help):
62 * x-dnd.el (x-dnd-types-alist):
63 * calendar/icalendar.el (icalendar-import-buffer):
64 * term/mac-win.el (mac-dnd-types-alist): Fix typo in docstring.
65
66 * progmodes/vhdl-mode.el (vhdl-save-caches): Fix typo in error message.
67
682007-01-07 Chris Moore <christopher.ian.moore@gmail.com> (tiny change)
69
70 * replace.el (replace-regexp): Fix typo in docstring.
71
722007-01-07 Alan Mackenzie <acm@muc.de>
73
74 * progmodes/cc-langs.el (c-operators, c-filter-ops):
75 Amend doc-string and comments.
76
772007-01-06 Eli Zaretskii <eliz@gnu.org>
78
79 * files.el (abbreviate-file-name): Doc fix.
80
812007-01-06 Markus Triska <triska@gmx.at>
82
83 * subr.el (split-string): Remove spurious ")" from doc string.
84
12007-01-05 Takaaki Ota <Takaaki.Ota@am.sony.com> 852007-01-05 Takaaki Ota <Takaaki.Ota@am.sony.com>
2 86
3 * textmodes/table.el (table--warn-incompatibility): 87 * textmodes/table.el (table--warn-incompatibility):
@@ -275,6 +359,11 @@
2752006-12-27 Kenichi Handa <handa@m17n.org> 3592006-12-27 Kenichi Handa <handa@m17n.org>
276 360
277 * international/mule-cmds.el (select-safe-coding-system-interactively): 361 * international/mule-cmds.el (select-safe-coding-system-interactively):
362 Use face `link' for problematic chars.
363
3642006-12-27 Kenichi Handa <handa@m17n.org>
365
366 * international/mule-cmds.el (select-safe-coding-system-interactively):
278 Improve the message in *Warning* buffer. 367 Improve the message in *Warning* buffer.
279 368
2802006-12-27 Kim F. Storm <storm@cua.dk> 3692006-12-27 Kim F. Storm <storm@cua.dk>
diff --git a/lisp/battery.el b/lisp/battery.el
index a4c72df0bbb..aec6865dc06 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -357,15 +357,17 @@ The following %-sequences are provided:
357 (list (cons ?c (or (and capacity (number-to-string capacity)) "N/A")) 357 (list (cons ?c (or (and capacity (number-to-string capacity)) "N/A"))
358 (cons ?L (or (battery-search-for-one-match-in-files 358 (cons ?L (or (battery-search-for-one-match-in-files
359 (mapcar (lambda (e) (concat e "/state")) 359 (mapcar (lambda (e) (concat e "/state"))
360 (directory-files "/proc/acpi/ac_adapter/" 360 (ignore-errors
361 t "\\`[^.]")) 361 (directory-files "/proc/acpi/ac_adapter/"
362 t "\\`[^.]")))
362 "state: +\\(.*\\)$" 1) 363 "state: +\\(.*\\)$" 1)
363 364
364 "N/A")) 365 "N/A"))
365 (cons ?d (or (battery-search-for-one-match-in-files 366 (cons ?d (or (battery-search-for-one-match-in-files
366 (mapcar (lambda (e) (concat e "/temperature")) 367 (mapcar (lambda (e) (concat e "/temperature"))
367 (directory-files "/proc/acpi/thermal_zone/" 368 (ignore-errors
368 t "\\`[^.]")) 369 (directory-files "/proc/acpi/thermal_zone/"
370 t "\\`[^.]")))
369 "temperature: +\\([0-9]+\\) C$" 1) 371 "temperature: +\\([0-9]+\\) C$" 1)
370 372
371 "N/A")) 373 "N/A"))
@@ -455,7 +457,7 @@ The following %-sequences are provided:
455 457
456(defun battery-search-for-one-match-in-files (files regexp match-num) 458(defun battery-search-for-one-match-in-files (files regexp match-num)
457 "Search REGEXP in the content of the files listed in FILES. 459 "Search REGEXP in the content of the files listed in FILES.
458If a match occured, return the parenthesized expression numbered by 460If a match occurred, return the parenthesized expression numbered by
459MATCH-NUM in the match. Otherwise, return nil." 461MATCH-NUM in the match. Otherwise, return nil."
460 (with-temp-buffer 462 (with-temp-buffer
461 (catch 'found 463 (catch 'found
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 1d64612d8ca..690431a99e6 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -476,7 +476,7 @@ Menu of mode operations in the mode line.")
476 (x-popup-menu event mode-line-mode-menu)) 476 (x-popup-menu event mode-line-mode-menu))
477 477
478(defun mode-line-minor-mode-help (event) 478(defun mode-line-minor-mode-help (event)
479 "Describe minor mode for EVENT occured on minor modes area of the mode line." 479 "Describe minor mode for EVENT occurred on minor modes area of the mode line."
480 (interactive "@e") 480 (interactive "@e")
481 (let ((indicator (car (nth 4 (car (cdr event)))))) 481 (let ((indicator (car (nth 4 (car (cdr event))))))
482 (describe-minor-mode-from-indicator indicator))) 482 (describe-minor-mode-from-indicator indicator)))
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index 6fecc86bf34..9de4d1f3954 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -709,7 +709,7 @@ would be \"pm\"."
709 "Export diary file to iCalendar format. 709 "Export diary file to iCalendar format.
710All diary entries in the file DIARY-FILENAME are converted to iCalendar 710All diary entries in the file DIARY-FILENAME are converted to iCalendar
711format. The result is appended to the file ICAL-FILENAME." 711format. The result is appended to the file ICAL-FILENAME."
712 (interactive "FExport diary data from file: 712 (interactive "FExport diary data from file:
713Finto iCalendar file: ") 713Finto iCalendar file: ")
714 (save-current-buffer 714 (save-current-buffer
715 (set-buffer (find-file diary-filename)) 715 (set-buffer (find-file diary-filename))
@@ -1453,8 +1453,8 @@ Argument ICAL-FILENAME output iCalendar file.
1453Argument DIARY-FILENAME input `diary-file'. 1453Argument DIARY-FILENAME input `diary-file'.
1454Optional argument NON-MARKING determines whether events are created as 1454Optional argument NON-MARKING determines whether events are created as
1455non-marking or not." 1455non-marking or not."
1456 (interactive "fImport iCalendar data from file: 1456 (interactive "fImport iCalendar data from file:
1457Finto diary file: 1457Finto diary file:
1458p") 1458p")
1459 ;; clean up the diary file 1459 ;; clean up the diary file
1460 (save-current-buffer 1460 (save-current-buffer
@@ -1479,7 +1479,7 @@ NON-MARKING determines whether diary events are created as
1479non-marking. 1479non-marking.
1480 1480
1481Return code t means that importing worked well, return code nil 1481Return code t means that importing worked well, return code nil
1482means that an error has occured. Error messages will be in the 1482means that an error has occurred. Error messages will be in the
1483buffer `*icalendar-errors*'." 1483buffer `*icalendar-errors*'."
1484 (interactive) 1484 (interactive)
1485 (save-current-buffer 1485 (save-current-buffer
@@ -1508,7 +1508,7 @@ buffer `*icalendar-errors*'."
1508 (set-buffer b) 1508 (set-buffer b)
1509 (save-buffer))))) 1509 (save-buffer)))))
1510 (message "Converting icalendar...done") 1510 (message "Converting icalendar...done")
1511 ;; return t if no error occured 1511 ;; return t if no error occurred
1512 (not ical-errors)) 1512 (not ical-errors))
1513 (message 1513 (message
1514 "Current buffer does not contain icalendar contents!") 1514 "Current buffer does not contain icalendar contents!")
diff --git a/lisp/ediff-init.el b/lisp/ediff-init.el
index 2fc0ceefe4d..75b2fdc6fc5 100644
--- a/lisp/ediff-init.el
+++ b/lisp/ediff-init.el
@@ -1410,9 +1410,10 @@ This property can be toggled interactively."
1410 1410
1411(defcustom ediff-autostore-merges 'group-jobs-only 1411(defcustom ediff-autostore-merges 'group-jobs-only
1412 "*Save the results of merge jobs automatically. 1412 "*Save the results of merge jobs automatically.
1413nil means don't save automatically. t means always save. Anything else 1413With value nil, don't save automatically. With value t, always
1414means save automatically only if the merge job is part of a group of jobs, such 1414save. Anything else means save automatically only if the merge
1415as `ediff-merge-directory' or `ediff-merge-directory-revisions'." 1415job is part of a group of jobs, such as `ediff-merge-directory'
1416or `ediff-merge-directory-revisions'."
1416 :type '(choice (const nil) (const t) (const group-jobs-only)) 1417 :type '(choice (const nil) (const t) (const group-jobs-only))
1417 :group 'ediff-merge) 1418 :group 'ediff-merge)
1418(make-variable-buffer-local 'ediff-autostore-merges) 1419(make-variable-buffer-local 'ediff-autostore-merges)
diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el
index 77f8854e022..27cb936c598 100644
--- a/lisp/emacs-lisp/pp.el
+++ b/lisp/emacs-lisp/pp.el
@@ -97,16 +97,13 @@ Output stream is STREAM, or value of `standard-output' (which see)."
97 (princ (pp-to-string object) (or stream standard-output))) 97 (princ (pp-to-string object) (or stream standard-output)))
98 98
99;;;###autoload 99;;;###autoload
100(defun pp-eval-expression (expval) 100(defun pp-eval-expression (expression)
101 "Evaluate an expression, then pretty-print value EXPVAL into a new buffer. 101 "Evaluate EXPRESSION and pretty-print its value.
102If pretty-printed EXPVAL fits on one line, display it in the echo 102Also add the value to the front of the list in the variable `values'."
103area instead. Also add EXPVAL to the front of the list 103 (interactive
104in the variable `values'. 104 (list (read-from-minibuffer "Eval: " nil read-expression-map t
105 105 'read-expression-history)))
106Non-interactively, the argument is the value, EXPVAL, not the expression 106 (setq values (cons (eval expression) values))
107to evaluate."
108 (interactive "XPp-eval: ")
109 (setq values (cons expval values))
110 (let* ((old-show-function temp-buffer-show-function) 107 (let* ((old-show-function temp-buffer-show-function)
111 ;; Use this function to display the buffer. 108 ;; Use this function to display the buffer.
112 ;; This function either decides not to display it at all 109 ;; This function either decides not to display it at all
diff --git a/lisp/faces.el b/lisp/faces.el
index a3d0e8b6de6..0736cda2993 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -2179,17 +2179,18 @@ terminal type to a different value."
2179 :version "21.1" 2179 :version "21.1"
2180 :group 'basic-faces) 2180 :group 'basic-faces)
2181 2181
2182(defface momentary
2183 '((t (:inherit mode-line)))
2184 "Face for momentarily displaying text in the current buffer."
2185 :group 'display)
2186
2187(defface vertical-border 2182(defface vertical-border
2188 '((((type tty)) :inherit mode-line-inactive)) 2183 '((((type tty)) :inherit mode-line-inactive))
2189 "Face used for vertical window dividers on ttys." 2184 "Face used for vertical window dividers on ttys."
2190 :version "22.1" 2185 :version "22.1"
2191 :group 'basic-faces) 2186 :group 'basic-faces)
2192 2187
2188(defface momentary
2189 '((t (:inherit mode-line)))
2190 "Face for momentarily displaying text in the current buffer."
2191 :version "22.1"
2192 :group 'basic-faces)
2193
2193(defface minibuffer-prompt 2194(defface minibuffer-prompt
2194 '((((background dark)) :foreground "cyan") 2195 '((((background dark)) :foreground "cyan")
2195 ;; Don't use blue because many users of the MS-DOS port customize 2196 ;; Don't use blue because many users of the MS-DOS port customize
diff --git a/lisp/files.el b/lisp/files.el
index 3834424ed4e..3b28f28b59b 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1289,8 +1289,9 @@ Choose the buffer's name using `generate-new-buffer-name'."
1289 1289
1290(defun abbreviate-file-name (filename) 1290(defun abbreviate-file-name (filename)
1291 "Return a version of FILENAME shortened using `directory-abbrev-alist'. 1291 "Return a version of FILENAME shortened using `directory-abbrev-alist'.
1292This also substitutes \"~\" for the user's home directory and 1292This also substitutes \"~\" for the user's home directory (unless the
1293removes automounter prefixes (see the variable `automount-dir-prefix')." 1293home directory is a root directory) and removes automounter prefixes
1294\(see the variable `automount-dir-prefix')."
1294 ;; Get rid of the prefixes added by the automounter. 1295 ;; Get rid of the prefixes added by the automounter.
1295 (save-match-data 1296 (save-match-data
1296 (if (and automount-dir-prefix 1297 (if (and automount-dir-prefix
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index ec7476b8758..a56f9ff1536 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,8 +1,38 @@
12007-01-07 Reiner Steib <Reiner.Steib@gmx.de>
2
3 * gnus-soup.el: Add missing :group in previous change.
4
12007-01-05 Reiner Steib <Reiner.Steib@gmx.de> 52007-01-05 Reiner Steib <Reiner.Steib@gmx.de>
2 6
3 * gnus-soup.el (gnus-soup): New custom group. Make user variables 7 * gnus-soup.el (gnus-soup): New custom group. Make user variables
4 customizable. 8 customizable.
5 9
102007-01-03 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
11
12 * nnweb.el (nnweb-gmane-create-mapping): Put back code to merge the
13 headers read from disk with the ones newly found in the current search.
14 This should no longer cause problems, because the article numbers in
15 Gmane's `nov.php' output are ignored since the previous change.
16
172006-01-03 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
18
19 * nnweb.el (nnweb-gmane-create-mapping): Keep the mapping stable for
20 solid groups.
21
222006-01-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
23
24 * nnweb.el (nnweb-gmane-create-mapping): Use the article number from
25 the headers when creating the mapping to avoid mismappings.
26 (nnweb-gmane-create-mapping): Always nix out old mapping.
27
282007-01-02 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
29
30 * gmm-utils.el (gmm-tool-bar-style): Fix custom type.
31
322007-01-01 Katsumi Yamaoka <yamaoka@jpl.org>
33
34 * mm-decode.el (mm-display-external): Use itimer function for XEmacs.
35
62006-12-30 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de> 362006-12-30 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
7 37
8 * gnus-sum.el (gnus-summary-insert-dormant-articles): Fix typo in 38 * gnus-sum.el (gnus-summary-insert-dormant-articles): Fix typo in
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index 59d02927008..18b1a528c29 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -203,8 +203,8 @@ This is copy of the `lazy' widget in Emacs 22.1 provided for compatibility."
203 'gnome 203 'gnome
204 'retro) 204 'retro)
205 "Prefered tool bar style." 205 "Prefered tool bar style."
206 :type '(choice (const :tag "GNOME style" 'gnome) 206 :type '(choice (const :tag "GNOME style" gnome)
207 (const :tag "Retro look" 'retro)) 207 (const :tag "Retro look" retro))
208 :group 'gmm) 208 :group 'gmm)
209 209
210(defvar tool-bar-map) 210(defvar tool-bar-map)
diff --git a/lisp/gnus/gnus-soup.el b/lisp/gnus/gnus-soup.el
index 31074cb8c77..d5b1a9fad88 100644
--- a/lisp/gnus/gnus-soup.el
+++ b/lisp/gnus/gnus-soup.el
@@ -45,18 +45,21 @@
45(defcustom gnus-soup-directory (nnheader-concat gnus-home-directory "SoupBrew/") 45(defcustom gnus-soup-directory (nnheader-concat gnus-home-directory "SoupBrew/")
46 "Directory containing an unpacked SOUP packet." 46 "Directory containing an unpacked SOUP packet."
47 :version "22.1" ;; Gnus 5.10.9 47 :version "22.1" ;; Gnus 5.10.9
48 :type 'directory) 48 :type 'directory
49 :group 'gnus-soup)
49 50
50(defcustom gnus-soup-replies-directory 51(defcustom gnus-soup-replies-directory
51 (nnheader-concat gnus-soup-directory "SoupReplies/") 52 (nnheader-concat gnus-soup-directory "SoupReplies/")
52 "Directory where Gnus will do processing of replies." 53 "Directory where Gnus will do processing of replies."
53 :version "22.1" ;; Gnus 5.10.9 54 :version "22.1" ;; Gnus 5.10.9
54 :type 'directory) 55 :type 'directory
56 :group 'gnus-soup)
55 57
56(defcustom gnus-soup-prefix-file "gnus-prefix" 58(defcustom gnus-soup-prefix-file "gnus-prefix"
57 "Name of the file where Gnus stores the last used prefix." 59 "Name of the file where Gnus stores the last used prefix."
58 :version "22.1" ;; Gnus 5.10.9 60 :version "22.1" ;; Gnus 5.10.9
59 :type 'file) 61 :type 'file
62 :group 'gnus-soup)
60 63
61(defcustom gnus-soup-packer "tar cf - %s | gzip > $HOME/Soupout%d.tgz" 64(defcustom gnus-soup-packer "tar cf - %s | gzip > $HOME/Soupout%d.tgz"
62 "Format string command for packing a SOUP packet. 65 "Format string command for packing a SOUP packet.
@@ -64,28 +67,33 @@ The SOUP files will be inserted where the %s is in the string.
64This string MUST contain both %s and %d. The file number will be 67This string MUST contain both %s and %d. The file number will be
65inserted where %d appears." 68inserted where %d appears."
66 :version "22.1" ;; Gnus 5.10.9 69 :version "22.1" ;; Gnus 5.10.9
67 :type 'string) 70 :type 'string
71 :group 'gnus-soup)
68 72
69(defcustom gnus-soup-unpacker "gunzip -c %s | tar xvf -" 73(defcustom gnus-soup-unpacker "gunzip -c %s | tar xvf -"
70 "Format string command for unpacking a SOUP packet. 74 "Format string command for unpacking a SOUP packet.
71The SOUP packet file name will be inserted at the %s." 75The SOUP packet file name will be inserted at the %s."
72 :version "22.1" ;; Gnus 5.10.9 76 :version "22.1" ;; Gnus 5.10.9
73 :type 'string) 77 :type 'string
78 :group 'gnus-soup)
74 79
75(defcustom gnus-soup-packet-directory gnus-home-directory 80(defcustom gnus-soup-packet-directory gnus-home-directory
76 "Where gnus-soup will look for REPLIES packets." 81 "Where gnus-soup will look for REPLIES packets."
77 :version "22.1" ;; Gnus 5.10.9 82 :version "22.1" ;; Gnus 5.10.9
78 :type 'directory) 83 :type 'directory
84 :group 'gnus-soup)
79 85
80(defcustom gnus-soup-packet-regexp "Soupin" 86(defcustom gnus-soup-packet-regexp "Soupin"
81 "Regular expression matching SOUP REPLIES packets in `gnus-soup-packet-directory'." 87 "Regular expression matching SOUP REPLIES packets in `gnus-soup-packet-directory'."
82 :version "22.1" ;; Gnus 5.10.9 88 :version "22.1" ;; Gnus 5.10.9
83 :type 'regexp) 89 :type 'regexp
90 :group 'gnus-soup)
84 91
85(defcustom gnus-soup-ignored-headers "^Xref:" 92(defcustom gnus-soup-ignored-headers "^Xref:"
86 "Regexp to match headers to be removed when brewing SOUP packets." 93 "Regexp to match headers to be removed when brewing SOUP packets."
87 :version "22.1" ;; Gnus 5.10.9 94 :version "22.1" ;; Gnus 5.10.9
88 :type 'regexp) 95 :type 'regexp
96 :group 'gnus-soup)
89 97
90;;; Internal Variables: 98;;; Internal Variables:
91 99
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 7e6f93be1f1..361c83cfa7c 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -883,13 +883,21 @@ external if displayed external."
883 ;; a vector in Emacs but is a list in XEmacs) 883 ;; a vector in Emacs but is a list in XEmacs)
884 ;; requires that it is lexically scoped. 884 ;; requires that it is lexically scoped.
885 (timer (run-at-time 2.0 nil 'ignore))) 885 (timer (run-at-time 2.0 nil 'ignore)))
886 (lambda (process state) 886 (if (boundp 'itimer-list)
887 (when (eq 'exit (process-status process)) 887 (lambda (process state)
888 (if (memq timer timer-list) 888 (when (eq 'exit (process-status process))
889 (timer-set-function timer fn) 889 (if (memq timer itimer-list)
890 (funcall fn)) 890 (set-itimer-function timer fn)
891 (ignore-errors (eval fm)) 891 (funcall fn))
892 (message "%s" done)))))) 892 (ignore-errors (eval fm))
893 (message "%s" done)))
894 (lambda (process state)
895 (when (eq 'exit (process-status process))
896 (if (memq timer timer-list)
897 (timer-set-function timer fn)
898 (funcall fn))
899 (ignore-errors (eval fm))
900 (message "%s" done)))))))
893 (mm-handle-set-external-undisplayer 901 (mm-handle-set-external-undisplayer
894 handle (cons file buffer))) 902 handle (cons file buffer)))
895 (message "Displaying %s..." command)) 903 (message "Displaying %s..." command))
diff --git a/lisp/gnus/nnweb.el b/lisp/gnus/nnweb.el
index d020d533aea..54c57879d5b 100644
--- a/lisp/gnus/nnweb.el
+++ b/lisp/gnus/nnweb.el
@@ -480,7 +480,7 @@ Valid types include `google', `dejanews', and `gmane'.")
480 (from (mail-header-from header)) 480 (from (mail-header-from header))
481 (subject (mail-header-subject header)) 481 (subject (mail-header-subject header))
482 (rfc2047-encoding-type 'mime)) 482 (rfc2047-encoding-type 'mime))
483 (when (string-match " \\([^:]+\\):\\([0-9]+\\)" xref) 483 (when (string-match " \\([^:]+\\)[:/]\\([0-9]+\\)" xref)
484 (mail-header-set-xref 484 (mail-header-set-xref
485 header 485 header
486 (format "http://article.gmane.org/%s/%s/raw" 486 (format "http://article.gmane.org/%s/%s/raw"
@@ -496,11 +496,8 @@ Valid types include `google', `dejanews', and `gmane'.")
496 (rfc2047-encode-string subject)) 496 (rfc2047-encode-string subject))
497 497
498 (unless (nnweb-get-hashtb (mail-header-xref header)) 498 (unless (nnweb-get-hashtb (mail-header-xref header))
499 (push 499 (mail-header-set-number header (incf (cdr active)))
500 (list 500 (push (list (mail-header-number header) header) map)
501 (incf (cdr active))
502 header)
503 map)
504 (nnweb-set-hashtb (cadar map) (car map)))))) 501 (nnweb-set-hashtb (cadar map) (car map))))))
505 (forward-line 1))) 502 (forward-line 1)))
506 (nnheader-message 7 "Searching Gmane...done") 503 (nnheader-message 7 "Searching Gmane...done")
diff --git a/lisp/info.el b/lisp/info.el
index 6d966da3317..880b659faa6 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -3996,7 +3996,9 @@ the variable `Info-file-list-for-emacs'."
3996 (setq res (car hl) hl nil) 3996 (setq res (car hl) hl nil)
3997 (setq hl (cdr hl)))) 3997 (setq hl (cdr hl))))
3998 res))) 'info-xref-visited 'info-xref))) 3998 res))) 'info-xref-visited 'info-xref)))
3999 (when (and not-fontified-p (memq Info-hide-note-references '(t hide))) 3999 (when (and not-fontified-p
4000 (memq Info-hide-note-references '(t hide))
4001 (not (Info-index-node)))
4000 (put-text-property (match-beginning 2) (1- (match-end 6)) 4002 (put-text-property (match-beginning 2) (1- (match-end 6))
4001 'invisible t) 4003 'invisible t)
4002 ;; Unhide the file name in parens 4004 ;; Unhide the file name in parens
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 65c3f6fe5ff..41f6b376995 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -788,10 +788,10 @@ e.g., for sending an email message.\n ")
788 (car coding))))) 788 (car coding)))))
789 (setq i (1+ i)))) 789 (setq i (1+ i))))
790 (insert "\n")) 790 (insert "\n"))
791 (insert "\ 791 (insert (substitute-command-keys "\
792 792
793Click on a character to jump to the place it appears,\n" 793Click on a character (or switch to this window by `\\[other-window]'\n\
794 (substitute-command-keys "\ 794and select the characters by RET) to jump to the place it appears,\n\
795where `\\[universal-argument] \\[what-cursor-position]' will give information about it.\n")))) 795where `\\[universal-argument] \\[what-cursor-position]' will give information about it.\n"))))
796 (insert (substitute-command-keys "\nSelect \ 796 (insert (substitute-command-keys "\nSelect \
797one of the safe coding systems listed below,\n\ 797one of the safe coding systems listed below,\n\
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 18248771da0..80e2f978f58 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -5782,8 +5782,8 @@ suggest to customize that face, if it's customizable.
5782 5782
5783\(fn &optional FACE)" t nil) 5783\(fn &optional FACE)" t nil)
5784 5784
5785(autoload (quote customize-customized) "cus-edit" "\ 5785(autoload (quote customize-unsaved) "cus-edit" "\
5786Customize all user options set since the last save in this session. 5786Customize all user options set in this session but not saved.
5787 5787
5788\(fn)" t nil) 5788\(fn)" t nil)
5789 5789
@@ -6029,11 +6029,10 @@ This function is designed to be added to hooks, for example:
6029Non-nil if Global-Cwarn mode is enabled. 6029Non-nil if Global-Cwarn mode is enabled.
6030See the command `global-cwarn-mode' for a description of this minor-mode. 6030See the command `global-cwarn-mode' for a description of this minor-mode.
6031Setting this variable directly does not take effect; 6031Setting this variable directly does not take effect;
6032use either \\[customize] or the function `global-cwarn-mode'.") 6032either customize it (see the info node `Easy Customization')
6033 6033or call the function `global-cwarn-mode'.")
6034(custom-autoload (quote global-cwarn-mode) "cwarn")
6035 6034
6036(put (quote global-cwarn-mode) (quote custom-set) (quote custom-set-minor-mode)) 6035(custom-autoload (quote global-cwarn-mode) "cwarn" nil)
6037 6036
6038(autoload (quote global-cwarn-mode) "cwarn" "\ 6037(autoload (quote global-cwarn-mode) "cwarn" "\
6039Toggle Cwarn mode in every buffer. 6038Toggle Cwarn mode in every buffer.
@@ -6407,11 +6406,10 @@ no args, if that value is non-nil.
6407Non-nil if Delete-Selection mode is enabled. 6406Non-nil if Delete-Selection mode is enabled.
6408See the command `delete-selection-mode' for a description of this minor-mode. 6407See the command `delete-selection-mode' for a description of this minor-mode.
6409Setting this variable directly does not take effect; 6408Setting this variable directly does not take effect;
6410use either \\[customize] or the function `delete-selection-mode'.") 6409either customize it (see the info node `Easy Customization')
6411 6410or call the function `delete-selection-mode'.")
6412(custom-autoload (quote delete-selection-mode) "delsel")
6413 6411
6414(put (quote delete-selection-mode) (quote custom-set) (quote custom-set-minor-mode)) 6412(custom-autoload (quote delete-selection-mode) "delsel" nil)
6415 6413
6416(autoload (quote delete-selection-mode) "delsel" "\ 6414(autoload (quote delete-selection-mode) "delsel" "\
6417Toggle Delete Selection mode. 6415Toggle Delete Selection mode.
@@ -7973,6 +7971,10 @@ If MAP is specified, it should normally be a keymap; nil stands for the local
7973menu-bar keymap. It can also be a symbol, which has earlier been used as the 7971menu-bar keymap. It can also be a symbol, which has earlier been used as the
7974first argument in a call to `easy-menu-define', or the value of such a symbol. 7972first argument in a call to `easy-menu-define', or the value of such a symbol.
7975 7973
7974If MAP is specified, it should normally be a keymap; nil stands for the local
7975menu-bar keymap. It can also be a symbol, which has earlier been used as the
7976first argument in a call to `easy-menu-define', or the value of such a symbol.
7977
7976If the menu located by PATH has no submenu named NAME, add one. 7978If the menu located by PATH has no submenu named NAME, add one.
7977If the optional argument BEFORE is present, add it just before 7979If the optional argument BEFORE is present, add it just before
7978the submenu named BEFORE, otherwise add it at the end of the menu. 7980the submenu named BEFORE, otherwise add it at the end of the menu.
@@ -9690,7 +9692,7 @@ Use the `etags' program to make a tags table file.")
9690A value of t means case-insensitive, a value of nil means case-sensitive. 9692A value of t means case-insensitive, a value of nil means case-sensitive.
9691Any other value means use the setting of `case-fold-search'.") 9693Any other value means use the setting of `case-fold-search'.")
9692 9694
9693(custom-autoload (quote tags-case-fold-search) "etags") 9695(custom-autoload (quote tags-case-fold-search) "etags" t)
9694 9696
9695(defvar tags-table-list nil "\ 9697(defvar tags-table-list nil "\
9696*List of file names of tags tables to search. 9698*List of file names of tags tables to search.
@@ -9699,7 +9701,7 @@ To switch to a new list of tags tables, setting this variable is sufficient.
9699If you set this variable, do not also set `tags-file-name'. 9701If you set this variable, do not also set `tags-file-name'.
9700Use the `etags' program to make a tags table file.") 9702Use the `etags' program to make a tags table file.")
9701 9703
9702(custom-autoload (quote tags-table-list) "etags") 9704(custom-autoload (quote tags-table-list) "etags" t)
9703 9705
9704(defvar tags-compression-info-list (quote ("" ".Z" ".bz2" ".gz" ".tgz")) "\ 9706(defvar tags-compression-info-list (quote ("" ".Z" ".bz2" ".gz" ".tgz")) "\
9705*List of extensions tried by etags when jka-compr is used. 9707*List of extensions tried by etags when jka-compr is used.
@@ -9708,7 +9710,7 @@ These extensions will be tried only if jka-compr was activated
9708\(i.e. via customize of `auto-compression-mode' or by calling the function 9710\(i.e. via customize of `auto-compression-mode' or by calling the function
9709`auto-compression-mode').") 9711`auto-compression-mode').")
9710 9712
9711(custom-autoload (quote tags-compression-info-list) "etags") 9713(custom-autoload (quote tags-compression-info-list) "etags" t)
9712 9714
9713(defvar tags-add-tables (quote ask-user) "\ 9715(defvar tags-add-tables (quote ask-user) "\
9714*Control whether to add a new tags table to the current list. 9716*Control whether to add a new tags table to the current list.
@@ -9716,14 +9718,14 @@ t means do; nil means don't (always start a new list).
9716Any other value means ask the user whether to add a new tags table 9718Any other value means ask the user whether to add a new tags table
9717to the current list (as opposed to starting a new list).") 9719to the current list (as opposed to starting a new list).")
9718 9720
9719(custom-autoload (quote tags-add-tables) "etags") 9721(custom-autoload (quote tags-add-tables) "etags" t)
9720 9722
9721(defvar find-tag-hook nil "\ 9723(defvar find-tag-hook nil "\
9722*Hook to be run by \\[find-tag] after finding a tag. See `run-hooks'. 9724*Hook to be run by \\[find-tag] after finding a tag. See `run-hooks'.
9723The value in the buffer in which \\[find-tag] is done is used, 9725The value in the buffer in which \\[find-tag] is done is used,
9724not the value in the buffer \\[find-tag] goes to.") 9726not the value in the buffer \\[find-tag] goes to.")
9725 9727
9726(custom-autoload (quote find-tag-hook) "etags") 9728(custom-autoload (quote find-tag-hook) "etags" t)
9727 9729
9728(defvar find-tag-default-function nil "\ 9730(defvar find-tag-default-function nil "\
9729*A function of no arguments used by \\[find-tag] to pick a default tag. 9731*A function of no arguments used by \\[find-tag] to pick a default tag.
@@ -9731,7 +9733,7 @@ If nil, and the symbol that is the value of `major-mode'
9731has a `find-tag-default-function' property (see `put'), that is used. 9733has a `find-tag-default-function' property (see `put'), that is used.
9732Otherwise, `find-tag-default' is used.") 9734Otherwise, `find-tag-default' is used.")
9733 9735
9734(custom-autoload (quote find-tag-default-function) "etags") 9736(custom-autoload (quote find-tag-default-function) "etags" t)
9735 9737
9736(autoload (quote tags-table-mode) "etags" "\ 9738(autoload (quote tags-table-mode) "etags" "\
9737Major mode for tags table file buffers. 9739Major mode for tags table file buffers.
@@ -13360,11 +13362,10 @@ is found. A mode is excluded if it's in the list `hi-lock-exclude-modes'.
13360Non-nil if Global-Hi-Lock mode is enabled. 13362Non-nil if Global-Hi-Lock mode is enabled.
13361See the command `global-hi-lock-mode' for a description of this minor-mode. 13363See the command `global-hi-lock-mode' for a description of this minor-mode.
13362Setting this variable directly does not take effect; 13364Setting this variable directly does not take effect;
13363use either \\[customize] or the function `global-hi-lock-mode'.") 13365either customize it (see the info node `Easy Customization')
13364 13366or call the function `global-hi-lock-mode'.")
13365(custom-autoload (quote global-hi-lock-mode) "hi-lock")
13366 13367
13367(put (quote global-hi-lock-mode) (quote custom-set) (quote custom-set-minor-mode)) 13368(custom-autoload (quote global-hi-lock-mode) "hi-lock" nil)
13368 13369
13369(autoload (quote global-hi-lock-mode) "hi-lock" "\ 13370(autoload (quote global-hi-lock-mode) "hi-lock" "\
13370Toggle Hi-Lock mode in every buffer. 13371Toggle Hi-Lock mode in every buffer.
@@ -15009,6 +15010,15 @@ This function is intended to be used from `magic-mode-alist' (which see).
15009 15010
15010\(fn)" nil nil) 15011\(fn)" nil nil)
15011 15012
15013(autoload (quote image-type-auto-detected-p) "image" "\
15014Return t iff the current buffer contains an auto-detectable image.
15015Whether image types are auto-detectable or not depends on the setting
15016of the variable `image-type-auto-detectable'.
15017
15018This function is intended to be used from `magic-mode-alist' (which see).
15019
15020\(fn)" nil nil)
15021
15012(autoload (quote create-image) "image" "\ 15022(autoload (quote create-image) "image" "\
15013Create an image. 15023Create an image.
15014FILE-OR-DATA is an image file name or image data. 15024FILE-OR-DATA is an image file name or image data.
@@ -15136,7 +15146,7 @@ setting this variable directly does not take effect unless
15136`auto-image-file-mode' is re-enabled; this happens automatically when 15146`auto-image-file-mode' is re-enabled; this happens automatically when
15137the variable is set using \\[customize].") 15147the variable is set using \\[customize].")
15138 15148
15139(custom-autoload (quote image-file-name-extensions) "image-file") 15149(custom-autoload (quote image-file-name-extensions) "image-file" nil)
15140 15150
15141(defvar image-file-name-regexps nil "\ 15151(defvar image-file-name-regexps nil "\
15142*List of regexps matching image-file filenames. 15152*List of regexps matching image-file filenames.
@@ -15148,7 +15158,7 @@ enabled, setting this variable directly does not take effect unless
15148`auto-image-file-mode' is re-enabled; this happens automatically when 15158`auto-image-file-mode' is re-enabled; this happens automatically when
15149the variable is set using \\[customize].") 15159the variable is set using \\[customize].")
15150 15160
15151(custom-autoload (quote image-file-name-regexps) "image-file") 15161(custom-autoload (quote image-file-name-regexps) "image-file" nil)
15152 15162
15153(autoload (quote image-file-name-regexp) "image-file" "\ 15163(autoload (quote image-file-name-regexp) "image-file" "\
15154Return a regular expression matching image-file filenames. 15164Return a regular expression matching image-file filenames.
@@ -15166,11 +15176,10 @@ the command `insert-file-contents'.
15166Non-nil if Auto-Image-File mode is enabled. 15176Non-nil if Auto-Image-File mode is enabled.
15167See the command `auto-image-file-mode' for a description of this minor-mode. 15177See the command `auto-image-file-mode' for a description of this minor-mode.
15168Setting this variable directly does not take effect; 15178Setting this variable directly does not take effect;
15169use either \\[customize] or the function `auto-image-file-mode'.") 15179either customize it (see the info node `Easy Customization')
15170 15180or call the function `auto-image-file-mode'.")
15171(custom-autoload (quote auto-image-file-mode) "image-file")
15172 15181
15173(put (quote auto-image-file-mode) (quote custom-set) (quote custom-set-minor-mode)) 15182(custom-autoload (quote auto-image-file-mode) "image-file" nil)
15174 15183
15175(autoload (quote auto-image-file-mode) "image-file" "\ 15184(autoload (quote auto-image-file-mode) "image-file" "\
15176Toggle visiting of image files as images. 15185Toggle visiting of image files as images.
@@ -15391,12 +15400,12 @@ Input matching this regexp is not saved on the input history in Inferior Lisp
15391mode. Default is whitespace followed by 0 or 1 single-letter colon-keyword 15400mode. Default is whitespace followed by 0 or 1 single-letter colon-keyword
15392\(as in :a, :c, etc.)") 15401\(as in :a, :c, etc.)")
15393 15402
15394(custom-autoload (quote inferior-lisp-filter-regexp) "inf-lisp") 15403(custom-autoload (quote inferior-lisp-filter-regexp) "inf-lisp" t)
15395 15404
15396(defvar inferior-lisp-program "lisp" "\ 15405(defvar inferior-lisp-program "lisp" "\
15397*Program name for invoking an inferior Lisp in Inferior Lisp mode.") 15406*Program name for invoking an inferior Lisp in Inferior Lisp mode.")
15398 15407
15399(custom-autoload (quote inferior-lisp-program) "inf-lisp") 15408(custom-autoload (quote inferior-lisp-program) "inf-lisp" t)
15400 15409
15401(defvar inferior-lisp-load-command "(load \"%s\")\n" "\ 15410(defvar inferior-lisp-load-command "(load \"%s\")\n" "\
15402*Format-string for building a Lisp expression to load a file. 15411*Format-string for building a Lisp expression to load a file.
@@ -15407,7 +15416,7 @@ The string \"(progn (load \\\"%s\\\" :verbose nil :print t) (values))\\n\"
15407produces cosmetically superior output for this application, 15416produces cosmetically superior output for this application,
15408but it works only in Common Lisp.") 15417but it works only in Common Lisp.")
15409 15418
15410(custom-autoload (quote inferior-lisp-load-command) "inf-lisp") 15419(custom-autoload (quote inferior-lisp-load-command) "inf-lisp" t)
15411 15420
15412(defvar inferior-lisp-prompt "^[^> \n]*>+:? *" "\ 15421(defvar inferior-lisp-prompt "^[^> \n]*>+:? *" "\
15413Regexp to recognize prompts in the Inferior Lisp mode. 15422Regexp to recognize prompts in the Inferior Lisp mode.
@@ -15425,7 +15434,7 @@ kcl: \"^>+ *\"
15425 15434
15426This is a fine thing to set in your .emacs file or through Custom.") 15435This is a fine thing to set in your .emacs file or through Custom.")
15427 15436
15428(custom-autoload (quote inferior-lisp-prompt) "inf-lisp") 15437(custom-autoload (quote inferior-lisp-prompt) "inf-lisp" t)
15429 15438
15430(defvar inferior-lisp-mode-hook (quote nil) "\ 15439(defvar inferior-lisp-mode-hook (quote nil) "\
15431*Hook for customising Inferior Lisp mode.") 15440*Hook for customising Inferior Lisp mode.")
@@ -16322,28 +16331,28 @@ Specifies the keypad setup for unshifted keypad keys when NumLock is off.
16322When selecting the plain numeric keypad setup, the character returned by the 16331When selecting the plain numeric keypad setup, the character returned by the
16323decimal key must be specified.") 16332decimal key must be specified.")
16324 16333
16325(custom-autoload (quote keypad-setup) "keypad") 16334(custom-autoload (quote keypad-setup) "keypad" nil)
16326 16335
16327(defvar keypad-numlock-setup nil "\ 16336(defvar keypad-numlock-setup nil "\
16328Specifies the keypad setup for unshifted keypad keys when NumLock is on. 16337Specifies the keypad setup for unshifted keypad keys when NumLock is on.
16329When selecting the plain numeric keypad setup, the character returned by the 16338When selecting the plain numeric keypad setup, the character returned by the
16330decimal key must be specified.") 16339decimal key must be specified.")
16331 16340
16332(custom-autoload (quote keypad-numlock-setup) "keypad") 16341(custom-autoload (quote keypad-numlock-setup) "keypad" nil)
16333 16342
16334(defvar keypad-shifted-setup nil "\ 16343(defvar keypad-shifted-setup nil "\
16335Specifies the keypad setup for shifted keypad keys when NumLock is off. 16344Specifies the keypad setup for shifted keypad keys when NumLock is off.
16336When selecting the plain numeric keypad setup, the character returned by the 16345When selecting the plain numeric keypad setup, the character returned by the
16337decimal key must be specified.") 16346decimal key must be specified.")
16338 16347
16339(custom-autoload (quote keypad-shifted-setup) "keypad") 16348(custom-autoload (quote keypad-shifted-setup) "keypad" nil)
16340 16349
16341(defvar keypad-numlock-shifted-setup nil "\ 16350(defvar keypad-numlock-shifted-setup nil "\
16342Specifies the keypad setup for shifted keypad keys when NumLock is off. 16351Specifies the keypad setup for shifted keypad keys when NumLock is off.
16343When selecting the plain numeric keypad setup, the character returned by the 16352When selecting the plain numeric keypad setup, the character returned by the
16344decimal key must be specified.") 16353decimal key must be specified.")
16345 16354
16346(custom-autoload (quote keypad-numlock-shifted-setup) "keypad") 16355(custom-autoload (quote keypad-numlock-shifted-setup) "keypad" nil)
16347 16356
16348(autoload (quote keypad-setup) "keypad" "\ 16357(autoload (quote keypad-setup) "keypad" "\
16349Set keypad bindings in function-key-map according to SETUP. 16358Set keypad bindings in function-key-map according to SETUP.
@@ -17286,7 +17295,7 @@ This function normally would be called when the message is sent.
17286Otherwise, (the default) use a smaller, somewhat faster, and 17295Otherwise, (the default) use a smaller, somewhat faster, and
17287often correct parser.") 17296often correct parser.")
17288 17297
17289(custom-autoload (quote mail-use-rfc822) "mail-utils") 17298(custom-autoload (quote mail-use-rfc822) "mail-utils" t)
17290 17299
17291(autoload (quote mail-file-babyl-p) "mail-utils" "\ 17300(autoload (quote mail-file-babyl-p) "mail-utils" "\
17292Not documented 17301Not documented
@@ -23124,7 +23133,7 @@ SENDERS is a string of names separated by commas.
23124 23133
23125By default, `identity' is set.") 23134By default, `identity' is set.")
23126 23135
23127(custom-autoload (quote rmail-summary-line-decoder) "rmailsum") 23136(custom-autoload (quote rmail-summary-line-decoder) "rmailsum" t)
23128 23137
23129(defvar rmail-user-mail-address-regexp nil "\ 23138(defvar rmail-user-mail-address-regexp nil "\
23130*Regexp matching user mail addresses. 23139*Regexp matching user mail addresses.
@@ -23567,7 +23576,7 @@ Mode for automatic saving of minibuffer history.
23567Set this by calling the `savehist-mode' function or using the customize 23576Set this by calling the `savehist-mode' function or using the customize
23568interface.") 23577interface.")
23569 23578
23570(custom-autoload (quote savehist-mode) "savehist") 23579(custom-autoload (quote savehist-mode) "savehist" nil)
23571 23580
23572(autoload (quote savehist-mode) "savehist" "\ 23581(autoload (quote savehist-mode) "savehist" "\
23573Toggle savehist-mode. 23582Toggle savehist-mode.
@@ -24682,7 +24691,7 @@ For example, the form
24682 24691
24683would give military-style times like `21:07 (UTC)'.") 24692would give military-style times like `21:07 (UTC)'.")
24684 24693
24685(custom-autoload (quote calendar-time-display-form) "solar") 24694(custom-autoload (quote calendar-time-display-form) "solar" t)
24686 24695
24687(defvar calendar-latitude nil "\ 24696(defvar calendar-latitude nil "\
24688*Latitude of `calendar-location-name' in degrees. 24697*Latitude of `calendar-location-name' in degrees.
@@ -24694,7 +24703,7 @@ York City.
24694 24703
24695This variable should be set in `site-start'.el.") 24704This variable should be set in `site-start'.el.")
24696 24705
24697(custom-autoload (quote calendar-latitude) "solar") 24706(custom-autoload (quote calendar-latitude) "solar" t)
24698 24707
24699(defvar calendar-longitude nil "\ 24708(defvar calendar-longitude nil "\
24700*Longitude of `calendar-location-name' in degrees. 24709*Longitude of `calendar-location-name' in degrees.
@@ -24706,7 +24715,7 @@ York City.
24706 24715
24707This variable should be set in `site-start'.el.") 24716This variable should be set in `site-start'.el.")
24708 24717
24709(custom-autoload (quote calendar-longitude) "solar") 24718(custom-autoload (quote calendar-longitude) "solar" t)
24710 24719
24711(defvar calendar-location-name (quote (let ((float-output-format "%.1f")) (format "%s%s, %s%s" (if (numberp calendar-latitude) (abs calendar-latitude) (+ (aref calendar-latitude 0) (/ (aref calendar-latitude 1) 60.0))) (if (numberp calendar-latitude) (if (> calendar-latitude 0) "N" "S") (if (equal (aref calendar-latitude 2) (quote north)) "N" "S")) (if (numberp calendar-longitude) (abs calendar-longitude) (+ (aref calendar-longitude 0) (/ (aref calendar-longitude 1) 60.0))) (if (numberp calendar-longitude) (if (> calendar-longitude 0) "E" "W") (if (equal (aref calendar-longitude 2) (quote east)) "E" "W"))))) "\ 24720(defvar calendar-location-name (quote (let ((float-output-format "%.1f")) (format "%s%s, %s%s" (if (numberp calendar-latitude) (abs calendar-latitude) (+ (aref calendar-latitude 0) (/ (aref calendar-latitude 1) 60.0))) (if (numberp calendar-latitude) (if (> calendar-latitude 0) "N" "S") (if (equal (aref calendar-latitude 2) (quote north)) "N" "S")) (if (numberp calendar-longitude) (abs calendar-longitude) (+ (aref calendar-longitude 0) (/ (aref calendar-longitude 1) 60.0))) (if (numberp calendar-longitude) (if (> calendar-longitude 0) "E" "W") (if (equal (aref calendar-longitude 2) (quote east)) "E" "W"))))) "\
24712*Expression evaluating to name of `calendar-longitude', `calendar-latitude'. 24721*Expression evaluating to name of `calendar-longitude', `calendar-latitude'.
@@ -24715,7 +24724,7 @@ pair.
24715 24724
24716This variable should be set in `site-start'.el.") 24725This variable should be set in `site-start'.el.")
24717 24726
24718(custom-autoload (quote calendar-location-name) "solar") 24727(custom-autoload (quote calendar-location-name) "solar" t)
24719 24728
24720(autoload (quote sunrise-sunset) "solar" "\ 24729(autoload (quote sunrise-sunset) "solar" "\
24721Local time of sunrise and sunset for today. Accurate to a few seconds. 24730Local time of sunrise and sunset for today. Accurate to a few seconds.
@@ -28017,7 +28026,7 @@ Not documented
28017(autoload (quote tramp-completion-handle-file-name-all-completions) "tramp" "\ 28026(autoload (quote tramp-completion-handle-file-name-all-completions) "tramp" "\
28018Like `file-name-all-completions' for partial tramp files. 28027Like `file-name-all-completions' for partial tramp files.
28019 28028
28020\(fn FILENAME DIRECTORY)" nil nil) 28029\(fn FILENAME DIRECTORY &optional PREDICATE)" nil nil)
28021 28030
28022(autoload (quote tramp-completion-handle-file-name-completion) "tramp" "\ 28031(autoload (quote tramp-completion-handle-file-name-completion) "tramp" "\
28023Like `file-name-completion' for tramp files. 28032Like `file-name-completion' for tramp files.
@@ -30532,7 +30541,8 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
30532Non-nil if Which-Function mode is enabled. 30541Non-nil if Which-Function mode is enabled.
30533See the command `which-function-mode' for a description of this minor-mode. 30542See the command `which-function-mode' for a description of this minor-mode.
30534Setting this variable directly does not take effect; 30543Setting this variable directly does not take effect;
30535use either \\[customize] or the function `which-function-mode'.") 30544either customize it (see the info node `Easy Customization')
30545or call the function `which-function-mode'.")
30536 30546
30537(custom-autoload (quote which-function-mode) "which-func" nil) 30547(custom-autoload (quote which-function-mode) "which-func" nil)
30538 30548
@@ -30778,7 +30788,7 @@ Toggle Winner mode.
30778Setting this variable directly does not take effect; 30788Setting this variable directly does not take effect;
30779use either \\[customize] or the function `winner-mode'.") 30789use either \\[customize] or the function `winner-mode'.")
30780 30790
30781(custom-autoload (quote winner-mode) "winner") 30791(custom-autoload (quote winner-mode) "winner" nil)
30782 30792
30783(autoload (quote winner-mode) "winner" "\ 30793(autoload (quote winner-mode) "winner" "\
30784Toggle Winner mode. 30794Toggle Winner mode.
@@ -31150,10 +31160,9 @@ Zone out, completely.
31150;;;;;; "net/eudcb-bbdb.el" "net/eudcb-ldap.el" "net/eudcb-mab.el" 31160;;;;;; "net/eudcb-bbdb.el" "net/eudcb-ldap.el" "net/eudcb-mab.el"
31151;;;;;; "net/eudcb-ph.el" "net/ldap.el" "net/netrc.el" "net/tls.el" 31161;;;;;; "net/eudcb-ph.el" "net/ldap.el" "net/netrc.el" "net/tls.el"
31152;;;;;; "net/tramp-smb.el" "net/tramp-util.el" "net/tramp-uu.el" 31162;;;;;; "net/tramp-smb.el" "net/tramp-util.el" "net/tramp-uu.el"
31153;;;;;; "net/tramp-vc.el" "net/trampver.el" "obsolete/bg-mouse.el" 31163;;;;;; "net/tramp-vc.el" "net/trampver.el" "patcomp.el" "paths.el"
31154;;;;;; "obsolete/hilit19.el" "obsolete/sc.el" "obsolete/uncompress.el" 31164;;;;;; "pcvs-info.el" "pcvs-parse.el" "pcvs-util.el" "pgg-def.el"
31155;;;;;; "patcomp.el" "paths.el" "pcvs-info.el" "pcvs-parse.el" "pcvs-util.el" 31165;;;;;; "pgg-parse.el" "pgg-pgp.el" "pgg-pgp5.el" "play/gamegrid.el"
31156;;;;;; "pgg-def.el" "pgg-parse.el" "pgg-pgp.el" "pgg-pgp5.el" "play/gamegrid.el"
31157;;;;;; "play/gametree.el" "play/meese.el" "progmodes/ada-prj.el" 31166;;;;;; "play/gametree.el" "play/meese.el" "progmodes/ada-prj.el"
31158;;;;;; "progmodes/cc-align.el" "progmodes/cc-awk.el" "progmodes/cc-bytecomp.el" 31167;;;;;; "progmodes/cc-align.el" "progmodes/cc-awk.el" "progmodes/cc-bytecomp.el"
31159;;;;;; "progmodes/cc-cmds.el" "progmodes/cc-defs.el" "progmodes/cc-fonts.el" 31168;;;;;; "progmodes/cc-cmds.el" "progmodes/cc-defs.el" "progmodes/cc-fonts.el"
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 822a995230e..4d3ee29c4d6 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2,7 +2,7 @@
2;;; tramp.el --- Transparent Remote Access, Multiple Protocol 2;;; tramp.el --- Transparent Remote Access, Multiple Protocol
3 3
4;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 4;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
5;; 2005, 2006 Free Software Foundation, Inc. 5;; 2005, 2006, 2007 Free Software Foundation, Inc.
6 6
7;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 7;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net>
8;; Michael Albinus <michael.albinus@gmx.de> 8;; Michael Albinus <michael.albinus@gmx.de>
@@ -5540,32 +5540,36 @@ The terminal type can be configured with `tramp-terminal-type'."
5540 (let (found item pattern action todo) 5540 (let (found item pattern action todo)
5541 (erase-buffer) 5541 (erase-buffer)
5542 (tramp-message 9 "Waiting 60s for prompt from remote shell") 5542 (tramp-message 9 "Waiting 60s for prompt from remote shell")
5543 (with-timeout (60 (throw 'tramp-action 'timeout)) 5543 (while (not found)
5544 (while (not found) 5544 (tramp-accept-process-output p 1)
5545 (tramp-accept-process-output p 1) 5545 (goto-char (point-min))
5546 (setq todo actions)
5547 (while todo
5546 (goto-char (point-min)) 5548 (goto-char (point-min))
5547 (setq todo actions) 5549 (setq item (pop todo))
5548 (while todo 5550 (setq pattern (symbol-value (nth 0 item)))
5549 (goto-char (point-min)) 5551 (setq action (nth 1 item))
5550 (setq item (pop todo)) 5552 (tramp-message 10 "Looking for regexp \"%s\" from remote shell"
5551 (setq pattern (symbol-value (nth 0 item))) 5553 pattern)
5552 (setq action (nth 1 item)) 5554 (when (re-search-forward (concat pattern "\\'") nil t)
5553 (tramp-message 10 "Looking for regexp \"%s\" from remote shell" 5555 (setq found (funcall action p multi-method method user host)))))
5554 pattern) 5556 found))
5555 (when (re-search-forward (concat pattern "\\'") nil t)
5556 (setq found (funcall action p multi-method method user host)))))
5557 found)))
5558 5557
5559(defun tramp-process-actions (p multi-method method user host actions) 5558(defun tramp-process-actions
5560 "Perform actions until success." 5559 (p multi-method method user host actions &optional timeout)
5560 "Perform actions until success or TIMEOUT."
5561 (tramp-message 10 "%s" (mapconcat 'identity (process-command p) " ")) 5561 (tramp-message 10 "%s" (mapconcat 'identity (process-command p) " "))
5562 (let (exit) 5562 (let (exit)
5563 (while (not exit) 5563 (while (not exit)
5564 (tramp-message 9 "Waiting for prompts from remote shell") 5564 (tramp-message 9 "Waiting for prompts from remote shell")
5565 (setq exit 5565 (setq exit
5566 (catch 'tramp-action 5566 (catch 'tramp-action
5567 (tramp-process-one-action 5567 (if timeout
5568 p multi-method method user host actions) 5568 (with-timeout (timeout)
5569 (tramp-process-one-action
5570 p multi-method method user host actions))
5571 (tramp-process-one-action
5572 p multi-method method user host actions))
5569 nil))) 5573 nil)))
5570 (unless (eq exit 'ok) 5574 (unless (eq exit 'ok)
5571 (tramp-clear-passwd user host) 5575 (tramp-clear-passwd user host)
@@ -5689,7 +5693,7 @@ Maybe the different regular expressions need to be tuned.
5689 (set-buffer (tramp-get-buffer multi-method method user host)) 5693 (set-buffer (tramp-get-buffer multi-method method user host))
5690 (erase-buffer) 5694 (erase-buffer)
5691 (tramp-process-actions p multi-method method user host 5695 (tramp-process-actions p multi-method method user host
5692 tramp-actions-before-shell) 5696 tramp-actions-before-shell 60)
5693 (tramp-open-connection-setup-interactive-shell 5697 (tramp-open-connection-setup-interactive-shell
5694 p multi-method method user host) 5698 p multi-method method user host)
5695 (tramp-post-connection multi-method method user host))))) 5699 (tramp-post-connection multi-method method user host)))))
@@ -5762,7 +5766,7 @@ arguments, and xx will be used as the host name to connect to.
5762 5766
5763 (set-buffer buf) 5767 (set-buffer buf)
5764 (tramp-process-actions p multi-method method user host 5768 (tramp-process-actions p multi-method method user host
5765 tramp-actions-before-shell) 5769 tramp-actions-before-shell 60)
5766 (tramp-message 7 "Initializing remote shell") 5770 (tramp-message 7 "Initializing remote shell")
5767 (tramp-open-connection-setup-interactive-shell 5771 (tramp-open-connection-setup-interactive-shell
5768 p multi-method method user host) 5772 p multi-method method user host)
@@ -5823,7 +5827,7 @@ prompt than you do, so it is not at all unlikely that the variable
5823 (tramp-set-process-query-on-exit-flag p nil) 5827 (tramp-set-process-query-on-exit-flag p nil)
5824 (set-buffer (tramp-get-buffer multi-method method user host)) 5828 (set-buffer (tramp-get-buffer multi-method method user host))
5825 (tramp-process-actions p multi-method method user host 5829 (tramp-process-actions p multi-method method user host
5826 tramp-actions-before-shell) 5830 tramp-actions-before-shell 60)
5827 (tramp-open-connection-setup-interactive-shell 5831 (tramp-open-connection-setup-interactive-shell
5828 p multi-method method user host) 5832 p multi-method method user host)
5829 (tramp-post-connection multi-method method 5833 (tramp-post-connection multi-method method
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index b3c0a578649..6907b56d6c6 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -208,23 +208,31 @@ the evaluated constant value at compile time."
208 ;; Some helper functions used when building the language constants. 208 ;; Some helper functions used when building the language constants.
209 209
210 (defun c-filter-ops (ops opgroup-filter op-filter &optional xlate) 210 (defun c-filter-ops (ops opgroup-filter op-filter &optional xlate)
211 ;; Used to filter operators from the list OPS in a DWIM:ey way: 211 ;; Extract a subset of the operators in the list OPS in a DWIM:ey
212 ;; OPS either has the structure of `c-operators', as a single 212 ;; way. The return value is a plain list of operators:
213 ;;
214 ;; OPS either has the structure of `c-operators', is a single
213 ;; group in `c-operators', or is a plain list of operators. 215 ;; group in `c-operators', or is a plain list of operators.
214 ;; OPGROUP-FILTER is used filter out the operator groups. It can 216 ;;
215 ;; be t to choose all groups, a list of the group type symbols to 217 ;; OPGROUP-FILTER specifies how to select the operator groups. It
216 ;; accept, or a function which will be called with the group 218 ;; can be t to choose all groups, a list of group type symbols
217 ;; symbol for each group and should return non-nil for those to 219 ;; (such as 'prefix) to accept, or a function which will be called
218 ;; include. OP-FILTER filters the individual operators in each 220 ;; with the group symbol for each group and should return non-nil
219 ;; group. It can be t to choose all operators, a regexp to test 221 ;; if that group is to be included.
220 ;; against each operator, or a function which will be called for 222 ;;
221 ;; each operator and should return non-nil for those to include. 223 ;; OP-FILTER filters the individual operators in each group. It
224 ;; can be t to choose all operators, a regexp to test against each
225 ;; operator, or a function which will be called for each operator
226 ;; and should return non-nil for those to include.
227 ;;
222 ;; If XLATE is given, it's a function which is called for each 228 ;; If XLATE is given, it's a function which is called for each
223 ;; matching operator and its return value is collected instead. 229 ;; matching operator and its return value is collected instead.
224 ;; If it returns a list, the elements are spliced directly into 230 ;; If it returns a list, the elements are spliced directly into
225 ;; the final result, which is returned as a list with duplicates 231 ;; the final result, which is returned as a list with duplicates
226 ;; removed using `equal'. `c-mode-syntax-table' for the current 232 ;; removed using `equal'.
227 ;; mode is in effect during the whole procedure. 233 ;;
234 ;; `c-mode-syntax-table' for the current mode is in effect during
235 ;; the whole procedure.
228 (unless (listp (car-safe ops)) 236 (unless (listp (car-safe ops))
229 (setq ops (list ops))) 237 (setq ops (list ops)))
230 (cond ((eq opgroup-filter t) 238 (cond ((eq opgroup-filter t)
@@ -719,11 +727,11 @@ expression."
719(c-lang-defconst c-operators 727(c-lang-defconst c-operators
720 "List describing all operators, along with their precedence and 728 "List describing all operators, along with their precedence and
721associativity. The order in the list corresponds to the precedence of 729associativity. The order in the list corresponds to the precedence of
722the operators: The operators in each element is a group with the same 730the operators: The operators in each element are a group with the same
723precedence, and the group has higher precedence than the groups in all 731precedence, and the group has higher precedence than the groups in all
724following elements. The car of each element describes the type of of 732following elements. The car of each element describes the type of the
725the operator group, and the cdr is a list of the operator tokens in 733operator group, and the cdr is a list of the operator tokens in it.
726it. The operator group types are: 734The operator group types are:
727 735
728'prefix Unary prefix operators. 736'prefix Unary prefix operators.
729'postfix Unary postfix operators. 737'postfix Unary postfix operators.
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 04a5cf9cad7..c6876fb5d79 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -876,12 +876,12 @@ FMTS is a list of format specs for transforming the file name.
876Runs COMMAND, a shell command, in a separate process asynchronously 876Runs COMMAND, a shell command, in a separate process asynchronously
877with output going to the buffer `*compilation*'. 877with output going to the buffer `*compilation*'.
878 878
879If optional second arg COMINT is t the buffer will be in Comint mode with
880`compilation-shell-minor-mode'.
881
882You can then use the command \\[next-error] to find the next error message 879You can then use the command \\[next-error] to find the next error message
883and move to the source code that caused it. 880and move to the source code that caused it.
884 881
882If optional second arg COMINT is t the buffer will be in Comint mode with
883`compilation-shell-minor-mode'.
884
885Interactively, prompts for the command if `compilation-read-command' is 885Interactively, prompts for the command if `compilation-read-command' is
886non-nil; otherwise uses `compile-command'. With prefix arg, always prompts. 886non-nil; otherwise uses `compile-command'. With prefix arg, always prompts.
887Additionally, with universal prefix arg, compilation buffer will be in 887Additionally, with universal prefix arg, compilation buffer will be in
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 3bf4227a82f..cc58a09ec59 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -13851,7 +13851,7 @@ entity ENT-KEY."
13851 (vhdl-save-cache (car project-list)) 13851 (vhdl-save-cache (car project-list))
13852 (setq project-list (cdr project-list))) 13852 (setq project-list (cdr project-list)))
13853 (message "Saving hierarchy caches...done"))) 13853 (message "Saving hierarchy caches...done")))
13854 (error (progn (vhdl-warning "ERROR: An error occured while saving the hierarchy caches") 13854 (error (progn (vhdl-warning "ERROR: An error occurred while saving the hierarchy caches")
13855 (sit-for 2))))) 13855 (sit-for 2)))))
13856 13856
13857(defun vhdl-save-cache (key) 13857(defun vhdl-save-cache (key)
diff --git a/lisp/replace.el b/lisp/replace.el
index 610fd9d2e9f..c51985c3e4a 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -467,10 +467,9 @@ at the given position for each replacement.
467In interactive calls, the replacement text may contain `\\,' 467In interactive calls, the replacement text may contain `\\,'
468followed by a Lisp expression used as part of the replacement 468followed by a Lisp expression used as part of the replacement
469text. Inside of that expression, `\\&' is a string denoting the 469text. Inside of that expression, `\\&' is a string denoting the
470whole match, `\\N' a partial matches, `\\#&' and `\\#N' the 470whole match, `\\N' a partial match, `\\#&' and `\\#N' the respective
471respective numeric values from `string-to-number', and `\\#' 471numeric values from `string-to-number', and `\\#' itself for
472itself for `replace-count', the number of replacements occured so 472`replace-count', the number of replacements occurred so far.
473far.
474 473
475If your Lisp expression is an identifier and the next letter in 474If your Lisp expression is an identifier and the next letter in
476the replacement string would be interpreted as part of it, you 475the replacement string would be interpreted as part of it, you
diff --git a/lisp/server.el b/lisp/server.el
index 7a4179e85f6..dd64bb6cf89 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -1,7 +1,7 @@
1;;; server.el --- Lisp code for GNU Emacs running as server process 1;;; server.el --- Lisp code for GNU Emacs running as server process
2 2
3;; Copyright (C) 1986, 1987, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 3;; Copyright (C) 1986, 1987, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4;; 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 4;; 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: William Sommerfeld <wesommer@athena.mit.edu> 6;; Author: William Sommerfeld <wesommer@athena.mit.edu>
7;; Maintainer: FSF 7;; Maintainer: FSF
@@ -435,7 +435,7 @@ Creates the directory if necessary and makes sure:
435 (letf (((default-file-modes) ?\700)) (make-directory dir t)) 435 (letf (((default-file-modes) ?\700)) (make-directory dir t))
436 (setq attrs (file-attributes dir))) 436 (setq attrs (file-attributes dir)))
437 ;; Check that it's safe for use. 437 ;; Check that it's safe for use.
438 (unless (and (eq t (car attrs)) (eq (nth 2 attrs) (user-uid)) 438 (unless (and (eq t (car attrs)) (eql (nth 2 attrs) (user-uid))
439 (or (eq system-type 'windows-nt) 439 (or (eq system-type 'windows-nt)
440 (zerop (logand ?\077 (file-modes dir))))) 440 (zerop (logand ?\077 (file-modes dir)))))
441 (error "The directory %s is unsafe" dir)))) 441 (error "The directory %s is unsafe" dir))))
diff --git a/lisp/subr.el b/lisp/subr.el
index b48fa1a9f35..18f4ad65686 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1905,11 +1905,11 @@ If MESSAGE is nil, instructions to type EXIT-CHAR are displayed there."
1905 (recenter (/ (window-height) 2))) 1905 (recenter (/ (window-height) 2)))
1906 ;; If that pushed message start off the screen, 1906 ;; If that pushed message start off the screen,
1907 ;; scroll to start it at the top of the screen. 1907 ;; scroll to start it at the top of the screen.
1908 (move-to-window-line 0) 1908 (save-excursion
1909 (if (> (point) pos) 1909 (move-to-window-line 0)
1910 (progn 1910 (if (> (point) pos)
1911 (goto-char pos) 1911 (goto-char pos)
1912 (recenter 0))) 1912 (recenter 0)))
1913 (message (or message "Type %s to continue editing.") 1913 (message (or message "Type %s to continue editing.")
1914 (single-key-description exit-char)) 1914 (single-key-description exit-char))
1915 (let (char) 1915 (let (char)
@@ -2695,7 +2695,7 @@ are effectively trimmed). If nil, all zero-length substrings are retained,
2695which correctly parses CSV format, for example. 2695which correctly parses CSV format, for example.
2696 2696
2697Note that the effect of `(split-string STRING)' is the same as 2697Note that the effect of `(split-string STRING)' is the same as
2698`(split-string STRING split-string-default-separators t)'). In the rare 2698`(split-string STRING split-string-default-separators t)'. In the rare
2699case that you wish to retain zero-length substrings when splitting on 2699case that you wish to retain zero-length substrings when splitting on
2700whitespace, use `(split-string STRING split-string-default-separators)'. 2700whitespace, use `(split-string STRING split-string-default-separators)'.
2701 2701
diff --git a/lisp/term/mac-win.el b/lisp/term/mac-win.el
index f35bf080bbb..700ad57029b 100644
--- a/lisp/term/mac-win.el
+++ b/lisp/term/mac-win.el
@@ -2177,7 +2177,7 @@ either in the current buffer or in the echo area."
2177 ("TIFF" . mac-dnd-insert-TIFF)) 2177 ("TIFF" . mac-dnd-insert-TIFF))
2178 "Which function to call to handle a drop of that type. 2178 "Which function to call to handle a drop of that type.
2179The function takes three arguments, WINDOW, ACTION and DATA. 2179The function takes three arguments, WINDOW, ACTION and DATA.
2180WINDOW is where the drop occured, ACTION is always `private' on 2180WINDOW is where the drop occurred, ACTION is always `private' on
2181Mac. DATA is the drop data. Unlike the x-dnd counterpart, the 2181Mac. DATA is the drop data. Unlike the x-dnd counterpart, the
2182return value of the function is not significant. 2182return value of the function is not significant.
2183 2183
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el
index 21ee585ec11..65c8067d48a 100644
--- a/lisp/textmodes/fill.el
+++ b/lisp/textmodes/fill.el
@@ -743,7 +743,7 @@ space does not end a sentence, so don't break a line there."
743 743
744(defun fill-minibuffer-function (arg) 744(defun fill-minibuffer-function (arg)
745 "Fill a paragraph in the minibuffer, ignoring the prompt." 745 "Fill a paragraph in the minibuffer, ignoring the prompt."
746 (save-restriction 746 (save-restriction
747 (narrow-to-region (minibuffer-prompt-end) (point-max)) 747 (narrow-to-region (minibuffer-prompt-end) (point-max))
748 (fill-paragraph arg))) 748 (fill-paragraph arg)))
749 749
@@ -838,18 +838,22 @@ can take care of filling. JUSTIFY is used as in `fill-paragraph'."
838 (commark 838 (commark
839 (comment-string-strip (buffer-substring comstart comin) nil t)) 839 (comment-string-strip (buffer-substring comstart comin) nil t))
840 (comment-re 840 (comment-re
841 ;; `commark' is surrounded with arbitrary text (`\0' and `a') 841 ;; A regexp more specialized than comment-start-skip, that only
842 ;; to make sure it can be used as an optimization of 842 ;; matches the current commark rather than any valid commark.
843 ;; `comment-start-skip' in the middle of a line. For example, 843 ;;
844 ;; `commark' can't be used with the "@c" in TeXinfo (hence 844 ;; The specialized regexp only works for "normal" comment
845 ;; the `a') or with the "C" at BOL in Fortran (hence the `\0'). 845 ;; syntax, not for Texinfo's "@c" (which can't be immediately
846 (if (string-match comment-start-skip (concat "\0" commark "a")) 846 ;; followed by word-chars) or Fortran's "C" (which needs to be
847 (concat "[ \t]*" (regexp-quote commark) 847 ;; at bol), so check that comment-start-skip indeed allows the
848 ;; Make sure we only match comments that use 848 ;; commark to appear in the middle of the line and followed by
849 ;; the exact same comment marker. 849 ;; word chars. The choice of "\0" and "a" is mostly arbitrary.
850 "[^" (substring commark -1) "]") 850 (if (string-match comment-start-skip (concat "\0" commark "a"))
851 (concat "[ \t]*\\(?:" comment-start-skip "\\)"))) 851 (concat "[ \t]*" (regexp-quote commark)
852 (comment-fill-prefix ; Compute a fill prefix. 852 ;; Make sure we only match comments that
853 ;; use the exact same comment marker.
854 "[^" (substring commark -1) "]")
855 (concat "[ \t]*\\(?:" comment-start-skip "\\)")))
856 (comment-fill-prefix ; Compute a fill prefix.
853 (save-excursion 857 (save-excursion
854 (goto-char comstart) 858 (goto-char comstart)
855 (if has-code-and-comment 859 (if has-code-and-comment
@@ -944,13 +948,13 @@ Ordinarily the variable `fill-column' controls the width.
944 948
945Noninteractively, the third argument JUSTIFY specifies which 949Noninteractively, the third argument JUSTIFY specifies which
946kind of justification to do: `full', `left', `right', `center', 950kind of justification to do: `full', `left', `right', `center',
947or `none' (equivalent to nil). t means handle each paragraph 951or `none' (equivalent to nil). A value of t means handle each
948as specified by its text properties. 952paragraph as specified by its text properties.
949 953
950The fourth arg NOSQUEEZE non-nil means to leave 954The fourth arg NOSQUEEZE non-nil means to leave whitespace other
951whitespace other than line breaks untouched, and fifth arg TO-EOP 955than line breaks untouched, and fifth arg TO-EOP non-nil means
952non-nil means to keep filling to the end of the paragraph (or next 956to keep filling to the end of the paragraph (or next hard newline,
953hard newline, if variable `use-hard-newlines' is on). 957if variable `use-hard-newlines' is on).
954 958
955Return the fill-prefix used for filling the last paragraph. 959Return the fill-prefix used for filling the last paragraph.
956 960
diff --git a/lisp/tumme.el b/lisp/tumme.el
index 788a29958a8..2fc6eff2458 100644
--- a/lisp/tumme.el
+++ b/lisp/tumme.el
@@ -1646,7 +1646,7 @@ Ask user for number of images to show and the delay in between."
1646 1646
1647;;;###autoload 1647;;;###autoload
1648(defun tumme-display-thumb () 1648(defun tumme-display-thumb ()
1649 "Shorthard for `tumme-display-thumbs' with prefix argument." 1649 "Shorthand for `tumme-display-thumbs' with prefix argument."
1650 (interactive) 1650 (interactive)
1651 (tumme-display-thumbs t nil t)) 1651 (tumme-display-thumbs t nil t))
1652 1652
diff --git a/lisp/tutorial.el b/lisp/tutorial.el
index cf9a391e5a6..53f41c95646 100644
--- a/lisp/tutorial.el
+++ b/lisp/tutorial.el
@@ -446,7 +446,8 @@ where
446 (cond ((eq key-fun def-fun) 446 (cond ((eq key-fun def-fun)
447 ;; No rebinding, return t 447 ;; No rebinding, return t
448 t) 448 t)
449 ((eq key-fun (command-remapping def-fun)) 449 ((and key-fun
450 (eq key-fun (command-remapping def-fun)))
450 ;; Just a remapping, return t 451 ;; Just a remapping, return t
451 t) 452 t)
452 ;; cua-mode specials: 453 ;; cua-mode specials:
@@ -571,6 +572,8 @@ with some explanatory links."
571 (where (nth 3 ck)) 572 (where (nth 3 ck))
572 s1 s2 help-string) 573 s1 s2 help-string)
573 (unless (string= where "Same key") 574 (unless (string= where "Same key")
575 (when (string= where "")
576 (setq where (format "M-x %s" def-fun)))
574 (setq tutorial--point-after-chkeys (point-marker) 577 (setq tutorial--point-after-chkeys (point-marker)
575 s1 (get-lang-string tutorial--lang 'tut-chgdkey) 578 s1 (get-lang-string tutorial--lang 'tut-chgdkey)
576 s2 (get-lang-string tutorial--lang 'tut-chgdkey2) 579 s2 (get-lang-string tutorial--lang 'tut-chgdkey2)
diff --git a/lisp/wdired.el b/lisp/wdired.el
index 5a925e5d031..2c43b6f1552 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -576,8 +576,11 @@ If OLD, return the old target. If MOVE, move point before it."
576 (funcall command 1) 576 (funcall command 1)
577 (setq arg (1- arg))) 577 (setq arg (1- arg)))
578 (error 578 (error
579 (if (not (forward-word 1)) 579 (if (forward-word)
580 (setq arg 0))))))) 580 ;; Skip any non-word characters to avoid triggering a read-only
581 ;; error which would cause skipping the next word characters too.
582 (skip-syntax-forward "^w")
583 (setq arg 0)))))))
581 584
582(defun wdired-downcase-word (arg) 585(defun wdired-downcase-word (arg)
583 "WDired version of `downcase-word'. 586 "WDired version of `downcase-word'.
diff --git a/lisp/x-dnd.el b/lisp/x-dnd.el
index 717fcf207da..1c72d0a65fe 100644
--- a/lisp/x-dnd.el
+++ b/lisp/x-dnd.el
@@ -70,7 +70,7 @@ The default value for this variable is `x-dnd-default-test-function'."
70 "Which function to call to handle a drop of that type. 70 "Which function to call to handle a drop of that type.
71If the type for the drop is not present, or the function is nil, 71If the type for the drop is not present, or the function is nil,
72the drop is rejected. The function takes three arguments, WINDOW, ACTION 72the drop is rejected. The function takes three arguments, WINDOW, ACTION
73and DATA. WINDOW is where the drop occured, ACTION is the action for 73and DATA. WINDOW is where the drop occurred, ACTION is the action for
74this drop (copy, move, link, private or ask) as determined by a previous 74this drop (copy, move, link, private or ask) as determined by a previous
75call to `x-dnd-test-function'. DATA is the drop data. 75call to `x-dnd-test-function'. DATA is the drop data.
76The function shall return the action used (copy, move, link or private) if drop 76The function shall return the action used (copy, move, link or private) if drop
diff --git a/man/ChangeLog b/man/ChangeLog
index 8bed7ae1672..342bafa4e6b 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,8 @@
12007-01-10 Richard Stallman <rms@gnu.org>
2
3 * msdog.texi (Windows Keyboard): Yet another try to make
4 everyone happy with that passage.
5
12007-01-05 Richard Stallman <rms@gnu.org> 62007-01-05 Richard Stallman <rms@gnu.org>
2 7
3 * anti.texi (Antinews): Mention M-x shell scrolling. 8 * anti.texi (Antinews): Mention M-x shell scrolling.
diff --git a/man/msdog.texi b/man/msdog.texi
index 8aecd513591..4f1711ff9ea 100644
--- a/man/msdog.texi
+++ b/man/msdog.texi
@@ -336,12 +336,12 @@ keyboard input in Emacs.
336@cindex MS-Windows keyboard shortcuts 336@cindex MS-Windows keyboard shortcuts
337 Many key combinations (known as ``keyboard shortcuts'') that have 337 Many key combinations (known as ``keyboard shortcuts'') that have
338conventional uses in MS-Windows programs conflict with traditional 338conventional uses in MS-Windows programs conflict with traditional
339Emacs commands. This conflict arose because the designers of the CUA 339Emacs commands. (These Emacs commands were established years before
340interface implemented by MS-Windows did not try to avoid conflict with 340MS-Windows, and years before Microsoft.) Examples of conflicts
341Emacs. Examples of conflicts include @kbd{C-c}, @kbd{C-x}, @kbd{C-z}, 341include @kbd{C-c}, @kbd{C-x}, @kbd{C-z}, @kbd{C-a}, and
342@kbd{C-a}, and @kbd{W-@key{SPC}}. You can redefine some of them with 342@kbd{W-@key{SPC}}. You can redefine some of them with meanings more
343meanings more like the MS-Windows meanings by enabling CUA Mode 343like the MS-Windows meanings by enabling CUA Mode (@pxref{CUA
344(@pxref{CUA Bindings}). 344Bindings}).
345 345
346@kindex F10 @r{(MS-Windows)} 346@kindex F10 @r{(MS-Windows)}
347@cindex menu bar access using keyboard @r{(MS-Windows)} 347@cindex menu bar access using keyboard @r{(MS-Windows)}
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 179efe7a8d4..f3c983e8b37 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,7 @@
12007-01-10 Jason Rumney <jasonr@gnu.org>
2
3 * README: Update URLs and advice about reporting bugs.
4
12006-12-29 Jason Rumney <jasonr@gnu.org> 52006-12-29 Jason Rumney <jasonr@gnu.org>
2 6
3 * nmake.defs (TEMACS_EXTRA_LINK): Remove duplicated flags from 7 * nmake.defs (TEMACS_EXTRA_LINK): Remove duplicated flags from
diff --git a/nt/README b/nt/README
index b1d7cb5ae57..6a83eadfbb3 100644
--- a/nt/README
+++ b/nt/README
@@ -1,7 +1,7 @@
1 Emacs for Windows NT/2000 and Windows 95/98/ME 1 Emacs for Windows NT/2000 and Windows 95/98/ME
2 2
3 Copyright (C) 2001, 2002, 2003, 2004, 2005, 3 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
4 2006 Free Software Foundation, Inc. 4 2007 Free Software Foundation, Inc.
5 See the end of the INSTALL file in this directory for copying permissions. 5 See the end of the INSTALL file in this directory for copying permissions.
6 6
7 This directory contains support for compiling and running GNU Emacs on 7 This directory contains support for compiling and running GNU Emacs on
@@ -12,7 +12,7 @@
12 12
13 Precompiled distributions are also available; ftp to 13 Precompiled distributions are also available; ftp to
14 14
15 ftp://ftp.gnu.org/gnu/windows/emacs/latest/ 15 ftp://ftp.gnu.org/gnu/emacs/windows/
16 16
17 for the latest precompiled distributions. 17 for the latest precompiled distributions.
18 18
@@ -59,22 +59,12 @@
59 about it. First check the file etc/PROBLEMS and the FAQ on the web 59 about it. First check the file etc/PROBLEMS and the FAQ on the web
60 page above to see if the bug is already known and if there are any 60 page above to see if the bug is already known and if there are any
61 workarounds. If not, then check whether the bug has something to do 61 workarounds. If not, then check whether the bug has something to do
62 with code in your .emacs file, e.g. by invoking Emacs with the "-q 62 with code in your .emacs file, e.g. by invoking Emacs with the "-Q"
63 --no-site-file" options. 63 option.
64 64
65 If you decide that it is a bug in Emacs that might be specific to the 65 Use the built in bug reporting functionality in Emacs so that it
66 Windows port, send a message to the help-emacs-windows@gnu.org 66 will be seen by the right people. You can use the command M-x
67 mailing list describing the bug, the version of Emacs that you are 67 report-emacs-bug to create and send the bug report, but in some
68 using, and the operating system that you are running on (Windows NT, 68 cases there is a function to report bugs in a specific package;
69 95 or 98 including service pack level if known). If the bug is 69 e.g. M-x gnus-bug for Gnus, M-x c-submit-bug-report for C/C++/Java
70 related to subprocesses, also specify which shell you are using (e.g., 70 mode, etc.
71 include the values of `shell-file-name' and `shell-explicit-file-name'
72 in your message).
73
74 If you think the bug is not specific to the Windows port of Emacs,
75 then it is better to mail the bug report to bug-gnu-emacs@gnu.org so
76 that it will be seen by the right people. If Emacs has been set up to
77 send mail, you can use the command M-x report-emacs-bug to create and
78 send the bug report, but in some cases there is a function to report
79 bugs in a specific package; e.g. M-x gnus-bug for Gnus, M-x
80 c-submit-bug-report for C/C++/Java mode, etc.
diff --git a/src/ChangeLog b/src/ChangeLog
index 97c9d4cbeb9..1974d45dd2c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,71 @@
12007-01-10 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * editfns.c (Fformat): Allow integer-format to work with floats of size
4 larger than most-positive-fixnum (but still smaller than MAXINT).
5
6 * dired.c (Ffile_attributes): Use floats for large uids/gids.
7
82007-01-09 Eli Zaretskii <eliz@gnu.org>
9
10 * emacs.c (syms_of_emacs) <path-separator>: Doc fix.
11
122007-01-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
13
14 * callproc.c (Fcall_process_region) [HAVE_MKSTEMP]: Add BLOCK_INPUT
15 around mkstemp.
16
17 * image.c (XDrawLine) [MAC_OS]: Remove macro.
18 (XCreateGC_pixmap) [!HAVE_NTGUI]: Likewise.
19 (x_disable_image) [!HAVE_NTGUI]: Use XCreateGC instead of
20 XCreateGC_pixmap.
21
22 * macgui.h (Display): Typedef to opaque type.
23
24 * macmenu.c (mac_dialog_modal_filter) [MAC_OSX]: New function.
25 (Fx_popup_dialog) [MAC_OSX]: Use standard alert if called from
26 Fmessage_box, Fyes_or_no_p, or Fy_or_n_p.
27 [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030] (menu_quit_handler):
28 Use mac_quit_char_key_p.
29
30 * macterm.c (XDrawLine): Rename from mac_draw_line_to_pixmap.
31 (XCreateGC): Change type of 2nd argument to void *.
32 (XFreeGC) [USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
33 Fix last change.
34 (mac_to_emacs_modifiers): Change return type to int.
35 [USE_CARBON_EVENTS] (mac_event_to_emacs_modifiers): Likewise.
36 (mac_mapped_modifiers): New function.
37 (XTread_socket): Use it.
38 [USE_TSM] (mac_handle_text_input_event): Likewise.
39 (do_window_update) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw.
40 (mac_quit_char_modifiers, mac_quit_char_keycode) [MAC_OSX]:
41 Remove variables.
42 (mac_determine_quit_char_modifiers, init_quit_char_handler)
43 [MAC_OSX]: Remove functions.
44 (make_ctrl_char) [MAC_OSX]: Add extern.
45 (mac_quit_char_key_p) [MAC_OSX]: New function.
46 (mac_initialize) [MAC_OSX]: Don't call init_quit_char_handler.
47
48 * macterm.h (FONT_MAX_WIDTH): Remove unused macro.
49 (XCreateGC): Change type in extern.
50 (XDrawLine): Rename from mac_draw_line_to_pixmap.
51 (mac_quit_char_key_p) [MAC_OSX]: Add extern.
52
532007-01-08 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
54
55 * keyboard.c (init_keyboard): Initialize interrupt_input_blocked and
56 interrupt_input_pending.
57
58 * xterm.h (x_display_info): New: net_supported_atoms,
59 nr_net_supported_atoms and net_supported_window.
60
61 * xterm.c: New variable last_user_time.
62 (handle_one_xevent): Set last_user_time from events that have Time.
63 Set net_supported_window to 0 when reparented.
64 (wm_supports): New function.
65 (do_ewmh_fullscreen): Use wm_supports to check for _NET_WM_STATE.
66 (x_term_init): Initialize net_supported_atoms, nr_net_supported_atoms
67 and net_supported_window.
68
12007-01-05 Kim F. Storm <storm@cua.dk> 692007-01-05 Kim F. Storm <storm@cua.dk>
2 70
3 * indent.c (Fvertical_motion): Fix it overshoot check for overlay 71 * indent.c (Fvertical_motion): Fix it overshoot check for overlay
@@ -148,8 +216,8 @@
148 216
1492006-12-22 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 2172006-12-22 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
150 218
151 * macfns.c (mac_update_title_bar) [TARGET_API_MAC_CARBON]: Call 219 * macfns.c (mac_update_title_bar) [TARGET_API_MAC_CARBON]:
152 mac_update_proxy_icon also when buffer modification flag changed. 220 Call mac_update_proxy_icon also when buffer modification flag changed.
153 [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): Don't update alias, 221 [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): Don't update alias,
154 but compare FSRef/FSSpec of resolved alias. 222 but compare FSRef/FSSpec of resolved alias.
155 223
@@ -242,8 +310,8 @@
242 (Fmac_atsu_font_face_attributes) [USE_ATSUI]: New function. 310 (Fmac_atsu_font_face_attributes) [USE_ATSUI]: New function.
243 (syms_of_macfns) [USE_ATSUI]: Defsubr it. 311 (syms_of_macfns) [USE_ATSUI]: Defsubr it.
244 312
245 * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Use 313 * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag):
246 mac_wakeup_from_rne instead of mac_post_mouse_moved_event. 314 Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event.
247 315
248 * macterm.c (mac_query_char_extents) [USE_ATSUI]: Don't call 316 * macterm.c (mac_query_char_extents) [USE_ATSUI]: Don't call
249 ATSUGetGlyphBounds if not necessary. 317 ATSUGetGlyphBounds if not necessary.
@@ -256,8 +324,8 @@
256 (mac_load_query_font) [USE_ATSUI]: Use atsu_find_font_from_family_name. 324 (mac_load_query_font) [USE_ATSUI]: Use atsu_find_font_from_family_name.
257 Don't get metrics for Latin-1 right half characters. 325 Don't get metrics for Latin-1 right half characters.
258 (mac_load_query_font): Don't load font if space width is not positive. 326 (mac_load_query_font): Don't load font if space width is not positive.
259 [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event): Use 327 [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event):
260 mac_wakeup_from_rne instead of mac_post_mouse_moved_event. 328 Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event.
261 (XTread_socket): Call SelectWindow when unfocused frame is clicked. 329 (XTread_socket): Call SelectWindow when unfocused frame is clicked.
262 330
263 * macterm.h (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: Add extern. 331 * macterm.h (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: Add extern.
diff --git a/src/callproc.c b/src/callproc.c
index bc9c8d67d11..eb7f8ff6252 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -1107,7 +1107,11 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
1107 1107
1108#ifdef HAVE_MKSTEMP 1108#ifdef HAVE_MKSTEMP
1109 { 1109 {
1110 int fd = mkstemp (tempfile); 1110 int fd;
1111
1112 BLOCK_INPUT;
1113 fd = mkstemp (tempfile);
1114 UNBLOCK_INPUT;
1111 if (fd == -1) 1115 if (fd == -1)
1112 report_file_error ("Failed to open temporary file", 1116 report_file_error ("Failed to open temporary file",
1113 Fcons (Vtemp_file_name_pattern, Qnil)); 1117 Fcons (Vtemp_file_name_pattern, Qnil));
diff --git a/src/dired.c b/src/dired.c
index ffaeb5adee4..7b8f978b20c 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -1,6 +1,6 @@
1/* Lisp functions for making directory listings. 1/* Lisp functions for making directory listings.
2 Copyright (C) 1985, 1986, 1993, 1994, 1999, 2000, 2001, 2002, 2003, 2 Copyright (C) 1985, 1986, 1993, 1994, 1999, 2000, 2001, 2002, 2003,
3 2004, 2005, 2006 Free Software Foundation, Inc. 3 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -966,16 +966,18 @@ Elements of the attribute list are:
966 values[1] = make_number (s.st_nlink); 966 values[1] = make_number (s.st_nlink);
967 if (NILP (id_format) || EQ (id_format, Qinteger)) 967 if (NILP (id_format) || EQ (id_format, Qinteger))
968 { 968 {
969 values[2] = make_number (s.st_uid); 969 values[2] = make_fixnum_or_float (s.st_uid);
970 values[3] = make_number (s.st_gid); 970 values[3] = make_fixnum_or_float (s.st_gid);
971 } 971 }
972 else 972 else
973 { 973 {
974 BLOCK_INPUT; 974 BLOCK_INPUT;
975 pw = (struct passwd *) getpwuid (s.st_uid); 975 pw = (struct passwd *) getpwuid (s.st_uid);
976 values[2] = (pw ? build_string (pw->pw_name) : make_number (s.st_uid)); 976 values[2] = (pw ? build_string (pw->pw_name)
977 : make_fixnum_or_float (s.st_uid));
977 gr = (struct group *) getgrgid (s.st_gid); 978 gr = (struct group *) getgrgid (s.st_gid);
978 values[3] = (gr ? build_string (gr->gr_name) : make_number (s.st_gid)); 979 values[3] = (gr ? build_string (gr->gr_name)
980 : make_fixnum_or_float (s.st_gid));
979 UNBLOCK_INPUT; 981 UNBLOCK_INPUT;
980 } 982 }
981 values[4] = make_time (s.st_atime); 983 values[4] = make_time (s.st_atime);
diff --git a/src/editfns.c b/src/editfns.c
index 6089ee9a2e2..ab29a07b693 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1,7 +1,7 @@
1/* Lisp functions pertaining to editing. 1/* Lisp functions pertaining to editing.
2 Copyright (C) 1985, 1986, 1987, 1989, 1993, 1994, 1995, 1996, 2 Copyright (C) 1985, 1986, 1987, 1989, 1993, 1994, 1995, 1996,
3 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 3 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
4 2005, 2006 Free Software Foundation, Inc. 4 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6This file is part of GNU Emacs. 6This file is part of GNU Emacs.
7 7
@@ -3631,7 +3631,12 @@ usage: (format STRING &rest OBJECTS) */)
3631 if (*format != 'd' && *format != 'o' && *format != 'x' 3631 if (*format != 'd' && *format != 'o' && *format != 'x'
3632 && *format != 'i' && *format != 'X' && *format != 'c') 3632 && *format != 'i' && *format != 'X' && *format != 'c')
3633 error ("Invalid format operation %%%c", *format); 3633 error ("Invalid format operation %%%c", *format);
3634 args[n] = Ftruncate (args[n], Qnil); 3634 /* This fails unnecessarily if args[n] is bigger than
3635 most-positive-fixnum but smaller than MAXINT.
3636 These cases are important because we sometimes use floats
3637 to represent such integer values (typically such values
3638 come from UIDs or PIDs). */
3639 /* args[n] = Ftruncate (args[n], Qnil); */
3635 } 3640 }
3636 3641
3637 /* Note that we're using sprintf to print floats, 3642 /* Note that we're using sprintf to print floats,
@@ -3799,8 +3804,15 @@ usage: (format STRING &rest OBJECTS) */)
3799 else 3804 else
3800 sprintf (p, this_format, XUINT (args[n])); 3805 sprintf (p, this_format, XUINT (args[n]));
3801 } 3806 }
3802 else 3807 else if (format[-1] == 'e' || format[-1] == 'f' || format[-1] == 'g')
3803 sprintf (p, this_format, XFLOAT_DATA (args[n])); 3808 sprintf (p, this_format, XFLOAT_DATA (args[n]));
3809 else if (format[-1] == 'd')
3810 /* Maybe we should use "%1.0f" instead so it also works
3811 for values larger than MAXINT. */
3812 sprintf (p, this_format, (EMACS_INT) XFLOAT_DATA (args[n]));
3813 else
3814 /* Don't sign-extend for octal or hex printing. */
3815 sprintf (p, this_format, (EMACS_UINT) XFLOAT_DATA (args[n]));
3804 3816
3805 if (p > buf 3817 if (p > buf
3806 && multibyte 3818 && multibyte
diff --git a/src/emacs.c b/src/emacs.c
index 8ffab8f0d3d..d068ee767bf 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -2483,7 +2483,8 @@ before you compile Emacs, to enable the code for this feature. */);
2483 emacs_priority = 0; 2483 emacs_priority = 0;
2484 2484
2485 DEFVAR_LISP ("path-separator", &Vpath_separator, 2485 DEFVAR_LISP ("path-separator", &Vpath_separator,
2486 doc: /* The directory separator in search paths, as a string. */); 2486 doc: /* String containing the character that separates directories in
2487search paths, such as PATH and other similar environment variables. */);
2487 { 2488 {
2488 char c = SEPCHAR; 2489 char c = SEPCHAR;
2489 Vpath_separator = make_string (&c, 1); 2490 Vpath_separator = make_string (&c, 1);
diff --git a/src/image.c b/src/image.c
index 8f13da337ff..b4ee3104543 100644
--- a/src/image.c
+++ b/src/image.c
@@ -122,8 +122,6 @@ typedef struct mac_bitmap_record Bitmap_Record;
122#define FRAME_X_VISUAL(f) FRAME_X_DISPLAY_INFO (f)->visual 122#define FRAME_X_VISUAL(f) FRAME_X_DISPLAY_INFO (f)->visual
123#define x_defined_color mac_defined_color 123#define x_defined_color mac_defined_color
124#define DefaultDepthOfScreen(screen) (one_mac_display_info.n_planes) 124#define DefaultDepthOfScreen(screen) (one_mac_display_info.n_planes)
125#define XDrawLine(display, w, gc, x1, y1, x2, y2) \
126 mac_draw_line_to_pixmap(display, w, gc, x1, y1, x2, y2)
127 125
128#endif /* MAC_OS */ 126#endif /* MAC_OS */
129 127
@@ -5253,14 +5251,12 @@ x_disable_image (f, img)
5253 GC gc; 5251 GC gc;
5254 5252
5255#ifdef MAC_OS 5253#ifdef MAC_OS
5256#define XCreateGC_pixmap(dpy, pixmap) XCreateGC (dpy, NULL, 0, NULL)
5257#define MaskForeground(f) PIX_MASK_DRAW 5254#define MaskForeground(f) PIX_MASK_DRAW
5258#else 5255#else
5259#define XCreateGC_pixmap(dpy, pixmap) XCreateGC (dpy, pixmap, 0, NULL)
5260#define MaskForeground(f) WHITE_PIX_DEFAULT (f) 5256#define MaskForeground(f) WHITE_PIX_DEFAULT (f)
5261#endif 5257#endif
5262 5258
5263 gc = XCreateGC_pixmap (dpy, img->pixmap); 5259 gc = XCreateGC (dpy, img->pixmap, 0, NULL);
5264 XSetForeground (dpy, gc, BLACK_PIX_DEFAULT (f)); 5260 XSetForeground (dpy, gc, BLACK_PIX_DEFAULT (f));
5265 XDrawLine (dpy, img->pixmap, gc, 0, 0, 5261 XDrawLine (dpy, img->pixmap, gc, 0, 0,
5266 img->width - 1, img->height - 1); 5262 img->width - 1, img->height - 1);
@@ -5270,7 +5266,7 @@ x_disable_image (f, img)
5270 5266
5271 if (img->mask) 5267 if (img->mask)
5272 { 5268 {
5273 gc = XCreateGC_pixmap (dpy, img->mask); 5269 gc = XCreateGC (dpy, img->mask, 0, NULL);
5274 XSetForeground (dpy, gc, MaskForeground (f)); 5270 XSetForeground (dpy, gc, MaskForeground (f));
5275 XDrawLine (dpy, img->mask, gc, 0, 0, 5271 XDrawLine (dpy, img->mask, gc, 0, 0,
5276 img->width - 1, img->height - 1); 5272 img->width - 1, img->height - 1);
diff --git a/src/keyboard.c b/src/keyboard.c
index 656a642c666..c2603427004 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -11410,6 +11410,8 @@ init_keyboard ()
11410 do_mouse_tracking = Qnil; 11410 do_mouse_tracking = Qnil;
11411#endif 11411#endif
11412 input_pending = 0; 11412 input_pending = 0;
11413 interrupt_input_blocked = 0;
11414 interrupt_input_pending = 0;
11413 11415
11414 /* This means that command_loop_1 won't try to select anything the first 11416 /* This means that command_loop_1 won't try to select anything the first
11415 time through. */ 11417 time through. */
diff --git a/src/macgui.h b/src/macgui.h
index 3a9913181de..7eed001a4db 100644
--- a/src/macgui.h
+++ b/src/macgui.h
@@ -24,7 +24,7 @@ Boston, MA 02110-1301, USA. */
24#ifndef EMACS_MACGUI_H 24#ifndef EMACS_MACGUI_H
25#define EMACS_MACGUI_H 25#define EMACS_MACGUI_H
26 26
27typedef int Display; /* fix later */ 27typedef struct _XDisplay Display; /* opaque */
28 28
29typedef Lisp_Object XrmDatabase; 29typedef Lisp_Object XrmDatabase;
30 30
diff --git a/src/macmenu.c b/src/macmenu.c
index 9981250979a..a70a80d32ed 100644
--- a/src/macmenu.c
+++ b/src/macmenu.c
@@ -876,6 +876,32 @@ no quit occurs and `x-popup-menu' returns nil. */)
876 876
877#ifdef HAVE_MENUS 877#ifdef HAVE_MENUS
878 878
879/* Regard ESC and C-g as Cancel even without the Cancel button. */
880
881#ifdef MAC_OSX
882static Boolean
883mac_dialog_modal_filter (dialog, event, item_hit)
884 DialogRef dialog;
885 EventRecord *event;
886 DialogItemIndex *item_hit;
887{
888 Boolean result;
889
890 result = StdFilterProc (dialog, event, item_hit);
891 if (result == false
892 && (event->what == keyDown || event->what == autoKey)
893 && ((event->message & charCodeMask) == kEscapeCharCode
894 || mac_quit_char_key_p (event->modifiers,
895 (event->message & keyCodeMask) >> 8)))
896 {
897 *item_hit = kStdCancelItemIndex;
898 return true;
899 }
900
901 return result;
902}
903#endif
904
879DEFUN ("x-popup-dialog", Fx_popup_dialog, Sx_popup_dialog, 2, 3, 0, 905DEFUN ("x-popup-dialog", Fx_popup_dialog, Sx_popup_dialog, 2, 3, 0,
880 doc: /* Pop up a dialog box and return user's selection. 906 doc: /* Pop up a dialog box and return user's selection.
881POSITION specifies which frame to use. 907POSITION specifies which frame to use.
@@ -961,6 +987,96 @@ for instance using the window manager, then this produces a quit and
961 but I don't want to make one now. */ 987 but I don't want to make one now. */
962 CHECK_WINDOW (window); 988 CHECK_WINDOW (window);
963 989
990#ifdef MAC_OSX
991 /* Special treatment for Fmessage_box, Fyes_or_no_p, and Fy_or_n_p. */
992 if (EQ (position, Qt)
993 && STRINGP (Fcar (contents))
994 && ((!NILP (Fequal (XCDR (contents),
995 Fcons (Fcons (build_string ("OK"), Qt), Qnil)))
996 && EQ (header, Qt))
997 || (!NILP (Fequal (XCDR (contents),
998 Fcons (Fcons (build_string ("Yes"), Qt),
999 Fcons (Fcons (build_string ("No"), Qnil),
1000 Qnil))))
1001 && NILP (header))))
1002 {
1003 OSStatus err = noErr;
1004 AlertStdCFStringAlertParamRec param;
1005 CFStringRef error_string, explanation_string;
1006 DialogRef alert;
1007 DialogItemIndex item_hit;
1008 Lisp_Object tem;
1009
1010 tem = Fstring_match (concat3 (build_string ("\\("),
1011 call0 (intern ("sentence-end")),
1012 build_string ("\\)\n")),
1013 XCAR (contents), Qnil);
1014 BLOCK_INPUT;
1015 if (NILP (tem))
1016 {
1017 error_string = cfstring_create_with_string (XCAR (contents));
1018 if (error_string == NULL)
1019 err = memFullErr;
1020 explanation_string = NULL;
1021 }
1022 else
1023 {
1024 tem = Fmatch_end (make_number (1));
1025 error_string =
1026 cfstring_create_with_string (Fsubstring (XCAR (contents),
1027 make_number (0), tem));
1028 if (error_string == NULL)
1029 err = memFullErr;
1030 else
1031 {
1032 XSETINT (tem, XINT (tem) + 1);
1033 explanation_string =
1034 cfstring_create_with_string (Fsubstring (XCAR (contents),
1035 tem, Qnil));
1036 if (explanation_string == NULL)
1037 {
1038 CFRelease (error_string);
1039 err = memFullErr;
1040 }
1041 }
1042 }
1043 if (err == noErr)
1044 err = GetStandardAlertDefaultParams (&param,
1045 kStdCFStringAlertVersionOne);
1046 if (err == noErr)
1047 {
1048 param.movable = true;
1049 param.position = kWindowAlertPositionParentWindow;
1050 if (NILP (header))
1051 {
1052 param.defaultText = CFSTR ("Yes");
1053 param.otherText = CFSTR ("No");
1054#if 0
1055 param.cancelText = CFSTR ("Cancel");
1056 param.cancelButton = kAlertStdAlertCancelButton;
1057#endif
1058 }
1059 err = CreateStandardAlert (kAlertNoteAlert, error_string,
1060 explanation_string, &param, &alert);
1061 CFRelease (error_string);
1062 if (explanation_string)
1063 CFRelease (explanation_string);
1064 }
1065 if (err == noErr)
1066 err = RunStandardAlert (alert, mac_dialog_modal_filter, &item_hit);
1067 UNBLOCK_INPUT;
1068
1069 if (err == noErr)
1070 {
1071 if (item_hit == kStdCancelItemIndex)
1072 Fsignal (Qquit, Qnil);
1073 else if (item_hit == kStdOkItemIndex)
1074 return Qt;
1075 else
1076 return Qnil;
1077 }
1078 }
1079#endif
964#ifndef HAVE_DIALOGS 1080#ifndef HAVE_DIALOGS
965 /* Display a menu with these alternatives 1081 /* Display a menu with these alternatives
966 in the middle of frame F. */ 1082 in the middle of frame F. */
@@ -1537,8 +1653,6 @@ menu_quit_handler (nextHandler, theEvent, userData)
1537 OSStatus err; 1653 OSStatus err;
1538 UInt32 keyCode; 1654 UInt32 keyCode;
1539 UInt32 keyModifiers; 1655 UInt32 keyModifiers;
1540 extern int mac_quit_char_modifiers;
1541 extern int mac_quit_char_keycode;
1542 1656
1543 err = GetEventParameter (theEvent, kEventParamKeyCode, 1657 err = GetEventParameter (theEvent, kEventParamKeyCode,
1544 typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode); 1658 typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode);
@@ -1548,8 +1662,7 @@ menu_quit_handler (nextHandler, theEvent, userData)
1548 typeUInt32, NULL, sizeof(UInt32), 1662 typeUInt32, NULL, sizeof(UInt32),
1549 NULL, &keyModifiers); 1663 NULL, &keyModifiers);
1550 1664
1551 if (err == noErr && keyCode == mac_quit_char_keycode 1665 if (err == noErr && mac_quit_char_key_p (keyModifiers, keyCode))
1552 && keyModifiers == mac_quit_char_modifiers)
1553 { 1666 {
1554 MenuRef menu = userData != 0 1667 MenuRef menu = userData != 0
1555 ? (MenuRef)userData : AcquireRootMenu (); 1668 ? (MenuRef)userData : AcquireRootMenu ();
diff --git a/src/macterm.c b/src/macterm.c
index 7c3f036f1ba..1706da48cc3 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -505,8 +505,10 @@ mac_draw_line (f, gc, x1, y1, x2, y2)
505#endif 505#endif
506} 506}
507 507
508/* Mac version of XDrawLine (to Pixmap). */
509
508void 510void
509mac_draw_line_to_pixmap (display, p, gc, x1, y1, x2, y2) 511XDrawLine (display, p, gc, x1, y1, x2, y2)
510 Display *display; 512 Display *display;
511 Pixmap p; 513 Pixmap p;
512 GC gc; 514 GC gc;
@@ -1628,9 +1630,9 @@ XChangeGC (display, gc, mask, xgcv)
1628/* Mac replacement for XCreateGC. */ 1630/* Mac replacement for XCreateGC. */
1629 1631
1630GC 1632GC
1631XCreateGC (display, window, mask, xgcv) 1633XCreateGC (display, d, mask, xgcv)
1632 Display *display; 1634 Display *display;
1633 Window window; 1635 void *d;
1634 unsigned long mask; 1636 unsigned long mask;
1635 XGCValues *xgcv; 1637 XGCValues *xgcv;
1636{ 1638{
@@ -1663,8 +1665,13 @@ XFreeGC (display, gc)
1663 if (gc->clip_region) 1665 if (gc->clip_region)
1664 DisposeRgn (gc->clip_region); 1666 DisposeRgn (gc->clip_region);
1665#if USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 1667#if USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
1666 CGColorRelease (gc->cg_fore_color); 1668#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
1667 CGColorRelease (gc->cg_back_color); 1669 if (CGColorGetTypeID != NULL)
1670#endif
1671 {
1672 CGColorRelease (gc->cg_fore_color);
1673 CGColorRelease (gc->cg_back_color);
1674 }
1668#endif 1675#endif
1669 xfree (gc); 1676 xfree (gc);
1670} 1677}
@@ -8967,7 +8974,7 @@ static const unsigned char fn_keycode_to_keycode_table[] = {
8967}; 8974};
8968#endif /* MAC_OSX */ 8975#endif /* MAC_OSX */
8969 8976
8970static unsigned int 8977static int
8971#if USE_CARBON_EVENTS 8978#if USE_CARBON_EVENTS
8972mac_to_emacs_modifiers (UInt32 mods) 8979mac_to_emacs_modifiers (UInt32 mods)
8973#else 8980#else
@@ -9014,6 +9021,23 @@ mac_to_emacs_modifiers (EventModifiers mods)
9014 return result; 9021 return result;
9015} 9022}
9016 9023
9024static UInt32
9025mac_mapped_modifiers (modifiers)
9026 UInt32 modifiers;
9027{
9028 UInt32 mapped_modifiers_all =
9029 (NILP (Vmac_control_modifier) ? 0 : controlKey)
9030 | (NILP (Vmac_option_modifier) ? 0 : optionKey)
9031 | (NILP (Vmac_command_modifier) ? 0 : cmdKey);
9032
9033#ifdef MAC_OSX
9034 mapped_modifiers_all |=
9035 (NILP (Vmac_function_modifier) ? 0 : kEventKeyModifierFnMask);
9036#endif
9037
9038 return mapped_modifiers_all & modifiers;
9039}
9040
9017static int 9041static int
9018mac_get_emulated_btn ( UInt32 modifiers ) 9042mac_get_emulated_btn ( UInt32 modifiers )
9019{ 9043{
@@ -9031,7 +9055,7 @@ mac_get_emulated_btn ( UInt32 modifiers )
9031#if USE_CARBON_EVENTS 9055#if USE_CARBON_EVENTS
9032/* Obtains the event modifiers from the event ref and then calls 9056/* Obtains the event modifiers from the event ref and then calls
9033 mac_to_emacs_modifiers. */ 9057 mac_to_emacs_modifiers. */
9034static UInt32 9058static int
9035mac_event_to_emacs_modifiers (EventRef eventRef) 9059mac_event_to_emacs_modifiers (EventRef eventRef)
9036{ 9060{
9037 UInt32 mods = 0; 9061 UInt32 mods = 0;
@@ -9256,6 +9280,9 @@ do_window_update (WindowPtr win)
9256 GetPortVisibleRegion (GetWindowPort (win), region); 9280 GetPortVisibleRegion (GetWindowPort (win), region);
9257 GetRegionBounds (region, &r); 9281 GetRegionBounds (region, &r);
9258 expose_frame (f, r.left, r.top, r.right - r.left, r.bottom - r.top); 9282 expose_frame (f, r.left, r.top, r.right - r.left, r.bottom - r.top);
9283#if USE_CG_DRAWING
9284 mac_prepare_for_quickdraw (f);
9285#endif
9259 UpdateControls (win, region); 9286 UpdateControls (win, region);
9260 DisposeRgn (region); 9287 DisposeRgn (region);
9261#else 9288#else
@@ -10067,21 +10094,10 @@ mac_handle_text_input_event (next_handler, event, data)
10067 err = GetEventParameter (kbd_event, kEventParamKeyModifiers, 10094 err = GetEventParameter (kbd_event, kEventParamKeyModifiers,
10068 typeUInt32, NULL, 10095 typeUInt32, NULL,
10069 sizeof (UInt32), NULL, &modifiers); 10096 sizeof (UInt32), NULL, &modifiers);
10070 if (err == noErr) 10097 if (err == noErr && mac_mapped_modifiers (modifiers))
10071 { 10098 /* There're mapped modifier keys. Process it in
10072 mapped_modifiers = 10099 XTread_socket. */
10073 (NILP (Vmac_control_modifier) ? 0 : controlKey) 10100 return eventNotHandledErr;
10074 | (NILP (Vmac_option_modifier) ? 0 : optionKey)
10075 | (NILP (Vmac_command_modifier) ? 0 : cmdKey);
10076#ifdef MAC_OSX
10077 mapped_modifiers |=
10078 (NILP (Vmac_function_modifier) ? 0 : kEventKeyModifierFnMask);
10079#endif
10080 if (modifiers & mapped_modifiers)
10081 /* There're mapped modifier keys. Process it in
10082 XTread_socket. */
10083 return eventNotHandledErr;
10084 }
10085 if (err == noErr) 10101 if (err == noErr)
10086 err = GetEventParameter (kbd_event, kEventParamKeyUnicodes, 10102 err = GetEventParameter (kbd_event, kEventParamKeyUnicodes,
10087 typeUnicodeText, NULL, 0, &actual_size, 10103 typeUnicodeText, NULL, 0, &actual_size,
@@ -11032,20 +11048,12 @@ XTread_socket (sd, expected, hold_quit)
11032 SInt16 current_key_script; 11048 SInt16 current_key_script;
11033 UInt32 modifiers = er.modifiers, mapped_modifiers; 11049 UInt32 modifiers = er.modifiers, mapped_modifiers;
11034 11050
11035 mapped_modifiers =
11036 (NILP (Vmac_control_modifier) ? 0 : controlKey)
11037 | (NILP (Vmac_option_modifier) ? 0 : optionKey)
11038 | (NILP (Vmac_command_modifier) ? 0 : cmdKey);
11039
11040#if USE_CARBON_EVENTS && defined (MAC_OSX) 11051#if USE_CARBON_EVENTS && defined (MAC_OSX)
11041 mapped_modifiers |=
11042 (NILP (Vmac_function_modifier) ? 0 : kEventKeyModifierFnMask);
11043
11044 GetEventParameter (eventRef, kEventParamKeyModifiers, 11052 GetEventParameter (eventRef, kEventParamKeyModifiers,
11045 typeUInt32, NULL, 11053 typeUInt32, NULL,
11046 sizeof (UInt32), NULL, &modifiers); 11054 sizeof (UInt32), NULL, &modifiers);
11047#endif 11055#endif
11048 mapped_modifiers &= modifiers; 11056 mapped_modifiers = mac_mapped_modifiers (modifiers);
11049 11057
11050#if USE_CARBON_EVENTS && (defined (MAC_OSX) || USE_MAC_TSM) 11058#if USE_CARBON_EVENTS && (defined (MAC_OSX) || USE_MAC_TSM)
11051 /* When using Carbon Events, we need to pass raw keyboard 11059 /* When using Carbon Events, we need to pass raw keyboard
@@ -11639,34 +11647,33 @@ MakeMeTheFrontProcess ()
11639} 11647}
11640 11648
11641/***** Code to handle C-g testing *****/ 11649/***** Code to handle C-g testing *****/
11642
11643/* Contains the Mac modifier formed from quit_char */
11644int mac_quit_char_modifiers = 0;
11645int mac_quit_char_keycode;
11646extern int quit_char; 11650extern int quit_char;
11651extern int make_ctrl_char P_ ((int));
11647 11652
11648static void 11653int
11649mac_determine_quit_char_modifiers() 11654mac_quit_char_key_p (modifiers, key_code)
11650{ 11655 UInt32 modifiers, key_code;
11651 /* Todo: Determine modifiers from quit_char. */ 11656{
11652 UInt32 qc_modifiers = ctrl_modifier; 11657 UInt32 char_code;
11658 unsigned long some_state = 0;
11659 Ptr kchr_ptr = (Ptr) GetScriptManagerVariable (smKCHRCache);
11660 int c, emacs_modifiers;
11661
11662 /* Mask off modifier keys that are mapped to some Emacs modifiers. */
11663 key_code |= (modifiers & ~(mac_mapped_modifiers (modifiers)));
11664 char_code = KeyTranslate (kchr_ptr, key_code, &some_state);
11665 if (char_code & ~0xff)
11666 return 0;
11653 11667
11654 /* Map modifiers */ 11668 emacs_modifiers = mac_to_emacs_modifiers (modifiers);
11655 mac_quit_char_modifiers = 0; 11669 if (emacs_modifiers & ctrl_modifier)
11656 if (qc_modifiers & ctrl_modifier) mac_quit_char_modifiers |= controlKey; 11670 c = make_ctrl_char (char_code);
11657 if (qc_modifiers & shift_modifier) mac_quit_char_modifiers |= shiftKey;
11658 if (qc_modifiers & alt_modifier) mac_quit_char_modifiers |= optionKey;
11659}
11660 11671
11661static void 11672 c |= (emacs_modifiers
11662init_quit_char_handler () 11673 & (meta_modifier | alt_modifier
11663{ 11674 | hyper_modifier | super_modifier));
11664 /* TODO: Let this support keys other the 'g' */
11665 mac_quit_char_keycode = 5;
11666 /* Look at <architecture/adb_kb_map.h> for details */
11667 /* http://gemma.apple.com/techpubs/mac/Toolbox/Toolbox-40.html#MARKER-9-184*/
11668 11675
11669 mac_determine_quit_char_modifiers(); 11676 return c == quit_char;
11670} 11677}
11671#endif /* MAC_OSX */ 11678#endif /* MAC_OSX */
11672 11679
@@ -11804,8 +11811,6 @@ mac_initialize ()
11804#if USE_CARBON_EVENTS 11811#if USE_CARBON_EVENTS
11805#ifdef MAC_OSX 11812#ifdef MAC_OSX
11806 init_service_handler (); 11813 init_service_handler ();
11807
11808 init_quit_char_handler ();
11809#endif /* MAC_OSX */ 11814#endif /* MAC_OSX */
11810 11815
11811 init_command_handler (); 11816 init_command_handler ();
diff --git a/src/macterm.h b/src/macterm.h
index c941fafb690..c7d86f157f1 100644
--- a/src/macterm.h
+++ b/src/macterm.h
@@ -44,8 +44,6 @@ Boston, MA 02110-1301, USA. */
44#define FONT_BASE(f) ((f)->ascent) 44#define FONT_BASE(f) ((f)->ascent)
45#define FONT_DESCENT(f) ((f)->descent) 45#define FONT_DESCENT(f) ((f)->descent)
46 46
47#define FONT_MAX_WIDTH(f) FONT_WIDTH(f) /* fix later */
48
49/* Structure recording bitmaps and reference count. 47/* Structure recording bitmaps and reference count.
50 If REFCOUNT is 0 then this record is free to be reused. */ 48 If REFCOUNT is 0 then this record is free to be reused. */
51 49
@@ -614,13 +612,12 @@ extern Pixmap XCreatePixmapFromBitmapData P_ ((Display *, WindowPtr, char *,
614 unsigned long, unsigned long, 612 unsigned long, unsigned long,
615 unsigned int)); 613 unsigned int));
616extern void XFreePixmap P_ ((Display *, Pixmap)); 614extern void XFreePixmap P_ ((Display *, Pixmap));
617extern GC XCreateGC P_ ((Display *, Window, unsigned long, XGCValues *)); 615extern GC XCreateGC P_ ((Display *, void *, unsigned long, XGCValues *));
618extern void XFreeGC P_ ((Display *, GC)); 616extern void XFreeGC P_ ((Display *, GC));
619extern void XSetForeground P_ ((Display *, GC, unsigned long)); 617extern void XSetForeground P_ ((Display *, GC, unsigned long));
620extern void XSetBackground P_ ((Display *, GC, unsigned long)); 618extern void XSetBackground P_ ((Display *, GC, unsigned long));
621extern void XSetWindowBackground P_ ((Display *, WindowPtr, unsigned long)); 619extern void XSetWindowBackground P_ ((Display *, WindowPtr, unsigned long));
622extern void mac_draw_line_to_pixmap P_ ((Display *, Pixmap, GC, int, int, 620extern void XDrawLine P_ ((Display *, Pixmap, GC, int, int, int, int));
623 int, int));
624extern void mac_clear_area P_ ((struct frame *, int, int, 621extern void mac_clear_area P_ ((struct frame *, int, int,
625 unsigned int, unsigned int)); 622 unsigned int, unsigned int));
626extern void mac_unload_font P_ ((struct mac_display_info *, XFontStruct *)); 623extern void mac_unload_font P_ ((struct mac_display_info *, XFontStruct *));
@@ -636,6 +633,9 @@ extern void do_apple_menu P_ ((SInt16));
636#if USE_CG_DRAWING 633#if USE_CG_DRAWING
637extern void mac_prepare_for_quickdraw P_ ((struct frame *)); 634extern void mac_prepare_for_quickdraw P_ ((struct frame *));
638#endif 635#endif
636#ifdef MAC_OSX
637extern int mac_quit_char_key_p P_ ((UInt32, UInt32));
638#endif
639 639
640#define FONT_TYPE_FOR_UNIBYTE(font, ch) 0 640#define FONT_TYPE_FOR_UNIBYTE(font, ch) 0
641#define FONT_TYPE_FOR_MULTIBYTE(font, ch) 0 641#define FONT_TYPE_FOR_MULTIBYTE(font, ch) 0
diff --git a/src/xterm.c b/src/xterm.c
index e16fb852873..122d9b7c3de 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -276,6 +276,10 @@ static Lisp_Object last_mouse_scroll_bar;
276 276
277static Time last_mouse_movement_time; 277static Time last_mouse_movement_time;
278 278
279/* Time for last user interaction as returned in X events. */
280
281static Time last_user_time;
282
279/* Incremented by XTread_socket whenever it really tries to read 283/* Incremented by XTread_socket whenever it really tries to read
280 events. */ 284 events. */
281 285
@@ -5882,6 +5886,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
5882 break; 5886 break;
5883 5887
5884 case SelectionNotify: 5888 case SelectionNotify:
5889 last_user_time = event.xselection.time;
5885#ifdef USE_X_TOOLKIT 5890#ifdef USE_X_TOOLKIT
5886 if (! x_window_to_frame (dpyinfo, event.xselection.requestor)) 5891 if (! x_window_to_frame (dpyinfo, event.xselection.requestor))
5887 goto OTHER; 5892 goto OTHER;
@@ -5890,6 +5895,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
5890 break; 5895 break;
5891 5896
5892 case SelectionClear: /* Someone has grabbed ownership. */ 5897 case SelectionClear: /* Someone has grabbed ownership. */
5898 last_user_time = event.xselectionclear.time;
5893#ifdef USE_X_TOOLKIT 5899#ifdef USE_X_TOOLKIT
5894 if (! x_window_to_frame (dpyinfo, event.xselectionclear.window)) 5900 if (! x_window_to_frame (dpyinfo, event.xselectionclear.window))
5895 goto OTHER; 5901 goto OTHER;
@@ -5906,6 +5912,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
5906 break; 5912 break;
5907 5913
5908 case SelectionRequest: /* Someone wants our selection. */ 5914 case SelectionRequest: /* Someone wants our selection. */
5915 last_user_time = event.xselectionrequest.time;
5909#ifdef USE_X_TOOLKIT 5916#ifdef USE_X_TOOLKIT
5910 if (!x_window_to_frame (dpyinfo, event.xselectionrequest.owner)) 5917 if (!x_window_to_frame (dpyinfo, event.xselectionrequest.owner))
5911 goto OTHER; 5918 goto OTHER;
@@ -5926,6 +5933,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
5926 break; 5933 break;
5927 5934
5928 case PropertyNotify: 5935 case PropertyNotify:
5936 last_user_time = event.xproperty.time;
5929#if 0 /* This is plain wrong. In the case that we are waiting for a 5937#if 0 /* This is plain wrong. In the case that we are waiting for a
5930 PropertyNotify used as an ACK in incremental selection 5938 PropertyNotify used as an ACK in incremental selection
5931 transfer, the property will be on the receiver's window. */ 5939 transfer, the property will be on the receiver's window. */
@@ -5949,6 +5957,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
5949 5957
5950 /* Perhaps reparented due to a WM restart. Reset this. */ 5958 /* Perhaps reparented due to a WM restart. Reset this. */
5951 FRAME_X_DISPLAY_INFO (f)->wm_type = X_WMTYPE_UNKNOWN; 5959 FRAME_X_DISPLAY_INFO (f)->wm_type = X_WMTYPE_UNKNOWN;
5960 FRAME_X_DISPLAY_INFO (f)->net_supported_window = 0;
5952 } 5961 }
5953 goto OTHER; 5962 goto OTHER;
5954 5963
@@ -6107,6 +6116,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6107 6116
6108 case KeyPress: 6117 case KeyPress:
6109 6118
6119 last_user_time = event.xkey.time;
6110 ignore_next_mouse_click_timeout = 0; 6120 ignore_next_mouse_click_timeout = 0;
6111 6121
6112#if defined (USE_X_TOOLKIT) || defined (USE_GTK) 6122#if defined (USE_X_TOOLKIT) || defined (USE_GTK)
@@ -6497,6 +6507,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6497#endif 6507#endif
6498 6508
6499 case KeyRelease: 6509 case KeyRelease:
6510 last_user_time = event.xkey.time;
6500#ifdef HAVE_X_I18N 6511#ifdef HAVE_X_I18N
6501 /* Don't dispatch this event since XtDispatchEvent calls 6512 /* Don't dispatch this event since XtDispatchEvent calls
6502 XFilterEvent, and two calls in a row may freeze the 6513 XFilterEvent, and two calls in a row may freeze the
@@ -6507,6 +6518,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6507#endif 6518#endif
6508 6519
6509 case EnterNotify: 6520 case EnterNotify:
6521 last_user_time = event.xcrossing.time;
6510 x_detect_focus_change (dpyinfo, &event, &inev.ie); 6522 x_detect_focus_change (dpyinfo, &event, &inev.ie);
6511 6523
6512 f = x_any_window_to_frame (dpyinfo, event.xcrossing.window); 6524 f = x_any_window_to_frame (dpyinfo, event.xcrossing.window);
@@ -6547,6 +6559,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6547 goto OTHER; 6559 goto OTHER;
6548 6560
6549 case LeaveNotify: 6561 case LeaveNotify:
6562 last_user_time = event.xcrossing.time;
6550 x_detect_focus_change (dpyinfo, &event, &inev.ie); 6563 x_detect_focus_change (dpyinfo, &event, &inev.ie);
6551 6564
6552 f = x_top_window_to_frame (dpyinfo, event.xcrossing.window); 6565 f = x_top_window_to_frame (dpyinfo, event.xcrossing.window);
@@ -6580,6 +6593,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6580 6593
6581 case MotionNotify: 6594 case MotionNotify:
6582 { 6595 {
6596 last_user_time = event.xmotion.time;
6583 previous_help_echo_string = help_echo_string; 6597 previous_help_echo_string = help_echo_string;
6584 help_echo_string = Qnil; 6598 help_echo_string = Qnil;
6585 6599
@@ -6728,6 +6742,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6728 6742
6729 bzero (&compose_status, sizeof (compose_status)); 6743 bzero (&compose_status, sizeof (compose_status));
6730 last_mouse_glyph_frame = 0; 6744 last_mouse_glyph_frame = 0;
6745 last_user_time = event.xbutton.time;
6731 6746
6732 if (dpyinfo->grabbed 6747 if (dpyinfo->grabbed
6733 && last_mouse_frame 6748 && last_mouse_frame
@@ -8336,40 +8351,111 @@ x_set_offset (f, xoff, yoff, change_gravity)
8336 UNBLOCK_INPUT; 8351 UNBLOCK_INPUT;
8337} 8352}
8338 8353
8339/* Do fullscreen as specified in extended window manager hints */ 8354/* Return non-zero if _NET_SUPPORTING_WM_CHECK window exists and _NET_SUPPORTED
8355 on the root window for frame F contains ATOMNAME.
8356 This is how a WM check shall be done according to the Window Manager
8357 Specification/Extended Window Manager Hints at
8358 http://freedesktop.org/wiki/Standards_2fwm_2dspec. */
8359
8340static int 8360static int
8341do_ewmh_fullscreen (f) 8361wm_supports (f, atomname)
8342 struct frame *f; 8362 struct frame *f;
8363 const char *atomname;
8343{ 8364{
8344 int have_net_atom = FRAME_X_DISPLAY_INFO (f)->have_net_atoms; 8365 Atom actual_type;
8366 unsigned long actual_size, bytes_remaining;
8367 int i, rc, actual_format;
8368 Atom prop_atom;
8369 Window wmcheck_window;
8370 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
8371 Window target_window = dpyinfo->root_window;
8372 long max_len = 65536;
8373 Display *dpy = FRAME_X_DISPLAY (f);
8374 unsigned char *tmp_data = NULL;
8375 Atom target_type = XA_WINDOW;
8376 Atom want_atom;
8377
8378 BLOCK_INPUT;
8379
8380 prop_atom = XInternAtom (dpy, "_NET_SUPPORTING_WM_CHECK", False);
8381
8382 x_catch_errors (dpy);
8383 rc = XGetWindowProperty (dpy, target_window,
8384 prop_atom, 0, max_len, False, target_type,
8385 &actual_type, &actual_format, &actual_size,
8386 &bytes_remaining, &tmp_data);
8387
8388 if (rc != Success || actual_type != XA_WINDOW || x_had_errors_p (dpy))
8389 {
8390 if (tmp_data) XFree (tmp_data);
8391 x_uncatch_errors ();
8392 UNBLOCK_INPUT;
8393 return 0;
8394 }
8395
8396 wmcheck_window = *(Window *) tmp_data;
8397 XFree (tmp_data);
8345 8398
8346 if (!have_net_atom) 8399 /* Check if window exists. */
8400 XSelectInput (dpy, wmcheck_window, StructureNotifyMask);
8401 x_sync (f);
8402 if (x_had_errors_p (dpy))
8347 { 8403 {
8348 int num; 8404 x_uncatch_errors ();
8349 Atom *atoms = XListProperties (FRAME_X_DISPLAY (f), 8405 UNBLOCK_INPUT;
8350 FRAME_X_DISPLAY_INFO (f)->root_window, 8406 return 0;
8351 &num); 8407 }
8352 if (atoms && num > 0) 8408
8409 if (dpyinfo->net_supported_window != wmcheck_window)
8410 {
8411 /* Window changed, reload atoms */
8412 if (dpyinfo->net_supported_atoms != NULL)
8413 XFree (dpyinfo->net_supported_atoms);
8414 dpyinfo->net_supported_atoms = NULL;
8415 dpyinfo->nr_net_supported_atoms = 0;
8416 dpyinfo->net_supported_window = 0;
8417
8418 target_type = XA_ATOM;
8419 prop_atom = XInternAtom (dpy, "_NET_SUPPORTED", False);
8420 tmp_data = NULL;
8421 rc = XGetWindowProperty (dpy, target_window,
8422 prop_atom, 0, max_len, False, target_type,
8423 &actual_type, &actual_format, &actual_size,
8424 &bytes_remaining, &tmp_data);
8425
8426 if (rc != Success || actual_type != XA_ATOM || x_had_errors_p (dpy))
8353 { 8427 {
8354 char **names = (char **) xmalloc (num * sizeof(*names)); 8428 if (tmp_data) XFree (tmp_data);
8355 if (XGetAtomNames (FRAME_X_DISPLAY (f), atoms, num, names)) 8429 x_uncatch_errors ();
8356 { 8430 UNBLOCK_INPUT;
8357 int i; 8431 return 0;
8358 for (i = 0; i < num; ++i)
8359 {
8360 if (!have_net_atom)
8361 have_net_atom = strncmp (names[i], "_NET_", 5) == 0;
8362 XFree (names[i]);
8363 }
8364 }
8365 xfree (names);
8366 } 8432 }
8367 if (atoms)
8368 XFree (atoms);
8369 8433
8370 FRAME_X_DISPLAY_INFO (f)->have_net_atoms = have_net_atom; 8434 dpyinfo->net_supported_atoms = (Atom *)tmp_data;
8435 dpyinfo->nr_net_supported_atoms = actual_size;
8436 dpyinfo->net_supported_window = wmcheck_window;
8371 } 8437 }
8372 8438
8439 rc = 0;
8440 want_atom = XInternAtom (dpy, atomname, False);
8441
8442 for (i = 0; rc == 0 && i < dpyinfo->nr_net_supported_atoms; ++i)
8443 rc = dpyinfo->net_supported_atoms[i] == want_atom;
8444
8445 x_uncatch_errors ();
8446 UNBLOCK_INPUT;
8447
8448 return rc;
8449}
8450
8451/* Do fullscreen as specified in extended window manager hints */
8452
8453static int
8454do_ewmh_fullscreen (f)
8455 struct frame *f;
8456{
8457 int have_net_atom = wm_supports (f, "_NET_WM_STATE");
8458
8373 if (have_net_atom) 8459 if (have_net_atom)
8374 { 8460 {
8375 Lisp_Object frame; 8461 Lisp_Object frame;
@@ -8396,6 +8482,9 @@ do_ewmh_fullscreen (f)
8396 break; 8482 break;
8397 } 8483 }
8398 8484
8485 if (!wm_supports (f, what)) return 0;
8486
8487
8399 Fx_send_client_event (frame, make_number (0), frame, 8488 Fx_send_client_event (frame, make_number (0), frame,
8400 make_unibyte_string (atom, strlen (atom)), 8489 make_unibyte_string (atom, strlen (atom)),
8401 make_number (32), 8490 make_number (32),
@@ -8796,23 +8885,27 @@ XTframe_raise_lower (f, raise_flag)
8796 /* The following code is needed for `raise-frame' to work on 8885 /* The following code is needed for `raise-frame' to work on
8797 some versions of metacity; see Window Manager 8886 some versions of metacity; see Window Manager
8798 Specification/Extended Window Manager Hints at 8887 Specification/Extended Window Manager Hints at
8799 http://freedesktop.org/wiki/Standards_2fwm_2dspec 8888 http://freedesktop.org/wiki/Standards_2fwm_2dspec */
8800 8889
8801 However, on other versions (metacity 2.17.2-1.fc7), it 8890#if 0
8891 /* However, on other versions (metacity 2.17.2-1.fc7), it
8802 reportedly causes hangs when resizing frames. */ 8892 reportedly causes hangs when resizing frames. */
8803 8893
8804 /* Lisp_Object frame; 8894 const char *atom = "_NET_ACTIVE_WINDOW";
8805 const char *atom = "_NET_ACTIVE_WINDOW"; */ 8895 if (f->async_visible && wm_supports (f, atom))
8806 8896 {
8807 x_raise_frame (f); 8897 Lisp_Object frame;
8808 8898 XSETFRAME (frame, f);
8809 /* XSETFRAME (frame, f); 8899 Fx_send_client_event (frame, make_number (0), frame,
8810 Fx_send_client_event (frame, make_number (0), frame, 8900 make_unibyte_string (atom, strlen (atom)),
8811 make_unibyte_string (atom, strlen (atom)), 8901 make_number (32),
8812 make_number (32), 8902 Fcons (make_number (1),
8813 Fcons (make_number (1), 8903 Fcons (make_number (last_user_time),
8814 Fcons (make_number (time (NULL) * 1000), 8904 Qnil)));
8815 Qnil))); */ 8905 }
8906 else
8907#endif
8908 x_raise_frame (f);
8816 } 8909 }
8817 else 8910 else
8818 x_lower_frame (f); 8911 x_lower_frame (f);
@@ -10807,6 +10900,10 @@ x_term_init (display_name, xrm_option, resource_name)
10807 dpyinfo->x_dnd_atoms = xmalloc (sizeof (*dpyinfo->x_dnd_atoms) 10900 dpyinfo->x_dnd_atoms = xmalloc (sizeof (*dpyinfo->x_dnd_atoms)
10808 * dpyinfo->x_dnd_atoms_size); 10901 * dpyinfo->x_dnd_atoms_size);
10809 10902
10903 dpyinfo->net_supported_atoms = NULL;
10904 dpyinfo->nr_net_supported_atoms = 0;
10905 dpyinfo->net_supported_window = 0;
10906
10810 connection = ConnectionNumber (dpyinfo->display); 10907 connection = ConnectionNumber (dpyinfo->display);
10811 dpyinfo->connection = connection; 10908 dpyinfo->connection = connection;
10812 10909
diff --git a/src/xterm.h b/src/xterm.h
index 1ea50b8158f..b8e86d646ed 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -396,7 +396,10 @@ struct x_display_info
396 size_t x_dnd_atoms_size; 396 size_t x_dnd_atoms_size;
397 size_t x_dnd_atoms_length; 397 size_t x_dnd_atoms_length;
398 398
399 int have_net_atoms; 399 /* Extended window manager hints, Atoms supported by the window manager */
400 Atom *net_supported_atoms;
401 int nr_net_supported_atoms;
402 Window net_supported_window;
400}; 403};
401 404
402#ifdef HAVE_X_I18N 405#ifdef HAVE_X_I18N