aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--admin/notes/bugtracker8
-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/ChangeLog6
-rw-r--r--etc/MH-E-NEWS16
-rw-r--r--etc/NEWS2
-rw-r--r--lisp/ChangeLog84
-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/debug.el2
-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/ChangeLog17
-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/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/mh-e/ChangeLog6
-rw-r--r--lisp/mh-e/mh-e.el4
-rw-r--r--lisp/net/gnutls.el34
-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/ChangeLog51
-rw-r--r--src/bidi.c13
-rw-r--r--src/fileio.c4
-rw-r--r--src/gnutls.c32
-rw-r--r--src/lread.c8
-rw-r--r--src/makefile.w32-in3
-rw-r--r--src/process.c2
-rw-r--r--src/xdisp.c16
44 files changed, 479 insertions, 133 deletions
diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker
index 04721e4cec3..dd1ea46ceb2 100644
--- a/admin/notes/bugtracker
+++ b/admin/notes/bugtracker
@@ -632,3 +632,11 @@ mytest my.email.address
632 632
633Then if you do all your testing with 'Package: mytest', the resulting 633Then if you do all your testing with 'Package: mytest', the resulting
634mails should only go to your email address. 634mails should only go to your email address.
635
636** Adding new tags
637
638Add them to @gTags in /etc/debbugs/config.
639I think you also have to add them to 'tags' and 'tags_single_letter'
640in /usr/share/perl5/Debbugs/Config.pm.
641And update /var/www/Developer.html with a description of what the tag means.
642And the "valid tags" list in /var/www/index.html.
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..cf856429f01 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,9 @@
12011-07-16 Bill Wohler <wohler@newt.com>
2
3 Release MH-E version 8.2.92.
4
5 * NEWS, MH-E-NEWS: Update for MH-E release 8.2.92.
6
12011-07-12 Bill Wohler <wohler@newt.com> 72011-07-12 Bill Wohler <wohler@newt.com>
2 8
3 Release MH-E version 8.2.91. 9 Release MH-E version 8.2.91.
diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS
index a46354d7b7b..b5b2a8b5867 100644
--- a/etc/MH-E-NEWS
+++ b/etc/MH-E-NEWS
@@ -3,6 +3,11 @@
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.92
7
8Version 8.2.92 actually corrects the error in the modeline glyph when
9running XEmacs 21.5.31 in a terminal.
10
6* Changes in MH-E 8.2.91 11* Changes in MH-E 8.2.91
7 12
8Version 8.2.91 fixes the folder window problem that was introduced 13Version 8.2.91 fixes the folder window problem that was introduced
@@ -14,8 +19,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 19`load-path' to "/path/to/mh-e/emacs/trunk/lisp/mh-e" instead. Note the
15addition of "trunk." 20addition of "trunk."
16 21
17This version of MH-E is packaged with GNU Emacs 24.1
18
19* Changes in MH-E 8.2.90 22* Changes in MH-E 8.2.90
20 23
21In 2010, the version control system (VCS) of Emacs was upgraded from 24In 2010, the version control system (VCS) of Emacs was upgraded from
@@ -32,6 +35,15 @@ meaning that `+f/b/b TAB' can complete to `+foo/bar/baz'.
32Also, RFC 2047-encoded Subject header fields in replies are now 35Also, RFC 2047-encoded Subject header fields in replies are now
33decoded. 36decoded.
34 37
38This version of MH-E is packaged with GNU Emacs 24.1
39
40** Bug Fixes in MH-E 8.2.90
41
42*** Make mh-showing a legitimate minor mode
43
44The `mh-showing-mode' variable is now defined with `define-minor-mode'
45(closes SF #482666).
46
35 47
36 48
37* Changes in MH-E 8.2 49* Changes in MH-E 8.2
diff --git a/etc/NEWS b/etc/NEWS
index 11acbd8c42d..70793c7c1d6 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.92. 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 66783b9a5ed..15f742ed91a 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,87 @@
12011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * net/gnutls.el (gnutls-log-level): Removed.
4
5 * textmodes/fill.el (adaptive-fill-regexp): Include EN DASH as an
6 indentation character (bug#6380).
7
8 * files.el (buffer-offer-save): Made permanently local (bug#6241).
9
10 * doc-view.el (doc-view-make-safe-dir): Rewrite the error message
11 to clarify what the problem is (bug#4291).
12
13 * simple.el (current-kill): Clarify what
14 `interprogram-paste-function' does (bug#7500).
15 (auto-fill-mode): Document `auto-fill-function' in relation to
16 `auto-fill-mode' (bug#2470).
17
182011-07-16 Lawrence Mitchell <wence@gmx.li>
19
20 * emacs-lisp/cl-macs.el (defstruct): Ignore argument to setf
21 method if slot is read-only (bug#9035).
22
232011-07-16 Martin Rudalics <rudalics@gmx.at>
24
25 * frame.el (select-frame-set-input-focus): New argument
26 NORECORD.
27 * window.el (pop-to-buffer): Select window used even if it was
28 selected before, see discussion of (Bug#8615), (Bug#6954). Pass
29 argument NORECORD on to select-frame-set-input-focus.
30
312011-07-15 Glenn Morris <rgm@gnu.org>
32
33 * subr.el (read-char-choice): Allow quitting. (Bug#9001)
34 Respect help-form.
35
362011-07-09 Lawrence Mitchell <wence@gmx.li>
37
38 * net/gnutls.el (gnutls-min-prime-bits): New variable.
39 (gnutls-negotiate): Use it.
40
412011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
42
43 * net/gnutls.el (gnutls-negotiate): Upcase
44 `gnutls-algorithm-priority'.
45
462011-07-15 Glenn Morris <rgm@gnu.org>
47
48 * jka-compr.el (jka-compr-verbose): Move from here...
49 * jka-cmpr-hook.el (jka-compr-verbose): ... to here. (Bug#9090)
50 Add missing :version tag.
51 * info.el: No need to require jka-compr when compiling.
52
532011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
54
55 * net/gnutls.el (gnutls-algorithm-priority): New variable.
56 (gnutls-negotiate): Use it.
57
58 * emacs-lisp/cl-macs.el (declare): Link to the "Declarations" node.
59
60 * info.el (Info-beginning-of-buffer): New command.
61 (Info-mode-map): Use it instead of `beginning-of-buffer' to allow
62 announcing `b' as the key (bug#8325).
63 (Info-mode-menu): Use `Info-beginning-of-buffer' for consistency.
64
65 * emacs-lisp/cl-macs.el (declare): Doc string fix-up.
66
67 * international/mule-cmds.el
68 (describe-specified-language-support): Make the error message
69 clearer (bug#8905).
70
71 * emacs-lisp/cl-macs.el (declare): Add a doc string (bug#8690).
72
73 * isearch.el (isearch-barrier): Add a doc string, since it's
74 mentioned in a function doc string (bug#8678).
75
762011-07-15 Martin Rudalics <rudalics@gmx.at>
77
78 * window.el (switch-to-buffer): Call pop-to-buffer with normalized
79 buffer argument (Bug#9083) and self-identifying label argument.
80
812011-07-15 Glenn Morris <rgm@gnu.org>
82
83 * emacs-lisp/debug.el (debug): Doc fix. (Bug#8273)
84
12011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> 852011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 86
3 * man.el (Man-fontify-manpage): Fix message when formatting the 87 * man.el (Man-fontify-manpage): Fix message when formatting the
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..f0c72a0b269 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" "2261724608e3223036b863d214f7dc0c")
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/debug.el b/lisp/emacs-lisp/debug.el
index 2fa339e62fe..157749500e7 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -102,7 +102,7 @@ and `debugger-reenable' to temporarily disable debug-on-entry.")
102(setq debugger 'debug) 102(setq debugger 'debug)
103;;;###autoload 103;;;###autoload
104(defun debug (&rest debugger-args) 104(defun debug (&rest debugger-args)
105 "Enter debugger. To return, type \\<debugger-mode-map>`\\[debugger-continue]'. 105 "Enter debugger. \\<debugger-mode-map>`\\[debugger-continue]' returns from the debugger.
106Arguments are mainly for use when this is called from the internals 106Arguments are mainly for use when this is called from the internals
107of the evaluator. 107of the evaluator.
108 108
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 7c887dc5450..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
@@ -5,7 +20,7 @@
5 20
6 * gnus-int.el (gnus-request-thread): Add group argument. 21 * gnus-int.el (gnus-request-thread): Add group argument.
7 22
8 * gnus-sum.el (gnus-request-thread): Use it. 23 * gnus-sum.el (gnus-summary-refer-thread): Use it.
9 24
102011-07-10 Lars Magne Ingebrigtsen <larsi@gnus.org> 252011-07-10 Lars Magne Ingebrigtsen <larsi@gnus.org>
11 26
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/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/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index df4edcc75e1..431c15b2346 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,9 @@
12011-07-16 Bill Wohler <wohler@newt.com>
2
3 Release MH-E version 8.2.92.
4
5 * mh-e.el (Version, mh-version): Update for release 8.2.92.
6
12011-07-12 Bill Wohler <wohler@newt.com> 72011-07-12 Bill Wohler <wohler@newt.com>
2 8
3 Release MH-E version 8.2.91. 9 Release MH-E version 8.2.91.
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 51b41e854b0..1e7b07eb6dc 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.92
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.92" "Version number of MH-E.")
131 131
132;; Variants 132;; Variants
133 133
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/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 680e67e05f7..9e46b7d3318 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,4 +1,4 @@
12011-07-16 Paul Eggert <eggert@cs.ucla.edu> 12011-07-17 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 Overflow, signedness and related fixes for images. 3 Overflow, signedness and related fixes for images.
4 4
@@ -43,7 +43,7 @@
43 (gs_load): Use printmax_t to print the widest integers possible. 43 (gs_load): Use printmax_t to print the widest integers possible.
44 Check for integer overflow when computing image height and width. 44 Check for integer overflow when computing image height and width.
45 45
462011-07-14 Paul Eggert <eggert@cs.ucla.edu> 462011-07-17 Paul Eggert <eggert@cs.ucla.edu>
47 47
48 Integer signedness and overflow and related fixes. (Bug#9079) 48 Integer signedness and overflow and related fixes. (Bug#9079)
49 49
@@ -60,6 +60,9 @@
60 Don't set bidi_cache_size until after xrealloc returns, because it 60 Don't set bidi_cache_size until after xrealloc returns, because it
61 might not return. 61 might not return.
62 (bidi_dump_cached_states): Use ptrdiff_t, not int, to avoid overflow. 62 (bidi_dump_cached_states): Use ptrdiff_t, not int, to avoid overflow.
63 (bidi_cache_ensure_space): Also check that the bidi cache size
64 does not exceed that of the largest Lisp string or buffer. See Eli
65 Zaretskii in <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9079#29>.
63 66
64 * alloc.c (__malloc_size_t): Remove. 67 * alloc.c (__malloc_size_t): Remove.
65 All uses replaced by size_t. See Andreas Schwab's note 68 All uses replaced by size_t. See Andreas Schwab's note
@@ -239,6 +242,47 @@
239 Use EMACS_INT, not EMACS_UINT, for sizes. The code works equally 242 Use EMACS_INT, not EMACS_UINT, for sizes. The code works equally
240 well either way, and we prefer signed to unsigned. 243 well either way, and we prefer signed to unsigned.
241 244
2452011-07-16 Juanma Barranquero <lekktu@gmail.com>
246
247 * makefile.w32-in (GLOBAL_SOURCES): Add gnutls.c (followup to bug#9059).
248
2492011-07-16 Paul Eggert <eggert@cs.ucla.edu>
250
251 * fileio.c (Fcopy_file): Don't diagnose fchown failures. (Bug#9002)
252
2532011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org>
254
255 * gnutls.c (syms_of_gnutls): Define `gnutls-log-level' here, since
256 it's used from the C level.
257
258 * process.c: Use the same condition for POLL_FOR_INPUT in both
259 keyboard.c and process.c (bug#1858).
260
2612011-07-09 Lawrence Mitchell <wence@gmx.li>
262
263 * gnutls.c (Qgnutls_bootprop_min_prime_bits): New variable.
264 (Fgnutls_boot): Use it.
265
2662011-07-15 Andreas Schwab <schwab@linux-m68k.org>
267
268 * doc.c (Fsubstitute_command_keys): Revert last change.
269
2702011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
271
272 * doc.c (Fsubstitute_command_keys): Clarify that \= really only
273 quotes the next character, and doesn't affect other longer
274 sequences (bug#8935).
275
276 * lread.c (syms_of_lread): Clarify that is isn't only
277 `eval-buffer' and `eval-defun' that's affected by
278 `lexical-binding' (bug#8460).
279
2802011-07-15 Eli Zaretskii <eliz@gnu.org>
281
282 * xdisp.c (move_it_in_display_line_to): Fix vertical motion with
283 bidi redisplay when a line includes both an image and is
284 truncated.
285
2422011-07-14 Paul Eggert <eggert@cs.ucla.edu> 2862011-07-14 Paul Eggert <eggert@cs.ucla.edu>
243 287
244 Fix minor problems found by static checking. 288 Fix minor problems found by static checking.
@@ -253,9 +297,6 @@
253 297
2542011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> 2982011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
255 299
256 * data.c (Fcdr, Fcar): Revert the last change, since it didn't
257 really clarify much.
258
259 * search.c (Fre_search_backward): Mention `case-fold-search' in 300 * search.c (Fre_search_backward): Mention `case-fold-search' in
260 all the re_search_* functions (bug#8138). 301 all the re_search_* functions (bug#8138).
261 302
diff --git a/src/bidi.c b/src/bidi.c
index 1999606639b..697ebb92856 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -464,9 +464,16 @@ bidi_cache_ensure_space (ptrdiff_t idx)
464 if (idx >= bidi_cache_size) 464 if (idx >= bidi_cache_size)
465 { 465 {
466 ptrdiff_t new_size; 466 ptrdiff_t new_size;
467 ptrdiff_t max_size = 467
468 min (PTRDIFF_MAX, SIZE_MAX) / elsz / BIDI_CACHE_CHUNK * BIDI_CACHE_CHUNK; 468 /* The bidi cache cannot be larger than the largest Lisp string
469 if (max_size <= idx) 469 or buffer. */
470 ptrdiff_t string_or_buffer_bound =
471 max (BUF_BYTES_MAX, STRING_BYTES_BOUND);
472
473 /* Also, it cannot be larger than what C can represent. */
474 ptrdiff_t c_bound = min (PTRDIFF_MAX, SIZE_MAX) / elsz;
475
476 if (min (string_or_buffer_bound, c_bound) <= idx)
470 memory_full (SIZE_MAX); 477 memory_full (SIZE_MAX);
471 new_size = idx - idx % BIDI_CACHE_CHUNK + BIDI_CACHE_CHUNK; 478 new_size = idx - idx % BIDI_CACHE_CHUNK + BIDI_CACHE_CHUNK;
472 bidi_cache = (struct bidi_it *) xrealloc (bidi_cache, new_size * elsz); 479 bidi_cache = (struct bidi_it *) xrealloc (bidi_cache, new_size * elsz);
diff --git a/src/fileio.c b/src/fileio.c
index d4fb0383119..c67bea79bd3 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1959,8 +1959,8 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
1959 owner and group. */ 1959 owner and group. */
1960 if (input_file_statable_p) 1960 if (input_file_statable_p)
1961 { 1961 {
1962 if (!NILP (preserve_uid_gid) && fchown (ofd, st.st_uid, st.st_gid) != 0) 1962 if (!NILP (preserve_uid_gid))
1963 report_file_error ("Doing chown", Fcons (newname, Qnil)); 1963 fchown (ofd, st.st_uid, st.st_gid);
1964 if (fchmod (ofd, st.st_mode & 07777) != 0) 1964 if (fchmod (ofd, st.st_mode & 07777) != 0)
1965 report_file_error ("Doing chmod", Fcons (newname, Qnil)); 1965 report_file_error ("Doing chmod", Fcons (newname, Qnil));
1966 } 1966 }
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 bef1cc8e591..c80ac430671 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4491,9 +4491,11 @@ to load. See also `load-dangerous-libraries'. */);
4491 staticpro (&Qlexical_binding); 4491 staticpro (&Qlexical_binding);
4492 DEFVAR_LISP ("lexical-binding", Vlexical_binding, 4492 DEFVAR_LISP ("lexical-binding", Vlexical_binding,
4493 doc: /* If non-nil, use lexical binding when evaluating code. 4493 doc: /* If non-nil, use lexical binding when evaluating code.
4494This only applies to code evaluated by `eval-buffer' and `eval-region'. 4494This applies to code evaluated by `eval-buffer' and `eval-region' and
4495This variable is automatically set from the file variables of an interpreted 4495other commands that call these functions, like `eval-defun' and
4496 Lisp file read using `load'. */); 4496the like.
4497This variable is automatically set from the file variables of an
4498interpreted Lisp file read using `load'. */);
4497 Fmake_variable_buffer_local (Qlexical_binding); 4499 Fmake_variable_buffer_local (Qlexical_binding);
4498 4500
4499 DEFVAR_LISP ("eval-buffer-list", Veval_buffer_list, 4501 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 50f6f79c941..4ea183ccc56 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -7928,7 +7928,14 @@ move_it_in_display_line_to (struct it *it,
7928 || IT_OVERFLOW_NEWLINE_INTO_FRINGE (it)) 7928 || IT_OVERFLOW_NEWLINE_INTO_FRINGE (it))
7929 { 7929 {
7930 if (!get_next_display_element (it) 7930 if (!get_next_display_element (it)
7931 || BUFFER_POS_REACHED_P ()) 7931 || BUFFER_POS_REACHED_P ()
7932 /* If we are past TO_CHARPOS, but never saw any
7933 character positions smaller than TO_CHARPOS,
7934 return MOVE_POS_MATCH_OR_ZV, like the
7935 unidirectional display did. */
7936 || ((op & MOVE_TO_POS) != 0
7937 && !saw_smaller_pos
7938 && IT_CHARPOS (*it) > to_charpos))
7932 { 7939 {
7933 result = MOVE_POS_MATCH_OR_ZV; 7940 result = MOVE_POS_MATCH_OR_ZV;
7934 break; 7941 break;
@@ -7939,6 +7946,13 @@ move_it_in_display_line_to (struct it *it,
7939 break; 7946 break;
7940 } 7947 }
7941 } 7948 }
7949 else if ((op & MOVE_TO_POS) != 0
7950 && !saw_smaller_pos
7951 && IT_CHARPOS (*it) > to_charpos)
7952 {
7953 result = MOVE_POS_MATCH_OR_ZV;
7954 break;
7955 }
7942 result = MOVE_LINE_TRUNCATED; 7956 result = MOVE_LINE_TRUNCATED;
7943 break; 7957 break;
7944 } 7958 }