aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2011-07-17 23:57:23 +0200
committerJoakim Verona2011-07-17 23:57:23 +0200
commitb0ec5b0839c3f2687b4dddc385ae22b72f96db99 (patch)
treed35d3789847cbdd287e9ffec4ea53a0ac63fc988
parent32b1b66b26662eb2dd46657cbd292063691bfc79 (diff)
parent6265325e6bc5ed7da0e049f1b6e148932ea69e34 (diff)
downloademacs-b0ec5b0839c3f2687b4dddc385ae22b72f96db99.tar.gz
emacs-b0ec5b0839c3f2687b4dddc385ae22b72f96db99.zip
merge upstream
-rw-r--r--doc/emacs/ChangeLog5
-rw-r--r--doc/emacs/help.texi10
-rw-r--r--doc/lispref/ChangeLog19
-rw-r--r--doc/lispref/debugging.texi10
-rw-r--r--doc/lispref/keymaps.texi24
-rw-r--r--doc/lispref/variables.texi11
-rw-r--r--doc/misc/ChangeLog5
-rw-r--r--doc/misc/flymake.texi2
-rw-r--r--etc/ChangeLog12
-rw-r--r--etc/MH-E-NEWS21
-rw-r--r--etc/NEWS2
-rw-r--r--lisp/ChangeLog89
-rw-r--r--lisp/doc-view.el29
-rw-r--r--lisp/emacs-lisp/cl-loaddefs.el8
-rw-r--r--lisp/emacs-lisp/cl-macs.el13
-rw-r--r--lisp/emacs-lisp/syntax.el4
-rw-r--r--lisp/files.el1
-rw-r--r--lisp/frame.el9
-rw-r--r--lisp/gnus/ChangeLog15
-rw-r--r--lisp/gnus/gnus-group.el2
-rw-r--r--lisp/gnus/gnus.el5
-rw-r--r--lisp/gnus/message.el31
-rw-r--r--lisp/image.el2
-rw-r--r--lisp/info.el16
-rw-r--r--lisp/international/mule-cmds.el2
-rw-r--r--lisp/isearch.el3
-rw-r--r--lisp/jka-cmpr-hook.el6
-rw-r--r--lisp/jka-compr.el5
-rw-r--r--lisp/mail/smtpmail.el9
-rw-r--r--lisp/mh-e/ChangeLog17
-rw-r--r--lisp/mh-e/mh-compat.el12
-rw-r--r--lisp/mh-e/mh-e.el4
-rw-r--r--lisp/mh-e/mh-folder.el8
-rw-r--r--lisp/net/gnutls.el34
-rw-r--r--lisp/progmodes/etags.el2
-rw-r--r--lisp/simple.el15
-rw-r--r--lisp/subr.el41
-rw-r--r--lisp/textmodes/fill.el2
-rw-r--r--lisp/window.el26
-rw-r--r--src/ChangeLog57
-rw-r--r--src/fileio.c6
-rw-r--r--src/gnutls.c32
-rw-r--r--src/lread.c57
-rw-r--r--src/makefile.w32-in3
-rw-r--r--src/process.c2
-rw-r--r--src/xdisp.c16
46 files changed, 535 insertions, 169 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 531bf206a80..e10b9a83a43 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,8 @@
12011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * help.texi (Misc Help): Mention `describe-prefix-bindings'
4 explicitly (bug#8904).
5
12011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> 62011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 7
3 * trouble.texi (Checklist): Use an `M-x' example instead of an 8 * trouble.texi (Checklist): Use an `M-x' example instead of an
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index 76a9f2413b1..9a75bfb1887 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -589,11 +589,13 @@ displays the contents of the syntax table, with explanations of each
589character's syntax (@pxref{Syntax Tables,, Syntax Tables, elisp, The 589character's syntax (@pxref{Syntax Tables,, Syntax Tables, elisp, The
590Emacs Lisp Reference Manual}). 590Emacs Lisp Reference Manual}).
591 591
592@findex describe-prefix-bindings
592 You can get a list of subcommands for a particular prefix key by 593 You can get a list of subcommands for a particular prefix key by
593typing @kbd{C-h} after the prefix key. (There are a few prefix keys 594typing @kbd{C-h} (@code{describe-prefix-bindings}) after the prefix
594for which this does not work---those that provide their own bindings 595key. (There are a few prefix keys for which this does not
595for @kbd{C-h}. One of these is @key{ESC}, because @kbd{@key{ESC} C-h} 596work---those that provide their own bindings for @kbd{C-h}. One of
596is actually @kbd{C-M-h}, which marks a defun.) 597these is @key{ESC}, because @kbd{@key{ESC} C-h} is actually
598@kbd{C-M-h}, which marks a defun.)
597 599
598@node Help Files 600@node Help Files
599@section Help Files 601@section Help Files
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 153d7e839c3..091a6ffda59 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,22 @@
12011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 Tim Cross <theophilusx@gmail.com> (tiny change)
3 Glenn Morris <rgm@gnu.org>
4
5 * keymaps.texi (Toolkit Differences): New node. (Bug#8176)
6
72011-07-15 Andreas Schwab <schwab@linux-m68k.org>
8
9 * help.texi (Keys in Documentation): Revert last change.
10
112011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
12
13 * help.texi (Keys in Documentation): Clarify that \= only quotes
14 the next character, and doesn't affect longer sequences in
15 particular (bug#8935).
16
17 * debugging.texi (Using Debugger): Mention
18 @code{eval-expression-debug-on-error} (bug#8549).
19
12011-07-14 Eli Zaretskii <eliz@gnu.org> 202011-07-14 Eli Zaretskii <eliz@gnu.org>
2 21
3 * display.texi (Other Display Specs): Document that `left-fringe' 22 * display.texi (Other Display Specs): Document that `left-fringe'
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index ed146453df7..d9e807afb88 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -306,6 +306,16 @@ and it is wise to go back to the backtrace buffer and exit the debugger
306the debugger gets out of the recursive edit and kills the backtrace 306the debugger gets out of the recursive edit and kills the backtrace
307buffer. 307buffer.
308 308
309 When the debugger has been entered, the @code{debug-on-error}
310variable is temporarily set according to
311@code{eval-expression-debug-on-error}. If the latter variable is
312non-@code{nil}, @code{debug-on-error} will temporarily be set to
313@code{t}. This means that any further errors that occur while doing a
314debugging session will (by default) trigger another backtrace. If
315this is not want you want, you can either set
316@code{eval-expression-debug-on-error} to @code{nil}, or set
317@code{debug-on-error} to @code{nil} in @code{debugger-mode-hook}.
318
309@cindex current stack frame 319@cindex current stack frame
310 The backtrace buffer shows you the functions that are executing and 320 The backtrace buffer shows you the functions that are executing and
311their argument values. It also allows you to specify a stack frame by 321their argument values. It also allows you to specify a stack frame by
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 15b2f2079ba..e5cca0622a9 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -2019,8 +2019,10 @@ an existing menu, you can specify its position in the menu using
2019 various features. 2019 various features.
2020* Menu Separators:: Drawing a horizontal line through a menu. 2020* Menu Separators:: Drawing a horizontal line through a menu.
2021* Alias Menu Items:: Using command aliases in menu items. 2021* Alias Menu Items:: Using command aliases in menu items.
2022* Toolkit Differences:: Not all toolkits provide the same features.
2022@end menu 2023@end menu
2023 2024
2025
2024@node Simple Menu Items 2026@node Simple Menu Items
2025@subsubsection Simple Menu Items 2027@subsubsection Simple Menu Items
2026 2028
@@ -2309,6 +2311,28 @@ itself). To request this, give the alias symbol a non-@code{nil}
2309causes menu items for @code{make-read-only} and @code{make-writable} to 2311causes menu items for @code{make-read-only} and @code{make-writable} to
2310show the keyboard bindings for @code{toggle-read-only}. 2312show the keyboard bindings for @code{toggle-read-only}.
2311 2313
2314@node Toolkit Differences
2315@subsubsection Toolkit Differences
2316
2317The various toolkits with which you can build Emacs do not all support
2318the same set of features for menus. Some code works as expected with
2319one toolkit, but not under another.
2320
2321One example is menu actions or buttons in a top-level menu-bar. The
2322following works with the Lucid toolkit or on MS Windows, but not with
2323GTK or Nextstep, where clicking on the item has no effect.
2324
2325@example
2326(defun menu-action-greet ()
2327 (interactive)
2328 (message "Hello Emacs User!"))
2329
2330(defun top-level-menu ()
2331 (interactive)
2332 (define-key lisp-interaction-mode-map [menu-bar m]
2333 '(menu-item "Action Button" menu-action-greet)))
2334@end example
2335
2312@node Mouse Menus 2336@node Mouse Menus
2313@subsection Menus and the Mouse 2337@subsection Menus and the Mouse
2314 2338
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 3da09369882..091765043e3 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1099,11 +1099,12 @@ use short names like @code{x}.
1099@node Lexical Binding 1099@node Lexical Binding
1100@subsection Use of Lexical Scoping 1100@subsection Use of Lexical Scoping
1101 1101
1102Emacs Lisp can be evaluated in two different modes: in dynamic binding mode or 1102Emacs Lisp can be evaluated in two different modes: in dynamic binding
1103lexical binding mode. In dynamic binding mode, all local variables use dynamic 1103mode or lexical binding mode. In dynamic binding mode, all local
1104scoping, whereas in lexical binding mode variables that have been declared 1104variables use dynamic scoping, whereas in lexical binding mode
1105@dfn{special} (i.e., declared with @code{defvar} or @code{defconst}) use 1105variables that have been declared @dfn{special} (i.e., declared with
1106dynamic scoping and all others use lexical scoping. 1106@code{defvar}, @code{defcustom} or @code{defconst}) use dynamic
1107scoping and all others use lexical scoping.
1107 1108
1108@defvar lexical-binding 1109@defvar lexical-binding
1109When non-nil, evaluation of Lisp code uses lexical scoping for non-special 1110When non-nil, evaluation of Lisp code uses lexical scoping for non-special
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 38cbaafa45d..d64980bd1c8 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,8 @@
12011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * flymake.texi (Example -- Configuring a tool called via make):
4 Use /dev/null instead of the Windows "nul" (bug#8715).
5
12011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> 62011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 7
3 * widget.texi (Setting Up the Buffer): Remove mention of the 8 * widget.texi (Setting Up the Buffer): Remove mention of the
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 74cf3d630da..625e9549444 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -483,7 +483,7 @@ our case this target might look like this:
483 483
484@verbatim 484@verbatim
485check-syntax: 485check-syntax:
486 gcc -o nul -S ${CHK_SOURCES} 486 gcc -o /dev/null -S ${CHK_SOURCES}
487@end verbatim 487@end verbatim
488 488
489The format of error messages reported by @code{gcc} is already 489The format of error messages reported by @code{gcc} is already
diff --git a/etc/ChangeLog b/etc/ChangeLog
index bfe584c69a1..d56523167d9 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,15 @@
12011-07-17 Bill Wohler <wohler@newt.com>
2
3 Release MH-E version 8.2.93.
4
5 * NEWS, MH-E-NEWS: Update for MH-E release 8.2.93.
6
72011-07-16 Bill Wohler <wohler@newt.com>
8
9 Release MH-E version 8.2.92.
10
11 * NEWS, MH-E-NEWS: Update for MH-E release 8.2.92.
12
12011-07-12 Bill Wohler <wohler@newt.com> 132011-07-12 Bill Wohler <wohler@newt.com>
2 14
3 Release MH-E version 8.2.91. 15 Release MH-E version 8.2.91.
diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS
index a46354d7b7b..e61d1d93603 100644
--- a/etc/MH-E-NEWS
+++ b/etc/MH-E-NEWS
@@ -3,6 +3,16 @@
3Copyright (C) 2001-2011 Free Software Foundation, Inc. 3Copyright (C) 2001-2011 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6* Changes in MH-E 8.2.93
7
8Version 8.2.93 reverts back to using `switch-to-buffer' which the
9Emacs developers decided was fine to call from programs after all.
10
11* Changes in MH-E 8.2.92
12
13Version 8.2.92 actually corrects the error in the modeline glyph when
14running XEmacs 21.5.31 in a terminal.
15
6* Changes in MH-E 8.2.91 16* Changes in MH-E 8.2.91
7 17
8Version 8.2.91 fixes the folder window problem that was introduced 18Version 8.2.91 fixes the folder window problem that was introduced
@@ -14,8 +24,6 @@ from SourceForge and explicitly load MH-E will have to be change their
14`load-path' to "/path/to/mh-e/emacs/trunk/lisp/mh-e" instead. Note the 24`load-path' to "/path/to/mh-e/emacs/trunk/lisp/mh-e" instead. Note the
15addition of "trunk." 25addition of "trunk."
16 26
17This version of MH-E is packaged with GNU Emacs 24.1
18
19* Changes in MH-E 8.2.90 27* Changes in MH-E 8.2.90
20 28
21In 2010, the version control system (VCS) of Emacs was upgraded from 29In 2010, the version control system (VCS) of Emacs was upgraded from
@@ -32,6 +40,15 @@ meaning that `+f/b/b TAB' can complete to `+foo/bar/baz'.
32Also, RFC 2047-encoded Subject header fields in replies are now 40Also, RFC 2047-encoded Subject header fields in replies are now
33decoded. 41decoded.
34 42
43This version of MH-E is packaged with GNU Emacs 24.1
44
45** Bug Fixes in MH-E 8.2.90
46
47*** Make mh-showing a legitimate minor mode
48
49The `mh-showing-mode' variable is now defined with `define-minor-mode'
50(closes SF #482666).
51
35 52
36 53
37* Changes in MH-E 8.2 54* Changes in MH-E 8.2
diff --git a/etc/NEWS b/etc/NEWS
index 11acbd8c42d..278fbea81c1 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -488,7 +488,7 @@ $ESHELL nor variable `explicit-shell-file-name' is set.
488 488
489** MH-E 489** MH-E
490 490
491*** Upgraded to MH-E version 8.2.91. See MH-E-NEWS for details. 491*** Upgraded to MH-E version 8.2.93. See MH-E-NEWS for details.
492 492
493** comint and modes derived from it use the generic completion code. 493** comint and modes derived from it use the generic completion code.
494 494
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 1b3e25da8e1..f320398975c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,92 @@
12011-07-17 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * image.el (put-image): Doc typo fix.
4
5 * progmodes/etags.el (tags-search): Doc typo fix.
6
7 * mail/smtpmail.el (smtpmail-via-smtp): Query the user for
8 password if we get errors 550 to 554.
9
102011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org>
11
12 * net/gnutls.el (gnutls-log-level): Removed.
13
14 * textmodes/fill.el (adaptive-fill-regexp): Include EN DASH as an
15 indentation character (bug#6380).
16
17 * files.el (buffer-offer-save): Made permanently local (bug#6241).
18
19 * doc-view.el (doc-view-make-safe-dir): Rewrite the error message
20 to clarify what the problem is (bug#4291).
21
22 * simple.el (current-kill): Clarify what
23 `interprogram-paste-function' does (bug#7500).
24 (auto-fill-mode): Document `auto-fill-function' in relation to
25 `auto-fill-mode' (bug#2470).
26
272011-07-16 Lawrence Mitchell <wence@gmx.li>
28
29 * emacs-lisp/cl-macs.el (defstruct): Ignore argument to setf
30 method if slot is read-only (bug#9035).
31
322011-07-16 Martin Rudalics <rudalics@gmx.at>
33
34 * frame.el (select-frame-set-input-focus): New argument
35 NORECORD.
36 * window.el (pop-to-buffer): Select window used even if it was
37 selected before, see discussion of (Bug#8615), (Bug#6954). Pass
38 argument NORECORD on to select-frame-set-input-focus.
39
402011-07-15 Glenn Morris <rgm@gnu.org>
41
42 * subr.el (read-char-choice): Allow quitting. (Bug#9001)
43 Respect help-form.
44
452011-07-09 Lawrence Mitchell <wence@gmx.li>
46
47 * net/gnutls.el (gnutls-min-prime-bits): New variable.
48 (gnutls-negotiate): Use it.
49
502011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
51
52 * net/gnutls.el (gnutls-negotiate): Upcase
53 `gnutls-algorithm-priority'.
54
552011-07-15 Glenn Morris <rgm@gnu.org>
56
57 * jka-compr.el (jka-compr-verbose): Move from here...
58 * jka-cmpr-hook.el (jka-compr-verbose): ... to here. (Bug#9090)
59 Add missing :version tag.
60 * info.el: No need to require jka-compr when compiling.
61
622011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
63
64 * net/gnutls.el (gnutls-algorithm-priority): New variable.
65 (gnutls-negotiate): Use it.
66
67 * emacs-lisp/cl-macs.el (declare): Link to the "Declarations" node.
68
69 * info.el (Info-beginning-of-buffer): New command.
70 (Info-mode-map): Use it instead of `beginning-of-buffer' to allow
71 announcing `b' as the key (bug#8325).
72 (Info-mode-menu): Use `Info-beginning-of-buffer' for consistency.
73
74 * emacs-lisp/cl-macs.el (declare): Doc string fix-up.
75
76 * international/mule-cmds.el
77 (describe-specified-language-support): Make the error message
78 clearer (bug#8905).
79
80 * emacs-lisp/cl-macs.el (declare): Add a doc string (bug#8690).
81
82 * isearch.el (isearch-barrier): Add a doc string, since it's
83 mentioned in a function doc string (bug#8678).
84
852011-07-15 Martin Rudalics <rudalics@gmx.at>
86
87 * window.el (switch-to-buffer): Call pop-to-buffer with normalized
88 buffer argument (Bug#9083) and self-identifying label argument.
89
12011-07-15 Glenn Morris <rgm@gnu.org> 902011-07-15 Glenn Morris <rgm@gnu.org>
2 91
3 * emacs-lisp/debug.el (debug): Doc fix. (Bug#8273) 92 * emacs-lisp/debug.el (debug): Doc fix. (Bug#8273)
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 666c6a8b034..872b2172c7e 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -569,18 +569,18 @@ at the top edge of the page moves to the previous page."
569(defun doc-view-make-safe-dir (dir) 569(defun doc-view-make-safe-dir (dir)
570 (condition-case nil 570 (condition-case nil
571 (let ((umask (default-file-modes))) 571 (let ((umask (default-file-modes)))
572 (unwind-protect 572 (unwind-protect
573 (progn 573 (progn
574 ;; Create temp files with strict access rights. It's easy to 574 ;; Create temp files with strict access rights. It's easy to
575 ;; loosen them later, whereas it's impossible to close the 575 ;; loosen them later, whereas it's impossible to close the
576 ;; time-window of loose permissions otherwise. 576 ;; time-window of loose permissions otherwise.
577 (set-default-file-modes #o0700) 577 (set-default-file-modes #o0700)
578 (make-directory dir)) 578 (make-directory dir))
579 ;; Reset the umask. 579 ;; Reset the umask.
580 (set-default-file-modes umask))) 580 (set-default-file-modes umask)))
581 (file-already-exists 581 (file-already-exists
582 (if (file-symlink-p dir) 582 (when (file-symlink-p dir)
583 (error "Danger: %s points to a symbolic link" dir)) 583 (error "Danger: %s points to a symbolic link" dir))
584 ;; In case it was created earlier with looser rights. 584 ;; In case it was created earlier with looser rights.
585 ;; We could check the mode info returned by file-attributes, but it's 585 ;; We could check the mode info returned by file-attributes, but it's
586 ;; a pain to parse and it may not tell you what we want under 586 ;; a pain to parse and it may not tell you what we want under
@@ -589,7 +589,12 @@ at the top edge of the page moves to the previous page."
589 ;; This also ends up checking a bunch of useful conditions: it makes 589 ;; This also ends up checking a bunch of useful conditions: it makes
590 ;; sure we have write-access to the directory and that we own it, thus 590 ;; sure we have write-access to the directory and that we own it, thus
591 ;; closing a bunch of security holes. 591 ;; closing a bunch of security holes.
592 (set-file-modes dir #o0700)))) 592 (condition-case error
593 (set-file-modes dir #o0700)
594 (file-error
595 (error
596 (format "Unable to use temporary directory %s: %s"
597 dir (mapconcat 'identity (cdr error) " "))))))))
593 598
594(defun doc-view-current-cache-dir () 599(defun doc-view-current-cache-dir ()
595 "Return the directory where the png files of the current doc should be saved. 600 "Return the directory where the png files of the current doc should be saved.
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el
index 48c7386bd43..270211f6a78 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -282,7 +282,7 @@ Not documented
282;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist 282;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist
283;;;;;; do* do loop return-from return block etypecase typecase ecase 283;;;;;; do* do loop return-from return block etypecase typecase ecase
284;;;;;; case load-time-value eval-when destructuring-bind function* 284;;;;;; case load-time-value eval-when destructuring-bind function*
285;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "9f551dc739a39b3c8b420fbd1ab71879") 285;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "9452c0e16fd960fce5c19e5c067a7160")
286;;; Generated autoloads from cl-macs.el 286;;; Generated autoloads from cl-macs.el
287 287
288(autoload 'gensym "cl-macs" "\ 288(autoload 'gensym "cl-macs" "\
@@ -541,7 +541,13 @@ values. For compatibility, (values A B C) is a synonym for (list A B C).
541\(fn TYPE FORM)" nil (quote macro)) 541\(fn TYPE FORM)" nil (quote macro))
542 542
543(autoload 'declare "cl-macs" "\ 543(autoload 'declare "cl-macs" "\
544Declare SPECS about the current function while compiling.
545For instance
544 546
547 (declare (warn 0))
548
549will turn off byte-compile warnings in the function.
550See Info node `(cl)Declarations' for details.
545 551
546\(fn &rest SPECS)" nil (quote macro)) 552\(fn &rest SPECS)" nil (quote macro))
547 553
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 2813cc4f065..d6b4643d6a4 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1601,6 +1601,13 @@ values. For compatibility, (values A B C) is a synonym for (list A B C).
1601 1601
1602;;;###autoload 1602;;;###autoload
1603(defmacro declare (&rest specs) 1603(defmacro declare (&rest specs)
1604 "Declare SPECS about the current function while compiling.
1605For instance
1606
1607 \(declare (warn 0))
1608
1609will turn off byte-compile warnings in the function.
1610See Info node `(cl)Declarations' for details."
1604 (if (cl-compiling-file) 1611 (if (cl-compiling-file)
1605 (while specs 1612 (while specs
1606 (if (listp cl-declare-stack) (push (car specs) cl-declare-stack)) 1613 (if (listp cl-declare-stack) (push (car specs) cl-declare-stack))
@@ -2389,8 +2396,10 @@ value, that slot cannot be set via `setf'.
2389 (push (cons accessor t) side-eff) 2396 (push (cons accessor t) side-eff)
2390 (push (list 'define-setf-method accessor '(cl-x) 2397 (push (list 'define-setf-method accessor '(cl-x)
2391 (if (cadr (memq :read-only (cddr desc))) 2398 (if (cadr (memq :read-only (cddr desc)))
2392 (list 'error (format "%s is a read-only slot" 2399 (list 'progn '(ignore cl-x)
2393 accessor)) 2400 (list 'error
2401 (format "%s is a read-only slot"
2402 'accessor)))
2394 ;; If cl is loaded only for compilation, 2403 ;; If cl is loaded only for compilation,
2395 ;; the call to cl-struct-setf-expander would 2404 ;; the call to cl-struct-setf-expander would
2396 ;; cause a warning because it may not be 2405 ;; cause a warning because it may not be
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el
index 200b3a6389b..c65cbc39eab 100644
--- a/lisp/emacs-lisp/syntax.el
+++ b/lisp/emacs-lisp/syntax.el
@@ -100,7 +100,7 @@ Put first the functions more likely to cause a change and cheaper to compute.")
100 (cons beg end)) 100 (cons beg end))
101 101
102(defvar syntax-propertize--done -1 102(defvar syntax-propertize--done -1
103 "Position upto which syntax-table properties have been set.") 103 "Position up to which syntax-table properties have been set.")
104(make-variable-buffer-local 'syntax-propertize--done) 104(make-variable-buffer-local 'syntax-propertize--done)
105 105
106(defun syntax-propertize--shift-groups (re n) 106(defun syntax-propertize--shift-groups (re n)
@@ -283,7 +283,7 @@ The return value is a function suitable for `syntax-propertize-function'."
283 (setq keywords font-lock-syntactic-keywords)))))) 283 (setq keywords font-lock-syntactic-keywords))))))
284 284
285(defun syntax-propertize (pos) 285(defun syntax-propertize (pos)
286 "Ensure that syntax-table properties are set upto POS." 286 "Ensure that syntax-table properties are set until POS."
287 (when (and syntax-propertize-function 287 (when (and syntax-propertize-function
288 (< syntax-propertize--done pos)) 288 (< syntax-propertize--done pos))
289 ;; (message "Needs to syntax-propertize from %s to %s" 289 ;; (message "Needs to syntax-propertize from %s to %s"
diff --git a/lisp/files.el b/lisp/files.el
index 0b253fcc297..6b8a352f20c 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -151,6 +151,7 @@ Automatically local in all buffers."
151 :type 'boolean 151 :type 'boolean
152 :group 'backup) 152 :group 'backup)
153(make-variable-buffer-local 'buffer-offer-save) 153(make-variable-buffer-local 'buffer-offer-save)
154(put 'buffer-offer-save 'permanent-local t)
154 155
155(defcustom find-file-existing-other-name t 156(defcustom find-file-existing-other-name t
156 "Non-nil means find a file under alternative names, in existing buffers. 157 "Non-nil means find a file under alternative names, in existing buffers.
diff --git a/lisp/frame.el b/lisp/frame.el
index d6f82750347..8fea4f05147 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -747,12 +747,15 @@ the user during startup."
747 747
748(declare-function x-focus-frame "xfns.c" (frame)) 748(declare-function x-focus-frame "xfns.c" (frame))
749 749
750(defun select-frame-set-input-focus (frame) 750(defun select-frame-set-input-focus (frame &optional norecord)
751 "Select FRAME, raise it, and set input focus, if possible. 751 "Select FRAME, raise it, and set input focus, if possible.
752If `mouse-autoselect-window' is non-nil, also move mouse pointer 752If `mouse-autoselect-window' is non-nil, also move mouse pointer
753to FRAME's selected window. Otherwise, if `focus-follows-mouse' 753to FRAME's selected window. Otherwise, if `focus-follows-mouse'
754is non-nil, move mouse cursor to FRAME." 754is non-nil, move mouse cursor to FRAME.
755 (select-frame frame) 755
756Optional argument NORECORD means to neither change the order of
757recently selected windows nor the buffer list."
758 (select-frame frame norecord)
756 (raise-frame frame) 759 (raise-frame frame)
757 ;; Ensure, if possible, that FRAME gets input focus. 760 ;; Ensure, if possible, that FRAME gets input focus.
758 (when (memq (window-system frame) '(x w32 ns)) 761 (when (memq (window-system frame) '(x w32 ns))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index e3321ab30c5..32f5b702c6f 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,18 @@
12011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * message.el (message-auto-save-directory): If the ~/Mail directory
4 doesn't exist, use ~ as the auto-save directory (bug#4432).
5
6 * gnus-group.el (gnus-group-read-ephemeral-group): Start Gnus if it
7 hasn't already been started.
8
92011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
10
11 * gnus.el (debbugs-gnu): Renamed from debbugs-emacs.
12
13 * message.el (message-reply): Work around mysterious bug where
14 `message-mode' seems to overwrite the locally bound `subject' variable.
15
12011-07-14 Andrew Cohen <cohen@andy.bu.edu> 162011-07-14 Andrew Cohen <cohen@andy.bu.edu>
2 17
3 * nnimap.el (nnimap-request-thread): Ensure search is performed in 18 * nnimap.el (nnimap-request-thread): Ensure search is performed in
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 2ea2a5c9bc7..b4dca3e1fc4 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -2282,6 +2282,8 @@ Return the name of the group if selection was successful."
2282 (gnus-group-completing-read) 2282 (gnus-group-completing-read)
2283 (gnus-read-method "From method"))) 2283 (gnus-read-method "From method")))
2284 ;; Transform the select method into a unique server. 2284 ;; Transform the select method into a unique server.
2285 (unless (gnus-alive-p)
2286 (gnus-no-server))
2285 (when (stringp method) 2287 (when (stringp method)
2286 (setq method (gnus-server-to-method method))) 2288 (setq method (gnus-server-to-method method)))
2287 (setq method 2289 (setq method
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index ac7db0e1d69..b66d5f22474 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -4381,12 +4381,11 @@ prompt the user for the name of an NNTP server to use."
4381 (gnus-1 arg dont-connect slave) 4381 (gnus-1 arg dont-connect slave)
4382 (gnus-final-warning))) 4382 (gnus-final-warning)))
4383 4383
4384(autoload 'debbugs-emacs "debbugs-gnu") 4384(autoload 'debbugs-gnu "debbugs-gnu")
4385(defun gnus-list-debbugs () 4385(defun gnus-list-debbugs ()
4386 "List all open Gnus bug reports." 4386 "List all open Gnus bug reports."
4387 (interactive) 4387 (interactive)
4388 (debbugs-emacs '("important" "normal" "minor" "wishlist") 4388 (debbugs-gnu nil "gnus"))
4389 "gnus"))
4390 4389
4391;; Allow redefinition of Gnus functions. 4390;; Allow redefinition of Gnus functions.
4392 4391
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 7d7cc01225b..ff013e5b291 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1310,7 +1310,9 @@ text and it replaces `self-insert-command' with the other command, e.g.
1310 :type '(repeat function)) 1310 :type '(repeat function))
1311 1311
1312(defcustom message-auto-save-directory 1312(defcustom message-auto-save-directory
1313 (file-name-as-directory (expand-file-name "drafts" message-directory)) 1313 (if (file-exists-p message-directory)
1314 (file-name-as-directory (expand-file-name "drafts" message-directory))
1315 "~/")
1314 "*Directory where Message auto-saves buffers if Gnus isn't running. 1316 "*Directory where Message auto-saves buffers if Gnus isn't running.
1315If nil, Message won't auto-save." 1317If nil, Message won't auto-save."
1316 :group 'message-buffers 1318 :group 'message-buffers
@@ -6878,20 +6880,19 @@ Useful functions to put in this list include:
6878 (unless follow-to 6880 (unless follow-to
6879 (setq follow-to (message-get-reply-headers wide to-address)))) 6881 (setq follow-to (message-get-reply-headers wide to-address))))
6880 6882
6881 (unless (message-mail-user-agent) 6883 (let ((headers
6882 (message-pop-to-buffer 6884 `((Subject . ,subject)
6883 (message-buffer-name 6885 ,@follow-to)))
6884 (if wide "wide reply" "reply") from 6886 (unless (message-mail-user-agent)
6885 (if wide to-address nil)) 6887 (message-pop-to-buffer
6886 switch-function)) 6888 (message-buffer-name
6887 6889 (if wide "wide reply" "reply") from
6888 (setq message-reply-headers 6890 (if wide to-address nil))
6889 (vector 0 subject from date message-id references 0 0 "")) 6891 switch-function))
6890 6892 (setq message-reply-headers
6891 (message-setup 6893 (vector 0 (cdr (assq 'Subject headers))
6892 `((Subject . ,subject) 6894 from date message-id references 0 0 ""))
6893 ,@follow-to) 6895 (message-setup headers cur))))
6894 cur)))
6895 6896
6896;;;###autoload 6897;;;###autoload
6897(defun message-wide-reply (&optional to-address) 6898(defun message-wide-reply (&optional to-address)
diff --git a/lisp/image.el b/lisp/image.el
index b67367ad436..c6862622639 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -389,7 +389,7 @@ IMAGE must be an image created with `create-image' or `defimage'.
389IMAGE is displayed by putting an overlay into the current buffer with a 389IMAGE is displayed by putting an overlay into the current buffer with a
390`before-string' STRING that has a `display' property whose value is the 390`before-string' STRING that has a `display' property whose value is the
391image. STRING is defaulted if you omit it. 391image. STRING is defaulted if you omit it.
392The overlay created will have the `put-overlay' property set to t. 392The overlay created will have the `put-image' property set to t.
393POS may be an integer or marker. 393POS may be an integer or marker.
394AREA is where to display the image. AREA nil or omitted means 394AREA is where to display the image. AREA nil or omitted means
395display it in the text area, a value of `left-margin' means 395display it in the text area, a value of `left-margin' means
diff --git a/lisp/info.el b/lisp/info.el
index cbdc8cc7ab3..a4826ee8c2c 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -32,7 +32,7 @@
32 32
33;;; Code: 33;;; Code:
34 34
35(eval-when-compile (require 'jka-compr) (require 'cl)) 35(eval-when-compile (require 'cl))
36 36
37(defgroup info nil 37(defgroup info nil
38 "Info subsystem." 38 "Info subsystem."
@@ -2789,6 +2789,11 @@ N is the digit argument used to invoke this command."
2789 (goto-char (point-max))))) 2789 (goto-char (point-max)))))
2790 (t (error "No previous nodes")))) 2790 (t (error "No previous nodes"))))
2791 2791
2792(defun Info-beginning-of-buffer ()
2793 "Go to the beginnning of the buffer."
2794 (interactive)
2795 (goto-char (point-min)))
2796
2792(defun Info-scroll-up () 2797(defun Info-scroll-up ()
2793 "Scroll one screenful forward in Info, considering all nodes as one sequence. 2798 "Scroll one screenful forward in Info, considering all nodes as one sequence.
2794Once you scroll far enough in a node that its menu appears on the screen 2799Once you scroll far enough in a node that its menu appears on the screen
@@ -3650,7 +3655,7 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
3650(defvar Info-mode-map 3655(defvar Info-mode-map
3651 (let ((map (make-keymap))) 3656 (let ((map (make-keymap)))
3652 (suppress-keymap map) 3657 (suppress-keymap map)
3653 (define-key map "." 'beginning-of-buffer) 3658 (define-key map "." 'Info-beginning-of-buffer)
3654 (define-key map " " 'Info-scroll-up) 3659 (define-key map " " 'Info-scroll-up)
3655 (define-key map "\C-m" 'Info-follow-nearest-node) 3660 (define-key map "\C-m" 'Info-follow-nearest-node)
3656 (define-key map "\t" 'Info-next-reference) 3661 (define-key map "\t" 'Info-next-reference)
@@ -3671,7 +3676,8 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
3671 (define-key map "[" 'Info-backward-node) 3676 (define-key map "[" 'Info-backward-node)
3672 (define-key map "<" 'Info-top-node) 3677 (define-key map "<" 'Info-top-node)
3673 (define-key map ">" 'Info-final-node) 3678 (define-key map ">" 'Info-final-node)
3674 (define-key map "b" 'beginning-of-buffer) 3679 (define-key map "b" 'Info-beginning-of-buffer)
3680 (put 'Info-beginning-of-buffer :advertised-binding "b")
3675 (define-key map "d" 'Info-directory) 3681 (define-key map "d" 'Info-directory)
3676 (define-key map "e" 'Info-edit) 3682 (define-key map "e" 'Info-edit)
3677 (define-key map "f" 'Info-follow-reference) 3683 (define-key map "f" 'Info-follow-reference)
@@ -3725,7 +3731,7 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
3725 :help "Go backward one node, considering all as a sequence"] 3731 :help "Go backward one node, considering all as a sequence"]
3726 ["Forward" Info-forward-node 3732 ["Forward" Info-forward-node
3727 :help "Go forward one node, considering all as a sequence"] 3733 :help "Go forward one node, considering all as a sequence"]
3728 ["Beginning" beginning-of-buffer 3734 ["Beginning" Info-beginning-of-buffer
3729 :help "Go to beginning of this node"] 3735 :help "Go to beginning of this node"]
3730 ["Top" Info-top-node 3736 ["Top" Info-top-node
3731 :help "Go to top node of file"] 3737 :help "Go to top node of file"]
@@ -3931,7 +3937,7 @@ Moving within a node:
3931\\[Info-scroll-down] Normally, scroll backward. If the beginning of the buffer is 3937\\[Info-scroll-down] Normally, scroll backward. If the beginning of the buffer is
3932 already visible, try to go to the previous menu entry, or up 3938 already visible, try to go to the previous menu entry, or up
3933 if there is none. 3939 if there is none.
3934\\[beginning-of-buffer] Go to beginning of node. 3940\\[Info-beginning-of-buffer] Go to beginning of node.
3935 3941
3936Advanced commands: 3942Advanced commands:
3937\\[Info-search] Search through this Info file for specified regexp, 3943\\[Info-search] Search through this Info file for specified regexp,
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 6a73aaaa838..128fb86b7b4 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -2059,7 +2059,7 @@ See `set-language-info-alist' for use in programs."
2059 (or (not (eq last-command-event 'Default)) 2059 (or (not (eq last-command-event 'Default))
2060 (setq last-command-event 'English)) 2060 (setq last-command-event 'English))
2061 (setq language-name (symbol-name last-command-event)))) 2061 (setq language-name (symbol-name last-command-event))))
2062 (error "Bogus calling sequence")) 2062 (error "This command should only be called from the menu bar"))
2063 (describe-language-environment language-name))) 2063 (describe-language-environment language-name)))
2064 2064
2065(defun describe-language-environment (language-name) 2065(defun describe-language-environment (language-name)
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 50e7b331c85..1942641fae9 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -549,7 +549,8 @@ Each set is a vector of the form:
549(defvar isearch-error nil) ; Error message for failed search. 549(defvar isearch-error nil) ; Error message for failed search.
550(defvar isearch-other-end nil) ; Start (end) of match if forward (backward). 550(defvar isearch-other-end nil) ; Start (end) of match if forward (backward).
551(defvar isearch-wrapped nil) ; Searching restarted from the top (bottom). 551(defvar isearch-wrapped nil) ; Searching restarted from the top (bottom).
552(defvar isearch-barrier 0) 552(defvar isearch-barrier 0
553 "Recorded minimum/maximal point for the current search.")
553(defvar isearch-just-started nil) 554(defvar isearch-just-started nil)
554(defvar isearch-start-hscroll 0) ; hscroll when starting the search. 555(defvar isearch-start-hscroll 0) ; hscroll when starting the search.
555 556
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index e1cf2a661ed..d28fde0b214 100644
--- a/lisp/jka-cmpr-hook.el
+++ b/lisp/jka-cmpr-hook.el
@@ -39,6 +39,12 @@
39 "jka-compr customization." 39 "jka-compr customization."
40 :group 'compression) 40 :group 'compression)
41 41
42(defcustom jka-compr-verbose t
43 "If non-nil, output messages whenever compressing or uncompressing files."
44 :version "24.1"
45 :type 'boolean
46 :group 'jka-compr)
47
42;; List of all the elements we actually added to file-coding-system-alist. 48;; List of all the elements we actually added to file-coding-system-alist.
43(defvar jka-compr-added-to-file-coding-system-alist nil) 49(defvar jka-compr-added-to-file-coding-system-alist nil)
44 50
diff --git a/lisp/jka-compr.el b/lisp/jka-compr.el
index 1893e982bbb..cd769885cc6 100644
--- a/lisp/jka-compr.el
+++ b/lisp/jka-compr.el
@@ -97,11 +97,6 @@ NOTE: Not used in MS-DOS and Windows systems."
97 :type 'string 97 :type 'string
98 :group 'jka-compr) 98 :group 'jka-compr)
99 99
100(defcustom jka-compr-verbose t
101 "If non-nil, output messages whenever compressing or uncompressing files."
102 :type 'boolean
103 :group 'jka-compr)
104
105(defvar jka-compr-use-shell 100(defvar jka-compr-use-shell
106 (not (memq system-type '(ms-dos windows-nt)))) 101 (not (memq system-type '(ms-dos windows-nt))))
107 102
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index 073e2fa4a3c..cc46660712f 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -788,10 +788,11 @@ The list is in preference order.")
788 nil) 788 nil)
789 ((and auth-mechanisms 789 ((and auth-mechanisms
790 (not ask-for-password) 790 (not ask-for-password)
791 (= (car result) 550)) 791 (>= (car result) 550)
792 ;; We got a "550 relay not permitted", and the server 792 (<= (car result) 554))
793 ;; accepts credentials, so we try again, but ask for a 793 ;; We got a "550 relay not permitted" (or the like),
794 ;; password first. 794 ;; and the server accepts credentials, so we try
795 ;; again, but ask for a password first.
795 (smtpmail-send-command process "QUIT") 796 (smtpmail-send-command process "QUIT")
796 (smtpmail-read-response process) 797 (smtpmail-read-response process)
797 (delete-process process) 798 (delete-process process)
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index df4edcc75e1..731aaf25f3d 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,20 @@
12011-07-17 Bill Wohler <wohler@newt.com>
2
3 Release MH-E version 8.2.93.
4
5 * mh-e.el (Version, mh-version): Update for release 8.2.93.
6
7 * mh-compat.el (mh-pop-to-buffer-same-window): Delete.
8 * mh-folder.el (mh-inc-folder, mh-modify, mh-scan-folder)
9 (mh-make-folder): Revert to switch-to-buffer, as the Emacs folks
10 decided that it was fine to use it in programs.
11
122011-07-16 Bill Wohler <wohler@newt.com>
13
14 Release MH-E version 8.2.92.
15
16 * mh-e.el (Version, mh-version): Update for release 8.2.92.
17
12011-07-12 Bill Wohler <wohler@newt.com> 182011-07-12 Bill Wohler <wohler@newt.com>
2 19
3 Release MH-E version 8.2.91. 20 Release MH-E version 8.2.91.
diff --git a/lisp/mh-e/mh-compat.el b/lisp/mh-e/mh-compat.el
index 16dfe05b094..07c558f60cc 100644
--- a/lisp/mh-e/mh-compat.el
+++ b/lisp/mh-e/mh-compat.el
@@ -251,18 +251,6 @@ The argument STRING is ignored."
251 (buffer-substring-no-properties 251 (buffer-substring-no-properties
252 (match-beginning num) (match-end num))) 252 (match-beginning num) (match-end num)))
253 253
254(defun-mh mh-pop-to-buffer-same-window
255 pop-to-buffer-same-window (&optional buffer-or-name norecord label)
256 "Pop to buffer specified by BUFFER-OR-NAME in the selected window.
257Another window will be used only if the buffer can't be shown in
258the selected window, usually because it is dedicated to another
259buffer. Optional arguments BUFFER-OR-NAME, NORECORD and LABEL are
260as for `pop-to-buffer'. This macro is used by Emacs versions that
261lack the `pop-to-buffer-same-window' function, introduced in
262Emacs 24. The function `switch-to-buffer' is used instead and
263LABEL is ignored."
264 (switch-to-buffer buffer-or-name norecord))
265
266(defun-mh mh-replace-regexp-in-string replace-regexp-in-string 254(defun-mh mh-replace-regexp-in-string replace-regexp-in-string
267 (regexp rep string &optional fixedcase literal subexp start) 255 (regexp rep string &optional fixedcase literal subexp start)
268 "Replace REGEXP with REP everywhere in STRING and return result. 256 "Replace REGEXP with REP everywhere in STRING and return result.
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 51b41e854b0..5562a310f29 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -5,7 +5,7 @@
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
8;; Version: 8.2.91 8;; Version: 8.2.93
9;; Keywords: mail 9;; Keywords: mail
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
@@ -127,7 +127,7 @@
127;; Try to keep variables local to a single file. Provide accessors if 127;; Try to keep variables local to a single file. Provide accessors if
128;; variables are shared. Use this section as a last resort. 128;; variables are shared. Use this section as a last resort.
129 129
130(defconst mh-version "8.2.91" "Version number of MH-E.") 130(defconst mh-version "8.2.93" "Version number of MH-E.")
131 131
132;; Variants 132;; Variants
133 133
diff --git a/lisp/mh-e/mh-folder.el b/lisp/mh-e/mh-folder.el
index 1d9a79d0deb..40febd641de 100644
--- a/lisp/mh-e/mh-folder.el
+++ b/lisp/mh-e/mh-folder.el
@@ -795,7 +795,7 @@ instead."
795 (setq threading-needed-flag mh-show-threads-flag) 795 (setq threading-needed-flag mh-show-threads-flag)
796 (setq mh-previous-window-config config)) 796 (setq mh-previous-window-config config))
797 ((not (eq (current-buffer) (get-buffer folder))) 797 ((not (eq (current-buffer) (get-buffer folder)))
798 (mh-pop-to-buffer-same-window folder) 798 (switch-to-buffer folder)
799 (setq mh-previous-window-config config)))) 799 (setq mh-previous-window-config config))))
800 (mh-get-new-mail file) 800 (mh-get-new-mail file)
801 (when (and threading-needed-flag 801 (when (and threading-needed-flag
@@ -855,7 +855,7 @@ From a program, edit MESSAGE; nil means edit current message."
855 855
856 ;; Just show the edit buffer... 856 ;; Just show the edit buffer...
857 (delete-other-windows) 857 (delete-other-windows)
858 (mh-pop-to-buffer-same-window edit-buffer))) 858 (switch-to-buffer edit-buffer)))
859 859
860;;;###mh-autoload 860;;;###mh-autoload
861(defun mh-next-button (&optional backward-flag) 861(defun mh-next-button (&optional backward-flag)
@@ -1705,7 +1705,7 @@ DONT-EXEC-PENDING is non-nil."
1705 (unless dont-exec-pending 1705 (unless dont-exec-pending
1706 (mh-process-or-undo-commands folder) 1706 (mh-process-or-undo-commands folder)
1707 (mh-reset-threads-and-narrowing)) 1707 (mh-reset-threads-and-narrowing))
1708 (mh-pop-to-buffer-same-window folder))) 1708 (switch-to-buffer folder)))
1709 (mh-regenerate-headers range) 1709 (mh-regenerate-headers range)
1710 (if (zerop (buffer-size)) 1710 (if (zerop (buffer-size))
1711 (if (equal range "all") 1711 (if (equal range "all")
@@ -1786,7 +1786,7 @@ Also removes all content from the folder buffer."
1786(defun mh-make-folder (name) 1786(defun mh-make-folder (name)
1787 "Create a new mail folder called NAME. 1787 "Create a new mail folder called NAME.
1788Make it the current folder." 1788Make it the current folder."
1789 (mh-pop-to-buffer-same-window name) 1789 (switch-to-buffer name)
1790 (setq buffer-read-only nil) 1790 (setq buffer-read-only nil)
1791 (erase-buffer) 1791 (erase-buffer)
1792 (if mh-adaptive-cmd-note-flag 1792 (if mh-adaptive-cmd-note-flag
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el
index 67d7b2d20d3..9cb071b185d 100644
--- a/lisp/net/gnutls.el
+++ b/lisp/net/gnutls.el
@@ -42,9 +42,24 @@
42 :prefix "gnutls-" 42 :prefix "gnutls-"
43 :group 'net-utils) 43 :group 'net-utils)
44 44
45(defcustom gnutls-log-level 0 45(defcustom gnutls-algorithm-priority nil
46 "Logging level to be used by `starttls-negotiate' and GnuTLS." 46 "If non-nil, this should be a TLS priority string.
47 :type 'integer 47For instance, if you want to skip the \"dhe-rsa\" algorithm,
48set this variable to \"normal:-dhe-rsa\"."
49 :type '(choice (const nil)
50 string))
51
52;;;###autoload
53(defcustom gnutls-min-prime-bits nil
54 "The minimum number of bits to be used in Diffie-Hellman key exchange.
55
56This sets the minimum accepted size of the key to be used in a
57client-server handshake. If the server sends a prime with fewer than
58the specified number of bits the handshake will fail.
59
60A value of nil says to use the default gnutls value."
61 :type '(choice (const :tag "Use default value" nil)
62 (integer :tag "Number of bits" 512))
48 :group 'gnutls) 63 :group 'gnutls)
49 64
50(defun open-gnutls-stream (name buffer host service) 65(defun open-gnutls-stream (name buffer host service)
@@ -90,8 +105,8 @@ trust and key files, and priority string."
90(defun* gnutls-negotiate 105(defun* gnutls-negotiate
91 (&rest spec 106 (&rest spec
92 &key process type hostname priority-string 107 &key process type hostname priority-string
93 trustfiles crlfiles keylist verify-flags 108 trustfiles crlfiles keylist min-prime-bits
94 verify-error verify-hostname-error 109 verify-flags verify-error verify-hostname-error
95 &allow-other-keys) 110 &allow-other-keys)
96 "Negotiate a SSL/TLS connection. Returns proc. Signals gnutls-error. 111 "Negotiate a SSL/TLS connection. Returns proc. Signals gnutls-error.
97 112
@@ -104,6 +119,9 @@ PRIORITY-STRING is as per the GnuTLS docs, default is \"NORMAL\".
104TRUSTFILES is a list of CA bundles. 119TRUSTFILES is a list of CA bundles.
105CRLFILES is a list of CRL files. 120CRLFILES is a list of CRL files.
106KEYLIST is an alist of (client key file, client cert file) pairs. 121KEYLIST is an alist of (client key file, client cert file) pairs.
122MIN-PRIME-BITS is the minimum acceptable size of Diffie-Hellman keys
123\(see `gnutls-min-prime-bits' for more information). Use nil for the
124default.
107 125
108When VERIFY-HOSTNAME-ERROR is not nil, an error will be raised 126When VERIFY-HOSTNAME-ERROR is not nil, an error will be raised
109when the hostname does not match the presented certificate's host 127when the hostname does not match the presented certificate's host
@@ -145,10 +163,14 @@ defaults to GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT."
145 ((eq type 'gnutls-anon) 163 ((eq type 'gnutls-anon)
146 "NORMAL:+ANON-DH:!ARCFOUR-128") 164 "NORMAL:+ANON-DH:!ARCFOUR-128")
147 ((eq type 'gnutls-x509pki) 165 ((eq type 'gnutls-x509pki)
148 "NORMAL")))) 166 (if gnutls-algorithm-priority
167 (upcase gnutls-algorithm-priority)
168 "NORMAL")))))
169 (min-prime-bits (or min-prime-bits gnutls-min-prime-bits))
149 (params `(:priority ,priority-string 170 (params `(:priority ,priority-string
150 :hostname ,hostname 171 :hostname ,hostname
151 :loglevel ,gnutls-log-level 172 :loglevel ,gnutls-log-level
173 :min-prime-bits ,min-prime-bits
152 :trustfiles ,trustfiles 174 :trustfiles ,trustfiles
153 :crlfiles ,crlfiles 175 :crlfiles ,crlfiles
154 :keylist ,keylist 176 :keylist ,keylist
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 385adf1af0a..da073ceb258 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -1860,7 +1860,7 @@ nil, we exit; otherwise we scan the next file."
1860Stops when a match is found. 1860Stops when a match is found.
1861To continue searching for next match, use command \\[tags-loop-continue]. 1861To continue searching for next match, use command \\[tags-loop-continue].
1862 1862
1863If `file-list-form' is non-nil, it should be a form that, when 1863If FILE-LIST-FORM is non-nil, it should be a form that, when
1864evaluated, will return a list of file names. The search will be 1864evaluated, will return a list of file names. The search will be
1865restricted to these files. 1865restricted to these files.
1866 1866
diff --git a/lisp/simple.el b/lisp/simple.el
index 64333402924..7fd7e20b499 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -3056,10 +3056,11 @@ If `interprogram-cut-function' is set, pass the resulting kill to it."
3056 3056
3057(defun current-kill (n &optional do-not-move) 3057(defun current-kill (n &optional do-not-move)
3058 "Rotate the yanking point by N places, and then return that kill. 3058 "Rotate the yanking point by N places, and then return that kill.
3059If N is zero, `interprogram-paste-function' is set, and calling 3059If N is zero and `interprogram-paste-function' is set to a
3060it returns a string or list of strings, then that string (or 3060function that returns a string or a list of strings, and if that
3061list) is added to the front of the kill ring and the string (or 3061function doesn't return nil, then that string (or list) is added
3062first string in the list) is returned as the latest kill. 3062to the front of the kill ring and the string (or first string in
3063the list) is returned as the latest kill.
3063 3064
3064If N is not zero, and if `yank-pop-change-selection' is 3065If N is not zero, and if `yank-pop-change-selection' is
3065non-nil, use `interprogram-cut-function' to transfer the 3066non-nil, use `interprogram-cut-function' to transfer the
@@ -5236,14 +5237,16 @@ Some major modes set this.")
5236;; auto-fill-function to nil in a file-local setting is safe and 5237;; auto-fill-function to nil in a file-local setting is safe and
5237;; can be useful to prevent auto-filling. 5238;; can be useful to prevent auto-filling.
5238(put 'auto-fill-function 'safe-local-variable 'null) 5239(put 'auto-fill-function 'safe-local-variable 'null)
5239;; FIXME: turn into a proper minor mode. 5240
5240;; Add a global minor mode version of it.
5241(define-minor-mode auto-fill-mode 5241(define-minor-mode auto-fill-mode
5242 "Toggle Auto Fill mode. 5242 "Toggle Auto Fill mode.
5243With ARG, turn Auto Fill mode on if and only if ARG is positive. 5243With ARG, turn Auto Fill mode on if and only if ARG is positive.
5244In Auto Fill mode, inserting a space at a column beyond `current-fill-column' 5244In Auto Fill mode, inserting a space at a column beyond `current-fill-column'
5245automatically breaks the line at a previous space. 5245automatically breaks the line at a previous space.
5246 5246
5247When `auto-fill-mode' is on, the `auto-fill-function' variable is
5248non-`nil'.
5249
5247The value of `normal-auto-fill-function' specifies the function to use 5250The value of `normal-auto-fill-function' specifies the function to use
5248for `auto-fill-function' when turning Auto Fill mode on." 5251for `auto-fill-function' when turning Auto Fill mode on."
5249 :variable (eq auto-fill-function normal-auto-fill-function)) 5252 :variable (eq auto-fill-function normal-auto-fill-function))
diff --git a/lisp/subr.el b/lisp/subr.el
index 94b28c007d1..ef19797012a 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2145,23 +2145,34 @@ If optional argument INHIBIT-KEYBOARD-QUIT is non-nil, ignore
2145keyboard-quit events while waiting for a valid input." 2145keyboard-quit events while waiting for a valid input."
2146 (unless (consp chars) 2146 (unless (consp chars)
2147 (error "Called `read-char-choice' without valid char choices")) 2147 (error "Called `read-char-choice' without valid char choices"))
2148 (let (char done) 2148 (let (char done show-help (helpbuf " *Char Help*"))
2149 (let ((cursor-in-echo-area t) 2149 (let ((cursor-in-echo-area t)
2150 (executing-kbd-macro executing-kbd-macro)) 2150 (executing-kbd-macro executing-kbd-macro))
2151 (while (not done) 2151 (save-window-excursion ; in case we call help-form-show
2152 (unless (get-text-property 0 'face prompt) 2152 (while (not done)
2153 (setq prompt (propertize prompt 'face 'minibuffer-prompt))) 2153 (unless (get-text-property 0 'face prompt)
2154 (setq char (let ((inhibit-quit inhibit-keyboard-quit)) 2154 (setq prompt (propertize prompt 'face 'minibuffer-prompt)))
2155 (read-key prompt))) 2155 (setq char (let ((inhibit-quit inhibit-keyboard-quit))
2156 (cond 2156 (read-key prompt)))
2157 ((not (numberp char))) 2157 (and show-help (buffer-live-p helpbuf)
2158 ((memq char chars) 2158 (kill-buffer helpbuf))
2159 (setq done t)) 2159 (cond
2160 ((and executing-kbd-macro (= char -1)) 2160 ((not (numberp char)))
2161 ;; read-event returns -1 if we are in a kbd macro and 2161 ;; If caller has set help-form, that's enough.
2162 ;; there are no more events in the macro. Attempt to 2162 ;; They don't explicitly have to add help-char to chars.
2163 ;; get an event interactively. 2163 ((and help-form
2164 (setq executing-kbd-macro nil))))) 2164 (eq char help-char)
2165 (setq show-help t)
2166 (help-form-show)))
2167 ((memq char chars)
2168 (setq done t))
2169 ((and executing-kbd-macro (= char -1))
2170 ;; read-event returns -1 if we are in a kbd macro and
2171 ;; there are no more events in the macro. Attempt to
2172 ;; get an event interactively.
2173 (setq executing-kbd-macro nil))
2174 ((and (not inhibit-keyboard-quit) (eq char ?\C-g))
2175 (keyboard-quit))))))
2165 ;; Display the question with the answer. But without cursor-in-echo-area. 2176 ;; Display the question with the answer. But without cursor-in-echo-area.
2166 (message "%s%s" prompt (char-to-string char)) 2177 (message "%s%s" prompt (char-to-string char))
2167 char)) 2178 char))
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el
index b264cc30850..52f6e5b4889 100644
--- a/lisp/textmodes/fill.el
+++ b/lisp/textmodes/fill.el
@@ -93,7 +93,7 @@ reinserts the fill prefix in each resulting line."
93 ;; Added `!' for doxygen comments starting with `//!' or `/*!'. 93 ;; Added `!' for doxygen comments starting with `//!' or `/*!'.
94 ;; Added `%' for TeX comments. 94 ;; Added `%' for TeX comments.
95 ;; RMS: deleted the code to match `1.' and `(1)'. 95 ;; RMS: deleted the code to match `1.' and `(1)'.
96 (purecopy "[ \t]*\\([-!|#%;>*·•‣⁃◦]+[ \t]*\\)*") 96 (purecopy "[ \t]*\\([-!|#%;>*·•‣⁃◦]+[ \t]*\\)*")
97 "Regexp to match text at start of line that constitutes indentation. 97 "Regexp to match text at start of line that constitutes indentation.
98If Adaptive Fill mode is enabled, a prefix matching this pattern 98If Adaptive Fill mode is enabled, a prefix matching this pattern
99on the first and second lines of a paragraph is used as the 99on the first and second lines of a paragraph is used as the
diff --git a/lisp/window.el b/lisp/window.el
index 0302a672521..b4b900287e1 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -3272,7 +3272,7 @@ window."
3272(defun split-window-side-by-side (&optional size) 3272(defun split-window-side-by-side (&optional size)
3273 "Split selected window into two windows side by side. 3273 "Split selected window into two windows side by side.
3274The selected window becomes the left one and gets SIZE columns. 3274The selected window becomes the left one and gets SIZE columns.
3275SIZE negative means the right window gets -SIZE lines. 3275SIZE negative means the right window gets -SIZE columns.
3276 3276
3277SIZE includes the width of the window's scroll bar; if there are 3277SIZE includes the width of the window's scroll bar; if there are
3278no scroll bars, it includes the width of the divider column to 3278no scroll bars, it includes the width of the divider column to
@@ -5836,15 +5836,13 @@ additional information."
5836 new-window new-frame) 5836 new-window new-frame)
5837 (set-buffer buffer) 5837 (set-buffer buffer)
5838 (setq new-window (display-buffer buffer specifiers label)) 5838 (setq new-window (display-buffer buffer specifiers label))
5839 (unless (eq new-window old-window) 5839 (setq new-frame (window-frame new-window))
5840 ;; `display-buffer' has chosen another window, select it. 5840 (if (eq old-frame new-frame)
5841 (select-window new-window norecord) 5841 ;; Make sure new-window gets selected (Bug#8615), (Bug#6954).
5842 (setq new-frame (window-frame new-window)) 5842 (select-window new-window norecord)
5843 (unless (eq new-frame old-frame) 5843 ;; `display-buffer' has chosen another frame, make sure it gets
5844 ;; `display-buffer' has chosen another frame, make sure it gets 5844 ;; input focus and is risen.
5845 ;; input focus and is risen. 5845 (select-frame-set-input-focus new-frame norecord))
5846 (select-frame-set-input-focus new-frame)))
5847
5848 buffer)) 5846 buffer))
5849 5847
5850(defsubst pop-to-buffer-same-window (&optional buffer-or-name norecord label) 5848(defsubst pop-to-buffer-same-window (&optional buffer-or-name norecord label)
@@ -5953,13 +5951,13 @@ Return the buffer switched to."
5953 (list (read-buffer-to-switch "Switch to buffer: ") nil nil)) 5951 (list (read-buffer-to-switch "Switch to buffer: ") nil nil))
5954 (let ((buffer (window-normalize-buffer-to-switch-to buffer-or-name))) 5952 (let ((buffer (window-normalize-buffer-to-switch-to buffer-or-name)))
5955 (if (null force-same-window) 5953 (if (null force-same-window)
5956 (pop-to-buffer buffer-or-name 5954 (pop-to-buffer
5957 '(same-window (reuse-window-dedicated . weak)) 5955 buffer '(same-window (reuse-window-dedicated . weak))
5958 norecord nil) 5956 norecord 'switch-to-buffer)
5959 (cond 5957 (cond
5960 ;; Don't call set-window-buffer if it's not needed since it 5958 ;; Don't call set-window-buffer if it's not needed since it
5961 ;; might signal an error (e.g. if the window is dedicated). 5959 ;; might signal an error (e.g. if the window is dedicated).
5962 ((eq buffer (window-buffer)) nil) 5960 ((eq buffer (window-buffer)))
5963 ((window-minibuffer-p) 5961 ((window-minibuffer-p)
5964 (error "Cannot switch buffers in minibuffer window")) 5962 (error "Cannot switch buffers in minibuffer window"))
5965 ((eq (window-dedicated-p) t) 5963 ((eq (window-dedicated-p) t)
diff --git a/src/ChangeLog b/src/ChangeLog
index 21563806ece..c06c98c5418 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,60 @@
12011-07-17 Andreas Schwab <schwab@linux-m68k.org>
2
3 * lread.c (read_integer): Unread even EOF character.
4 (read1): Likewise. Properly record start position of symbol.
5
6 * lread.c (read1): Read `#:' as empty uninterned symbol if no
7 symbol character follows.
8
92011-07-17 Paul Eggert <eggert@cs.ucla.edu>
10
11 * fileio.c (Fcopy_file): Pacify gcc re fchown. (Bug#9002)
12 This works around a problem with the previous change to Fcopy_file.
13 Recent glibc declares fchown with __attribute__((warn_unused_result)),
14 and without this change, GCC might complain about discarding
15 fchown's return value.
16
172011-07-16 Juanma Barranquero <lekktu@gmail.com>
18
19 * makefile.w32-in (GLOBAL_SOURCES): Add gnutls.c (followup to bug#9059).
20
212011-07-16 Paul Eggert <eggert@cs.ucla.edu>
22
23 * fileio.c (Fcopy_file): Don't diagnose fchown failures. (Bug#9002)
24
252011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org>
26
27 * gnutls.c (syms_of_gnutls): Define `gnutls-log-level' here, since
28 it's used from the C level.
29
30 * process.c: Use the same condition for POLL_FOR_INPUT in both
31 keyboard.c and process.c (bug#1858).
32
332011-07-09 Lawrence Mitchell <wence@gmx.li>
34
35 * gnutls.c (Qgnutls_bootprop_min_prime_bits): New variable.
36 (Fgnutls_boot): Use it.
37
382011-07-15 Andreas Schwab <schwab@linux-m68k.org>
39
40 * doc.c (Fsubstitute_command_keys): Revert last change.
41
422011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
43
44 * doc.c (Fsubstitute_command_keys): Clarify that \= really only
45 quotes the next character, and doesn't affect other longer
46 sequences (bug#8935).
47
48 * lread.c (syms_of_lread): Clarify that is isn't only
49 `eval-buffer' and `eval-defun' that's affected by
50 `lexical-binding' (bug#8460).
51
522011-07-15 Eli Zaretskii <eliz@gnu.org>
53
54 * xdisp.c (move_it_in_display_line_to): Fix vertical motion with
55 bidi redisplay when a line includes both an image and is
56 truncated.
57
12011-07-14 Paul Eggert <eggert@cs.ucla.edu> 582011-07-14 Paul Eggert <eggert@cs.ucla.edu>
2 59
3 Fix minor problems found by static checking. 60 Fix minor problems found by static checking.
diff --git a/src/fileio.c b/src/fileio.c
index c6f8dfe4683..a52e834c2b2 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -38,6 +38,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
38#include <selinux/context.h> 38#include <selinux/context.h>
39#endif 39#endif
40 40
41#include <ignore-value.h>
42
41#include "lisp.h" 43#include "lisp.h"
42#include "intervals.h" 44#include "intervals.h"
43#include "buffer.h" 45#include "buffer.h"
@@ -1959,8 +1961,8 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
1959 owner and group. */ 1961 owner and group. */
1960 if (input_file_statable_p) 1962 if (input_file_statable_p)
1961 { 1963 {
1962 if (!NILP (preserve_uid_gid) && fchown (ofd, st.st_uid, st.st_gid) != 0) 1964 if (!NILP (preserve_uid_gid))
1963 report_file_error ("Doing chown", Fcons (newname, Qnil)); 1965 ignore_value (fchown (ofd, st.st_uid, st.st_gid));
1964 if (fchmod (ofd, st.st_mode & 07777) != 0) 1966 if (fchmod (ofd, st.st_mode & 07777) != 0)
1965 report_file_error ("Doing chmod", Fcons (newname, Qnil)); 1967 report_file_error ("Doing chmod", Fcons (newname, Qnil));
1966 } 1968 }
diff --git a/src/gnutls.c b/src/gnutls.c
index 3761951b866..52e80a69ae5 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -35,7 +35,6 @@ static int
35emacs_gnutls_handle_error (gnutls_session_t, int err); 35emacs_gnutls_handle_error (gnutls_session_t, int err);
36 36
37static Lisp_Object Qgnutls_dll; 37static Lisp_Object Qgnutls_dll;
38static Lisp_Object Qgnutls_log_level;
39static Lisp_Object Qgnutls_code; 38static Lisp_Object Qgnutls_code;
40static Lisp_Object Qgnutls_anon, Qgnutls_x509pki; 39static Lisp_Object Qgnutls_anon, Qgnutls_x509pki;
41static Lisp_Object Qgnutls_e_interrupted, Qgnutls_e_again, 40static Lisp_Object Qgnutls_e_interrupted, Qgnutls_e_again,
@@ -50,6 +49,7 @@ static Lisp_Object Qgnutls_bootprop_crlfiles;
50static Lisp_Object Qgnutls_bootprop_callbacks; 49static Lisp_Object Qgnutls_bootprop_callbacks;
51static Lisp_Object Qgnutls_bootprop_loglevel; 50static Lisp_Object Qgnutls_bootprop_loglevel;
52static Lisp_Object Qgnutls_bootprop_hostname; 51static Lisp_Object Qgnutls_bootprop_hostname;
52static Lisp_Object Qgnutls_bootprop_min_prime_bits;
53static Lisp_Object Qgnutls_bootprop_verify_flags; 53static Lisp_Object Qgnutls_bootprop_verify_flags;
54static Lisp_Object Qgnutls_bootprop_verify_hostname_error; 54static Lisp_Object Qgnutls_bootprop_verify_hostname_error;
55 55
@@ -105,6 +105,8 @@ DEF_GNUTLS_FN (int, gnutls_certificate_verify_peers2,
105DEF_GNUTLS_FN (int, gnutls_credentials_set, 105DEF_GNUTLS_FN (int, gnutls_credentials_set,
106 (gnutls_session_t, gnutls_credentials_type_t, void *)); 106 (gnutls_session_t, gnutls_credentials_type_t, void *));
107DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t)); 107DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t));
108DEF_GNUTLS_FN (void, gnutls_dh_set_prime_bits,
109 (gnutls_session_t, unsigned int));
108DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int)); 110DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int));
109DEF_GNUTLS_FN (int, gnutls_global_init, (void)); 111DEF_GNUTLS_FN (int, gnutls_global_init, (void));
110DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func)); 112DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func));
@@ -143,7 +145,6 @@ static int
143init_gnutls_functions (Lisp_Object libraries) 145init_gnutls_functions (Lisp_Object libraries)
144{ 146{
145 HMODULE library; 147 HMODULE library;
146 Lisp_Object gnutls_log_level = Fsymbol_value (Qgnutls_log_level);
147 int max_log_level = 1; 148 int max_log_level = 1;
148 149
149 if (!(library = w32_delayed_load (libraries, Qgnutls_dll))) 150 if (!(library = w32_delayed_load (libraries, Qgnutls_dll)))
@@ -169,6 +170,7 @@ init_gnutls_functions (Lisp_Object libraries)
169 LOAD_GNUTLS_FN (library, gnutls_certificate_verify_peers2); 170 LOAD_GNUTLS_FN (library, gnutls_certificate_verify_peers2);
170 LOAD_GNUTLS_FN (library, gnutls_credentials_set); 171 LOAD_GNUTLS_FN (library, gnutls_credentials_set);
171 LOAD_GNUTLS_FN (library, gnutls_deinit); 172 LOAD_GNUTLS_FN (library, gnutls_deinit);
173 LOAD_GNUTLS_FN (library, gnutls_dh_set_prime_bits);
172 LOAD_GNUTLS_FN (library, gnutls_error_is_fatal); 174 LOAD_GNUTLS_FN (library, gnutls_error_is_fatal);
173 LOAD_GNUTLS_FN (library, gnutls_global_init); 175 LOAD_GNUTLS_FN (library, gnutls_global_init);
174 LOAD_GNUTLS_FN (library, gnutls_global_set_log_function); 176 LOAD_GNUTLS_FN (library, gnutls_global_set_log_function);
@@ -191,8 +193,8 @@ init_gnutls_functions (Lisp_Object libraries)
191 LOAD_GNUTLS_FN (library, gnutls_x509_crt_import); 193 LOAD_GNUTLS_FN (library, gnutls_x509_crt_import);
192 LOAD_GNUTLS_FN (library, gnutls_x509_crt_init); 194 LOAD_GNUTLS_FN (library, gnutls_x509_crt_init);
193 195
194 if (NUMBERP (gnutls_log_level)) 196 if (NUMBERP (Vgnutls_log_level))
195 max_log_level = XINT (gnutls_log_level); 197 max_log_level = XINT (Vgnutls_log_level);
196 198
197 GNUTLS_LOG2 (1, max_log_level, "GnuTLS library loaded:", 199 GNUTLS_LOG2 (1, max_log_level, "GnuTLS library loaded:",
198 SDATA (Fget (Qgnutls_dll, QCloaded_from))); 200 SDATA (Fget (Qgnutls_dll, QCloaded_from)));
@@ -218,6 +220,7 @@ init_gnutls_functions (Lisp_Object libraries)
218#define fn_gnutls_certificate_verify_peers2 gnutls_certificate_verify_peers2 220#define fn_gnutls_certificate_verify_peers2 gnutls_certificate_verify_peers2
219#define fn_gnutls_credentials_set gnutls_credentials_set 221#define fn_gnutls_credentials_set gnutls_credentials_set
220#define fn_gnutls_deinit gnutls_deinit 222#define fn_gnutls_deinit gnutls_deinit
223#define fn_gnutls_dh_set_prime_bits gnutls_dh_set_prime_bits
221#define fn_gnutls_error_is_fatal gnutls_error_is_fatal 224#define fn_gnutls_error_is_fatal gnutls_error_is_fatal
222#define fn_gnutls_global_init gnutls_global_init 225#define fn_gnutls_global_init gnutls_global_init
223#define fn_gnutls_global_set_log_function gnutls_global_set_log_function 226#define fn_gnutls_global_set_log_function gnutls_global_set_log_function
@@ -394,7 +397,6 @@ emacs_gnutls_read (struct Lisp_Process *proc, char *buf, EMACS_INT nbyte)
394static int 397static int
395emacs_gnutls_handle_error (gnutls_session_t session, int err) 398emacs_gnutls_handle_error (gnutls_session_t session, int err)
396{ 399{
397 Lisp_Object gnutls_log_level = Fsymbol_value (Qgnutls_log_level);
398 int max_log_level = 0; 400 int max_log_level = 0;
399 401
400 int ret; 402 int ret;
@@ -404,8 +406,8 @@ emacs_gnutls_handle_error (gnutls_session_t session, int err)
404 if (err >= 0) 406 if (err >= 0)
405 return 0; 407 return 0;
406 408
407 if (NUMBERP (gnutls_log_level)) 409 if (NUMBERP (Vgnutls_log_level))
408 max_log_level = XINT (gnutls_log_level); 410 max_log_level = XINT (Vgnutls_log_level);
409 411
410 /* TODO: use gnutls-error-fatalp and gnutls-error-string. */ 412 /* TODO: use gnutls-error-fatalp and gnutls-error-string. */
411 413
@@ -646,6 +648,9 @@ gnutls_certificate_set_verify_flags.
646:verify-hostname-error, if non-nil, makes a hostname mismatch an 648:verify-hostname-error, if non-nil, makes a hostname mismatch an
647error. Otherwise it will be just a warning. 649error. Otherwise it will be just a warning.
648 650
651:min-prime-bits is the minimum accepted number of bits the client will
652accept in Diffie-Hellman key exchange.
653
649The debug level will be set for this process AND globally for GnuTLS. 654The debug level will be set for this process AND globally for GnuTLS.
650So if you set it higher or lower at any point, it affects global 655So if you set it higher or lower at any point, it affects global
651debugging. 656debugging.
@@ -698,6 +703,7 @@ one trustfile (usually a CA bundle). */)
698 Lisp_Object verify_flags; 703 Lisp_Object verify_flags;
699 /* Lisp_Object verify_error; */ 704 /* Lisp_Object verify_error; */
700 Lisp_Object verify_hostname_error; 705 Lisp_Object verify_hostname_error;
706 Lisp_Object prime_bits;
701 707
702 CHECK_PROCESS (proc); 708 CHECK_PROCESS (proc);
703 CHECK_SYMBOL (type); 709 CHECK_SYMBOL (type);
@@ -719,6 +725,7 @@ one trustfile (usually a CA bundle). */)
719 verify_flags = Fplist_get (proplist, Qgnutls_bootprop_verify_flags); 725 verify_flags = Fplist_get (proplist, Qgnutls_bootprop_verify_flags);
720 /* verify_error = Fplist_get (proplist, Qgnutls_bootprop_verify_error); */ 726 /* verify_error = Fplist_get (proplist, Qgnutls_bootprop_verify_error); */
721 verify_hostname_error = Fplist_get (proplist, Qgnutls_bootprop_verify_hostname_error); 727 verify_hostname_error = Fplist_get (proplist, Qgnutls_bootprop_verify_hostname_error);
728 prime_bits = Fplist_get (proplist, Qgnutls_bootprop_min_prime_bits);
722 729
723 if (!STRINGP (hostname)) 730 if (!STRINGP (hostname))
724 error ("gnutls-boot: invalid :hostname parameter"); 731 error ("gnutls-boot: invalid :hostname parameter");
@@ -936,6 +943,11 @@ one trustfile (usually a CA bundle). */)
936 943
937 GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_PRIORITY; 944 GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_PRIORITY;
938 945
946 if (!EQ (prime_bits, Qnil))
947 {
948 fn_gnutls_dh_set_prime_bits (state, XUINT (prime_bits));
949 }
950
939 if (EQ (type, Qgnutls_x509pki)) 951 if (EQ (type, Qgnutls_x509pki))
940 { 952 {
941 ret = fn_gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred); 953 ret = fn_gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred);
@@ -1103,7 +1115,6 @@ syms_of_gnutls (void)
1103 gnutls_global_initialized = 0; 1115 gnutls_global_initialized = 0;
1104 1116
1105 DEFSYM (Qgnutls_dll, "gnutls"); 1117 DEFSYM (Qgnutls_dll, "gnutls");
1106 DEFSYM (Qgnutls_log_level, "gnutls-log-level");
1107 DEFSYM (Qgnutls_code, "gnutls-code"); 1118 DEFSYM (Qgnutls_code, "gnutls-code");
1108 DEFSYM (Qgnutls_anon, "gnutls-anon"); 1119 DEFSYM (Qgnutls_anon, "gnutls-anon");
1109 DEFSYM (Qgnutls_x509pki, "gnutls-x509pki"); 1120 DEFSYM (Qgnutls_x509pki, "gnutls-x509pki");
@@ -1114,6 +1125,7 @@ syms_of_gnutls (void)
1114 DEFSYM (Qgnutls_bootprop_crlfiles, ":crlfiles"); 1125 DEFSYM (Qgnutls_bootprop_crlfiles, ":crlfiles");
1115 DEFSYM (Qgnutls_bootprop_callbacks, ":callbacks"); 1126 DEFSYM (Qgnutls_bootprop_callbacks, ":callbacks");
1116 DEFSYM (Qgnutls_bootprop_callbacks_verify, "verify"); 1127 DEFSYM (Qgnutls_bootprop_callbacks_verify, "verify");
1128 DEFSYM (Qgnutls_bootprop_min_prime_bits, ":min-prime-bits");
1117 DEFSYM (Qgnutls_bootprop_loglevel, ":loglevel"); 1129 DEFSYM (Qgnutls_bootprop_loglevel, ":loglevel");
1118 DEFSYM (Qgnutls_bootprop_verify_flags, ":verify-flags"); 1130 DEFSYM (Qgnutls_bootprop_verify_flags, ":verify-flags");
1119 DEFSYM (Qgnutls_bootprop_verify_hostname_error, ":verify-hostname-error"); 1131 DEFSYM (Qgnutls_bootprop_verify_hostname_error, ":verify-hostname-error");
@@ -1142,6 +1154,10 @@ syms_of_gnutls (void)
1142 defsubr (&Sgnutls_deinit); 1154 defsubr (&Sgnutls_deinit);
1143 defsubr (&Sgnutls_bye); 1155 defsubr (&Sgnutls_bye);
1144 defsubr (&Sgnutls_available_p); 1156 defsubr (&Sgnutls_available_p);
1157
1158 DEFVAR_INT ("gnutls-log-level", Vgnutls_log_level,
1159 doc: /* Logging level used by the GnuTLS functions. */);
1160 Vgnutls_log_level = make_number (0);
1145} 1161}
1146 1162
1147#endif /* HAVE_GNUTLS */ 1163#endif /* HAVE_GNUTLS */
diff --git a/src/lread.c b/src/lread.c
index 6cb217a21c6..8b46f382694 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2327,8 +2327,7 @@ read_integer (Lisp_Object readcharfun, EMACS_INT radix)
2327 c = READCHAR; 2327 c = READCHAR;
2328 } 2328 }
2329 2329
2330 if (c >= 0) 2330 UNREAD (c);
2331 UNREAD (c);
2332 *p = '\0'; 2331 *p = '\0';
2333 } 2332 }
2334 2333
@@ -2583,8 +2582,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2583 nskip *= 10; 2582 nskip *= 10;
2584 nskip += c - '0'; 2583 nskip += c - '0';
2585 } 2584 }
2586 if (c >= 0) 2585 UNREAD (c);
2587 UNREAD (c);
2588 2586
2589 if (load_force_doc_strings 2587 if (load_force_doc_strings
2590 && (EQ (readcharfun, Qget_file_char) 2588 && (EQ (readcharfun, Qget_file_char)
@@ -2660,7 +2658,17 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2660 { 2658 {
2661 uninterned_symbol = 1; 2659 uninterned_symbol = 1;
2662 c = READCHAR; 2660 c = READCHAR;
2663 goto default_label; 2661 if (!(c > 040
2662 && c != 0x8a0
2663 && (c >= 0200
2664 || strchr ("\"';()[]#`,", c) == NULL)))
2665 {
2666 /* No symbol character follows, this is the empty
2667 symbol. */
2668 UNREAD (c);
2669 return Fmake_symbol (build_string (""));
2670 }
2671 goto read_symbol;
2664 } 2672 }
2665 /* Reader forms that can reuse previously read objects. */ 2673 /* Reader forms that can reuse previously read objects. */
2666 if (c >= '0' && c <= '9') 2674 if (c >= '0' && c <= '9')
@@ -2841,7 +2849,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2841 next_char = READCHAR; 2849 next_char = READCHAR;
2842 ok = (next_char <= 040 2850 ok = (next_char <= 040
2843 || (next_char < 0200 2851 || (next_char < 0200
2844 && (strchr ("\"';()[]#?`,.", next_char)))); 2852 && strchr ("\"';()[]#?`,.", next_char) != NULL));
2845 UNREAD (next_char); 2853 UNREAD (next_char);
2846 if (ok) 2854 if (ok)
2847 return make_number (c); 2855 return make_number (c);
@@ -2966,11 +2974,6 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2966 /* Otherwise, READ_BUFFER contains only ASCII. */ 2974 /* Otherwise, READ_BUFFER contains only ASCII. */
2967 } 2975 }
2968 2976
2969 /* We want readchar_count to be the number of characters, not
2970 bytes. Hence we adjust for multibyte characters in the
2971 string. ... But it doesn't seem to be necessary, because
2972 READCHAR *does* read multibyte characters from buffers. */
2973 /* readchar_count -= (p - read_buffer) - nchars; */
2974 if (read_pure) 2977 if (read_pure)
2975 return make_pure_string (read_buffer, nchars, p - read_buffer, 2978 return make_pure_string (read_buffer, nchars, p - read_buffer,
2976 (force_multibyte 2979 (force_multibyte
@@ -2987,7 +2990,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2987 2990
2988 if (next_char <= 040 2991 if (next_char <= 040
2989 || (next_char < 0200 2992 || (next_char < 0200
2990 && (strchr ("\"';([#?`,", next_char)))) 2993 && strchr ("\"';([#?`,", next_char) != NULL))
2991 { 2994 {
2992 *pch = c; 2995 *pch = c;
2993 return Qnil; 2996 return Qnil;
@@ -3002,9 +3005,12 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
3002 if (c <= 040) goto retry; 3005 if (c <= 040) goto retry;
3003 if (c == 0x8a0) /* NBSP */ 3006 if (c == 0x8a0) /* NBSP */
3004 goto retry; 3007 goto retry;
3008
3009 read_symbol:
3005 { 3010 {
3006 char *p = read_buffer; 3011 char *p = read_buffer;
3007 int quoted = 0; 3012 int quoted = 0;
3013 EMACS_INT start_position = readchar_count - 1;
3008 3014
3009 { 3015 {
3010 char *end = read_buffer + read_buffer_size; 3016 char *end = read_buffer + read_buffer_size;
@@ -3035,10 +3041,11 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
3035 else 3041 else
3036 *p++ = c; 3042 *p++ = c;
3037 c = READCHAR; 3043 c = READCHAR;
3038 } while (c > 040 3044 }
3039 && c != 0x8a0 /* NBSP */ 3045 while (c > 040
3040 && (c >= 0200 3046 && c != 0x8a0 /* NBSP */
3041 || !(strchr ("\"';()[]#`,", c)))); 3047 && (c >= 0200
3048 || strchr ("\"';()[]#`,", c) == NULL));
3042 3049
3043 if (p == end) 3050 if (p == end)
3044 { 3051 {
@@ -3051,8 +3058,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
3051 end = read_buffer + read_buffer_size; 3058 end = read_buffer + read_buffer_size;
3052 } 3059 }
3053 *p = 0; 3060 *p = 0;
3054 if (c >= 0) 3061 UNREAD (c);
3055 UNREAD (c);
3056 } 3062 }
3057 3063
3058 if (!quoted && !uninterned_symbol) 3064 if (!quoted && !uninterned_symbol)
@@ -3080,12 +3086,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
3080 if (EQ (Vread_with_symbol_positions, Qt) 3086 if (EQ (Vread_with_symbol_positions, Qt)
3081 || EQ (Vread_with_symbol_positions, readcharfun)) 3087 || EQ (Vread_with_symbol_positions, readcharfun))
3082 Vread_symbol_positions_list = 3088 Vread_symbol_positions_list =
3083 /* Kind of a hack; this will probably fail if characters 3089 Fcons (Fcons (result, make_number (start_position)),
3084 in the symbol name were escaped. Not really a big
3085 deal, though. */
3086 Fcons (Fcons (result,
3087 make_number (readchar_count
3088 - XFASTINT (Flength (Fsymbol_name (result))))),
3089 Vread_symbol_positions_list); 3090 Vread_symbol_positions_list);
3090 return result; 3091 return result;
3091 } 3092 }
@@ -4510,9 +4511,11 @@ to load. See also `load-dangerous-libraries'. */);
4510 staticpro (&Qlexical_binding); 4511 staticpro (&Qlexical_binding);
4511 DEFVAR_LISP ("lexical-binding", Vlexical_binding, 4512 DEFVAR_LISP ("lexical-binding", Vlexical_binding,
4512 doc: /* If non-nil, use lexical binding when evaluating code. 4513 doc: /* If non-nil, use lexical binding when evaluating code.
4513This only applies to code evaluated by `eval-buffer' and `eval-region'. 4514This applies to code evaluated by `eval-buffer' and `eval-region' and
4514This variable is automatically set from the file variables of an interpreted 4515other commands that call these functions, like `eval-defun' and
4515 Lisp file read using `load'. */); 4516the like.
4517This variable is automatically set from the file variables of an
4518interpreted Lisp file read using `load'. */);
4516 Fmake_variable_buffer_local (Qlexical_binding); 4519 Fmake_variable_buffer_local (Qlexical_binding);
4517 4520
4518 DEFVAR_LISP ("eval-buffer-list", Veval_buffer_list, 4521 DEFVAR_LISP ("eval-buffer-list", Veval_buffer_list,
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index 88b53554925..fd29dec9096 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -221,7 +221,8 @@ GLOBAL_SOURCES = dosfns.c msdos.c \
221 syntax.c bytecode.c \ 221 syntax.c bytecode.c \
222 process.c callproc.c unexw32.c \ 222 process.c callproc.c unexw32.c \
223 region-cache.c sound.c atimer.c \ 223 region-cache.c sound.c atimer.c \
224 doprnt.c intervals.c textprop.c composite.c 224 doprnt.c intervals.c textprop.c composite.c \
225 gnutls.c
225SOME_MACHINE_OBJECTS = dosfns.o msdos.o \ 226SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
226 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o dbusbind.o 227 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o dbusbind.o
227obj = $(GLOBAL_SOURCES:.c=.o) 228obj = $(GLOBAL_SOURCES:.c=.o)
diff --git a/src/process.c b/src/process.c
index 1a884357b86..236c27e5c3a 100644
--- a/src/process.c
+++ b/src/process.c
@@ -245,7 +245,7 @@ static void create_pty (Lisp_Object);
245 245
246/* If we support a window system, turn on the code to poll periodically 246/* If we support a window system, turn on the code to poll periodically
247 to detect C-g. It isn't actually used when doing interrupt input. */ 247 to detect C-g. It isn't actually used when doing interrupt input. */
248#ifdef HAVE_WINDOW_SYSTEM 248#if defined(HAVE_WINDOW_SYSTEM) && !defined(USE_ASYNC_EVENTS)
249#define POLL_FOR_INPUT 249#define POLL_FOR_INPUT
250#endif 250#endif
251 251
diff --git a/src/xdisp.c b/src/xdisp.c
index 67cbfaa76f6..8003eb3e9d5 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -7976,7 +7976,14 @@ move_it_in_display_line_to (struct it *it,
7976 || IT_OVERFLOW_NEWLINE_INTO_FRINGE (it)) 7976 || IT_OVERFLOW_NEWLINE_INTO_FRINGE (it))
7977 { 7977 {
7978 if (!get_next_display_element (it) 7978 if (!get_next_display_element (it)
7979 || BUFFER_POS_REACHED_P ()) 7979 || BUFFER_POS_REACHED_P ()
7980 /* If we are past TO_CHARPOS, but never saw any
7981 character positions smaller than TO_CHARPOS,
7982 return MOVE_POS_MATCH_OR_ZV, like the
7983 unidirectional display did. */
7984 || ((op & MOVE_TO_POS) != 0
7985 && !saw_smaller_pos
7986 && IT_CHARPOS (*it) > to_charpos))
7980 { 7987 {
7981 result = MOVE_POS_MATCH_OR_ZV; 7988 result = MOVE_POS_MATCH_OR_ZV;
7982 break; 7989 break;
@@ -7987,6 +7994,13 @@ move_it_in_display_line_to (struct it *it,
7987 break; 7994 break;
7988 } 7995 }
7989 } 7996 }
7997 else if ((op & MOVE_TO_POS) != 0
7998 && !saw_smaller_pos
7999 && IT_CHARPOS (*it) > to_charpos)
8000 {
8001 result = MOVE_POS_MATCH_OR_ZV;
8002 break;
8003 }
7990 result = MOVE_LINE_TRUNCATED; 8004 result = MOVE_LINE_TRUNCATED;
7991 break; 8005 break;
7992 } 8006 }