aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert <[email protected]>2011-07-16 17:37:57 -0700
committerPaul Eggert <[email protected]>2011-07-16 17:37:57 -0700
commit4f8a4547454e24304b4182fbf4ae4b34a7bdc92b (patch)
treed03d6d6cdd4b10a62633ed5f9da42d60dac016d0
parentf0eb61e99dce9005dc94c909046f6130b3d4a97c (diff)
parent64a465b2d97d00f27ed74513047ced07b798b9fd (diff)
Merge from trunk.
-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/ChangeLog46
-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
43 files changed, 465 insertions, 129 deletions
diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker
index 04721e4cec..dd1ea46ceb 100644
--- a/admin/notes/bugtracker
+++ b/admin/notes/bugtracker
@@ -632,3 +632,11 @@ mytest my.email.address
Then if you do all your testing with 'Package: mytest', the resulting
mails should only go to your email address.
+
+** Adding new tags
+
+Add them to @gTags in /etc/debbugs/config.
+I think you also have to add them to 'tags' and 'tags_single_letter'
+in /usr/share/perl5/Debbugs/Config.pm.
+And update /var/www/Developer.html with a description of what the tag means.
+And the "valid tags" list in /var/www/index.html.
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 531bf206a8..e10b9a83a4 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-15 Lars Magne Ingebrigtsen <[email protected]>
+
+ * help.texi (Misc Help): Mention `describe-prefix-bindings'
+ explicitly (bug#8904).
+
2011-07-14 Lars Magne Ingebrigtsen <[email protected]>
* trouble.texi (Checklist): Use an `M-x' example instead of an
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index 76a9f2413b..9a75bfb188 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
character's syntax (@pxref{Syntax Tables,, Syntax Tables, elisp, The
Emacs Lisp Reference Manual}).
+@findex describe-prefix-bindings
You can get a list of subcommands for a particular prefix key by
-typing @kbd{C-h} after the prefix key. (There are a few prefix keys
-for which this does not work---those that provide their own bindings
-for @kbd{C-h}. One of these is @key{ESC}, because @kbd{@key{ESC} C-h}
-is actually @kbd{C-M-h}, which marks a defun.)
+typing @kbd{C-h} (@code{describe-prefix-bindings}) after the prefix
+key. (There are a few prefix keys for which this does not
+work---those that provide their own bindings for @kbd{C-h}. One of
+these is @key{ESC}, because @kbd{@key{ESC} C-h} is actually
+@kbd{C-M-h}, which marks a defun.)
@node Help Files
@section Help Files
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 153d7e839c..091a6ffda5 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,22 @@
+2011-07-16 Lars Magne Ingebrigtsen <[email protected]>
+ Tim Cross <[email protected]> (tiny change)
+ Glenn Morris <[email protected]>
+
+ * keymaps.texi (Toolkit Differences): New node. (Bug#8176)
+
+2011-07-15 Andreas Schwab <[email protected]>
+
+ * help.texi (Keys in Documentation): Revert last change.
+
+2011-07-15 Lars Magne Ingebrigtsen <[email protected]>
+
+ * help.texi (Keys in Documentation): Clarify that \= only quotes
+ the next character, and doesn't affect longer sequences in
+ particular (bug#8935).
+
+ * debugging.texi (Using Debugger): Mention
+ @code{eval-expression-debug-on-error} (bug#8549).
+
2011-07-14 Eli Zaretskii <[email protected]>
* display.texi (Other Display Specs): Document that `left-fringe'
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index ed146453df..d9e807afb8 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
the debugger gets out of the recursive edit and kills the backtrace
buffer.
+ When the debugger has been entered, the @code{debug-on-error}
+variable is temporarily set according to
+@code{eval-expression-debug-on-error}. If the latter variable is
+non-@code{nil}, @code{debug-on-error} will temporarily be set to
+@code{t}. This means that any further errors that occur while doing a
+debugging session will (by default) trigger another backtrace. If
+this is not want you want, you can either set
+@code{eval-expression-debug-on-error} to @code{nil}, or set
+@code{debug-on-error} to @code{nil} in @code{debugger-mode-hook}.
+
@cindex current stack frame
The backtrace buffer shows you the functions that are executing and
their 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 15b2f2079b..e5cca0622a 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
various features.
* Menu Separators:: Drawing a horizontal line through a menu.
* Alias Menu Items:: Using command aliases in menu items.
+* Toolkit Differences:: Not all toolkits provide the same features.
@end menu
+
@node Simple Menu Items
@subsubsection Simple Menu Items
@@ -2309,6 +2311,28 @@ itself). To request this, give the alias symbol a non-@code{nil}
causes menu items for @code{make-read-only} and @code{make-writable} to
show the keyboard bindings for @code{toggle-read-only}.
+@node Toolkit Differences
+@subsubsection Toolkit Differences
+
+The various toolkits with which you can build Emacs do not all support
+the same set of features for menus. Some code works as expected with
+one toolkit, but not under another.
+
+One example is menu actions or buttons in a top-level menu-bar. The
+following works with the Lucid toolkit or on MS Windows, but not with
+GTK or Nextstep, where clicking on the item has no effect.
+
+@example
+(defun menu-action-greet ()
+ (interactive)
+ (message "Hello Emacs User!"))
+
+(defun top-level-menu ()
+ (interactive)
+ (define-key lisp-interaction-mode-map [menu-bar m]
+ '(menu-item "Action Button" menu-action-greet)))
+@end example
+
@node Mouse Menus
@subsection Menus and the Mouse
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 3da0936988..091765043e 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1099,11 +1099,12 @@ use short names like @code{x}.
@node Lexical Binding
@subsection Use of Lexical Scoping
-Emacs Lisp can be evaluated in two different modes: in dynamic binding mode or
-lexical binding mode. In dynamic binding mode, all local variables use dynamic
-scoping, whereas in lexical binding mode variables that have been declared
-@dfn{special} (i.e., declared with @code{defvar} or @code{defconst}) use
-dynamic scoping and all others use lexical scoping.
+Emacs Lisp can be evaluated in two different modes: in dynamic binding
+mode or lexical binding mode. In dynamic binding mode, all local
+variables use dynamic scoping, whereas in lexical binding mode
+variables that have been declared @dfn{special} (i.e., declared with
+@code{defvar}, @code{defcustom} or @code{defconst}) use dynamic
+scoping and all others use lexical scoping.
@defvar lexical-binding
When non-nil, evaluation of Lisp code uses lexical scoping for non-special
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 38cbaafa45..d64980bd1c 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-15 Lars Magne Ingebrigtsen <[email protected]>
+
+ * flymake.texi (Example -- Configuring a tool called via make):
+ Use /dev/null instead of the Windows "nul" (bug#8715).
+
2011-07-14 Lars Magne Ingebrigtsen <[email protected]>
* widget.texi (Setting Up the Buffer): Remove mention of the
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 74cf3d630d..625e954944 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -483,7 +483,7 @@ our case this target might look like this:
@verbatim
check-syntax:
- gcc -o nul -S ${CHK_SOURCES}
+ gcc -o /dev/null -S ${CHK_SOURCES}
@end verbatim
The format of error messages reported by @code{gcc} is already
diff --git a/etc/ChangeLog b/etc/ChangeLog
index bfe584c69a..cf856429f0 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,9 @@
+2011-07-16 Bill Wohler <[email protected]>
+
+ Release MH-E version 8.2.92.
+
+ * NEWS, MH-E-NEWS: Update for MH-E release 8.2.92.
+
2011-07-12 Bill Wohler <[email protected]>
Release MH-E version 8.2.91.
diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS
index a46354d7b7..b5b2a8b586 100644
--- a/etc/MH-E-NEWS
+++ b/etc/MH-E-NEWS
@@ -3,6 +3,11 @@
Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
+* Changes in MH-E 8.2.92
+
+Version 8.2.92 actually corrects the error in the modeline glyph when
+running XEmacs 21.5.31 in a terminal.
+
* Changes in MH-E 8.2.91
Version 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
`load-path' to "/path/to/mh-e/emacs/trunk/lisp/mh-e" instead. Note the
addition of "trunk."
-This version of MH-E is packaged with GNU Emacs 24.1
-
* Changes in MH-E 8.2.90
In 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'.
Also, RFC 2047-encoded Subject header fields in replies are now
decoded.
+This version of MH-E is packaged with GNU Emacs 24.1
+
+** Bug Fixes in MH-E 8.2.90
+
+*** Make mh-showing a legitimate minor mode
+
+The `mh-showing-mode' variable is now defined with `define-minor-mode'
+(closes SF #482666).
+
* Changes in MH-E 8.2
diff --git a/etc/NEWS b/etc/NEWS
index 11acbd8c42..70793c7c1d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -488,7 +488,7 @@ $ESHELL nor variable `explicit-shell-file-name' is set.
** MH-E
-*** Upgraded to MH-E version 8.2.91. See MH-E-NEWS for details.
+*** Upgraded to MH-E version 8.2.92. See MH-E-NEWS for details.
** comint and modes derived from it use the generic completion code.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 66783b9a5e..15f742ed91 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,87 @@
+2011-07-16 Lars Magne Ingebrigtsen <[email protected]>
+
+ * net/gnutls.el (gnutls-log-level): Removed.
+
+ * textmodes/fill.el (adaptive-fill-regexp): Include EN DASH as an
+ indentation character (bug#6380).
+
+ * files.el (buffer-offer-save): Made permanently local (bug#6241).
+
+ * doc-view.el (doc-view-make-safe-dir): Rewrite the error message
+ to clarify what the problem is (bug#4291).
+
+ * simple.el (current-kill): Clarify what
+ `interprogram-paste-function' does (bug#7500).
+ (auto-fill-mode): Document `auto-fill-function' in relation to
+ `auto-fill-mode' (bug#2470).
+
+2011-07-16 Lawrence Mitchell <[email protected]>
+
+ * emacs-lisp/cl-macs.el (defstruct): Ignore argument to setf
+ method if slot is read-only (bug#9035).
+
+2011-07-16 Martin Rudalics <[email protected]>
+
+ * frame.el (select-frame-set-input-focus): New argument
+ NORECORD.
+ * window.el (pop-to-buffer): Select window used even if it was
+ selected before, see discussion of (Bug#8615), (Bug#6954). Pass
+ argument NORECORD on to select-frame-set-input-focus.
+
+2011-07-15 Glenn Morris <[email protected]>
+
+ * subr.el (read-char-choice): Allow quitting. (Bug#9001)
+ Respect help-form.
+
+2011-07-09 Lawrence Mitchell <[email protected]>
+
+ * net/gnutls.el (gnutls-min-prime-bits): New variable.
+ (gnutls-negotiate): Use it.
+
+2011-07-15 Lars Magne Ingebrigtsen <[email protected]>
+
+ * net/gnutls.el (gnutls-negotiate): Upcase
+ `gnutls-algorithm-priority'.
+
+2011-07-15 Glenn Morris <[email protected]>
+
+ * jka-compr.el (jka-compr-verbose): Move from here...
+ * jka-cmpr-hook.el (jka-compr-verbose): ... to here. (Bug#9090)
+ Add missing :version tag.
+ * info.el: No need to require jka-compr when compiling.
+
+2011-07-15 Lars Magne Ingebrigtsen <[email protected]>
+
+ * net/gnutls.el (gnutls-algorithm-priority): New variable.
+ (gnutls-negotiate): Use it.
+
+ * emacs-lisp/cl-macs.el (declare): Link to the "Declarations" node.
+
+ * info.el (Info-beginning-of-buffer): New command.
+ (Info-mode-map): Use it instead of `beginning-of-buffer' to allow
+ announcing `b' as the key (bug#8325).
+ (Info-mode-menu): Use `Info-beginning-of-buffer' for consistency.
+
+ * emacs-lisp/cl-macs.el (declare): Doc string fix-up.
+
+ * international/mule-cmds.el
+ (describe-specified-language-support): Make the error message
+ clearer (bug#8905).
+
+ * emacs-lisp/cl-macs.el (declare): Add a doc string (bug#8690).
+
+ * isearch.el (isearch-barrier): Add a doc string, since it's
+ mentioned in a function doc string (bug#8678).
+
+2011-07-15 Martin Rudalics <[email protected]>
+
+ * window.el (switch-to-buffer): Call pop-to-buffer with normalized
+ buffer argument (Bug#9083) and self-identifying label argument.
+
+2011-07-15 Glenn Morris <[email protected]>
+
+ * emacs-lisp/debug.el (debug): Doc fix. (Bug#8273)
+
2011-07-14 Lars Magne Ingebrigtsen <[email protected]>
* man.el (Man-fontify-manpage): Fix message when formatting the
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 666c6a8b03..872b2172c7 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."
(defun doc-view-make-safe-dir (dir)
(condition-case nil
(let ((umask (default-file-modes)))
- (unwind-protect
- (progn
- ;; Create temp files with strict access rights. It's easy to
- ;; loosen them later, whereas it's impossible to close the
- ;; time-window of loose permissions otherwise.
- (set-default-file-modes #o0700)
- (make-directory dir))
- ;; Reset the umask.
- (set-default-file-modes umask)))
+ (unwind-protect
+ (progn
+ ;; Create temp files with strict access rights. It's easy to
+ ;; loosen them later, whereas it's impossible to close the
+ ;; time-window of loose permissions otherwise.
+ (set-default-file-modes #o0700)
+ (make-directory dir))
+ ;; Reset the umask.
+ (set-default-file-modes umask)))
(file-already-exists
- (if (file-symlink-p dir)
- (error "Danger: %s points to a symbolic link" dir))
+ (when (file-symlink-p dir)
+ (error "Danger: %s points to a symbolic link" dir))
;; In case it was created earlier with looser rights.
;; We could check the mode info returned by file-attributes, but it's
;; 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."
;; This also ends up checking a bunch of useful conditions: it makes
;; sure we have write-access to the directory and that we own it, thus
;; closing a bunch of security holes.
- (set-file-modes dir #o0700))))
+ (condition-case error
+ (set-file-modes dir #o0700)
+ (file-error
+ (error
+ (format "Unable to use temporary directory %s: %s"
+ dir (mapconcat 'identity (cdr error) " "))))))))
(defun doc-view-current-cache-dir ()
"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 48c7386bd4..f0c72a0b26 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -282,7 +282,7 @@ Not documented
;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist
;;;;;; do* do loop return-from return block etypecase typecase ecase
;;;;;; case load-time-value eval-when destructuring-bind function*
-;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "9f551dc739a39b3c8b420fbd1ab71879")
+;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "2261724608e3223036b863d214f7dc0c")
;;; Generated autoloads from cl-macs.el
(autoload 'gensym "cl-macs" "\
@@ -541,7 +541,13 @@ values. For compatibility, (values A B C) is a synonym for (list A B C).
\(fn TYPE FORM)" nil (quote macro))
(autoload 'declare "cl-macs" "\
+Declare SPECS about the current function while compiling.
+For instance
+ (declare (warn 0))
+
+will turn off byte-compile warnings in the function.
+See Info node `(cl)Declarations' for details.
\(fn &rest SPECS)" nil (quote macro))
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 2813cc4f06..d6b4643d6a 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).
;;;###autoload
(defmacro declare (&rest specs)
+ "Declare SPECS about the current function while compiling.
+For instance
+
+ \(declare (warn 0))
+
+will turn off byte-compile warnings in the function.
+See Info node `(cl)Declarations' for details."
(if (cl-compiling-file)
(while specs
(if (listp cl-declare-stack) (push (car specs) cl-declare-stack))
@@ -2389,8 +2396,10 @@ value, that slot cannot be set via `setf'.
(push (cons accessor t) side-eff)
(push (list 'define-setf-method accessor '(cl-x)
(if (cadr (memq :read-only (cddr desc)))
- (list 'error (format "%s is a read-only slot"
- accessor))
+ (list 'progn '(ignore cl-x)
+ (list 'error
+ (format "%s is a read-only slot"
+ 'accessor)))
;; If cl is loaded only for compilation,
;; the call to cl-struct-setf-expander would
;; cause a warning because it may not be
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index 2fa339e62f..157749500e 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.")
(setq debugger 'debug)
;;;###autoload
(defun debug (&rest debugger-args)
- "Enter debugger. To return, type \\<debugger-mode-map>`\\[debugger-continue]'.
+ "Enter debugger. \\<debugger-mode-map>`\\[debugger-continue]' returns from the debugger.
Arguments are mainly for use when this is called from the internals
of the evaluator.
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el
index 200b3a6389..c65cbc39ea 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.")
(cons beg end))
(defvar syntax-propertize--done -1
- "Position upto which syntax-table properties have been set.")
+ "Position up to which syntax-table properties have been set.")
(make-variable-buffer-local 'syntax-propertize--done)
(defun syntax-propertize--shift-groups (re n)
@@ -283,7 +283,7 @@ The return value is a function suitable for `syntax-propertize-function'."
(setq keywords font-lock-syntactic-keywords))))))
(defun syntax-propertize (pos)
- "Ensure that syntax-table properties are set upto POS."
+ "Ensure that syntax-table properties are set until POS."
(when (and syntax-propertize-function
(< syntax-propertize--done pos))
;; (message "Needs to syntax-propertize from %s to %s"
diff --git a/lisp/files.el b/lisp/files.el
index 0b253fcc29..6b8a352f20 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -151,6 +151,7 @@ Automatically local in all buffers."
:type 'boolean
:group 'backup)
(make-variable-buffer-local 'buffer-offer-save)
+(put 'buffer-offer-save 'permanent-local t)
(defcustom find-file-existing-other-name t
"Non-nil means find a file under alternative names, in existing buffers.
diff --git a/lisp/frame.el b/lisp/frame.el
index d6f8275034..8fea4f0514 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -747,12 +747,15 @@ the user during startup."
(declare-function x-focus-frame "xfns.c" (frame))
-(defun select-frame-set-input-focus (frame)
+(defun select-frame-set-input-focus (frame &optional norecord)
"Select FRAME, raise it, and set input focus, if possible.
If `mouse-autoselect-window' is non-nil, also move mouse pointer
to FRAME's selected window. Otherwise, if `focus-follows-mouse'
-is non-nil, move mouse cursor to FRAME."
- (select-frame frame)
+is non-nil, move mouse cursor to FRAME.
+
+Optional argument NORECORD means to neither change the order of
+recently selected windows nor the buffer list."
+ (select-frame frame norecord)
(raise-frame frame)
;; Ensure, if possible, that FRAME gets input focus.
(when (memq (window-system frame) '(x w32 ns))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 7c887dc545..32f5b702c6 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,18 @@
+2011-07-16 Lars Magne Ingebrigtsen <[email protected]>
+
+ * message.el (message-auto-save-directory): If the ~/Mail directory
+ doesn't exist, use ~ as the auto-save directory (bug#4432).
+
+ * gnus-group.el (gnus-group-read-ephemeral-group): Start Gnus if it
+ hasn't already been started.
+
+2011-07-15 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.el (debbugs-gnu): Renamed from debbugs-emacs.
+
+ * message.el (message-reply): Work around mysterious bug where
+ `message-mode' seems to overwrite the locally bound `subject' variable.
+
2011-07-14 Andrew Cohen <[email protected]>
* nnimap.el (nnimap-request-thread): Ensure search is performed in
@@ -5,7 +20,7 @@
* gnus-int.el (gnus-request-thread): Add group argument.
- * gnus-sum.el (gnus-request-thread): Use it.
+ * gnus-sum.el (gnus-summary-refer-thread): Use it.
2011-07-10 Lars Magne Ingebrigtsen <[email protected]>
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 2ea2a5c9bc..b4dca3e1fc 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."
(gnus-group-completing-read)
(gnus-read-method "From method")))
;; Transform the select method into a unique server.
+ (unless (gnus-alive-p)
+ (gnus-no-server))
(when (stringp method)
(setq method (gnus-server-to-method method)))
(setq method
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index ac7db0e1d6..b66d5f2247 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."
(gnus-1 arg dont-connect slave)
(gnus-final-warning)))
-(autoload 'debbugs-emacs "debbugs-gnu")
+(autoload 'debbugs-gnu "debbugs-gnu")
(defun gnus-list-debbugs ()
"List all open Gnus bug reports."
(interactive)
- (debbugs-emacs '("important" "normal" "minor" "wishlist")
- "gnus"))
+ (debbugs-gnu nil "gnus"))
;; Allow redefinition of Gnus functions.
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 7d7cc01225..ff013e5b29 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.
:type '(repeat function))
(defcustom message-auto-save-directory
- (file-name-as-directory (expand-file-name "drafts" message-directory))
+ (if (file-exists-p message-directory)
+ (file-name-as-directory (expand-file-name "drafts" message-directory))
+ "~/")
"*Directory where Message auto-saves buffers if Gnus isn't running.
If nil, Message won't auto-save."
:group 'message-buffers
@@ -6878,20 +6880,19 @@ Useful functions to put in this list include:
(unless follow-to
(setq follow-to (message-get-reply-headers wide to-address))))
- (unless (message-mail-user-agent)
- (message-pop-to-buffer
- (message-buffer-name
- (if wide "wide reply" "reply") from
- (if wide to-address nil))
- switch-function))
-
- (setq message-reply-headers
- (vector 0 subject from date message-id references 0 0 ""))
-
- (message-setup
- `((Subject . ,subject)
- ,@follow-to)
- cur)))
+ (let ((headers
+ `((Subject . ,subject)
+ ,@follow-to)))
+ (unless (message-mail-user-agent)
+ (message-pop-to-buffer
+ (message-buffer-name
+ (if wide "wide reply" "reply") from
+ (if wide to-address nil))
+ switch-function))
+ (setq message-reply-headers
+ (vector 0 (cdr (assq 'Subject headers))
+ from date message-id references 0 0 ""))
+ (message-setup headers cur))))
;;;###autoload
(defun message-wide-reply (&optional to-address)
diff --git a/lisp/info.el b/lisp/info.el
index cbdc8cc7ab..a4826ee8c2 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -32,7 +32,7 @@
;;; Code:
-(eval-when-compile (require 'jka-compr) (require 'cl))
+(eval-when-compile (require 'cl))
(defgroup info nil
"Info subsystem."
@@ -2789,6 +2789,11 @@ N is the digit argument used to invoke this command."
(goto-char (point-max)))))
(t (error "No previous nodes"))))
+(defun Info-beginning-of-buffer ()
+ "Go to the beginnning of the buffer."
+ (interactive)
+ (goto-char (point-min)))
+
(defun Info-scroll-up ()
"Scroll one screenful forward in Info, considering all nodes as one sequence.
Once 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'."
(defvar Info-mode-map
(let ((map (make-keymap)))
(suppress-keymap map)
- (define-key map "." 'beginning-of-buffer)
+ (define-key map "." 'Info-beginning-of-buffer)
(define-key map " " 'Info-scroll-up)
(define-key map "\C-m" 'Info-follow-nearest-node)
(define-key map "\t" 'Info-next-reference)
@@ -3671,7 +3676,8 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
(define-key map "[" 'Info-backward-node)
(define-key map "<" 'Info-top-node)
(define-key map ">" 'Info-final-node)
- (define-key map "b" 'beginning-of-buffer)
+ (define-key map "b" 'Info-beginning-of-buffer)
+ (put 'Info-beginning-of-buffer :advertised-binding "b")
(define-key map "d" 'Info-directory)
(define-key map "e" 'Info-edit)
(define-key map "f" 'Info-follow-reference)
@@ -3725,7 +3731,7 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
:help "Go backward one node, considering all as a sequence"]
["Forward" Info-forward-node
:help "Go forward one node, considering all as a sequence"]
- ["Beginning" beginning-of-buffer
+ ["Beginning" Info-beginning-of-buffer
:help "Go to beginning of this node"]
["Top" Info-top-node
:help "Go to top node of file"]
@@ -3931,7 +3937,7 @@ Moving within a node:
\\[Info-scroll-down] Normally, scroll backward. If the beginning of the buffer is
already visible, try to go to the previous menu entry, or up
if there is none.
-\\[beginning-of-buffer] Go to beginning of node.
+\\[Info-beginning-of-buffer] Go to beginning of node.
Advanced commands:
\\[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 6a73aaaa83..128fb86b7b 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."
(or (not (eq last-command-event 'Default))
(setq last-command-event 'English))
(setq language-name (symbol-name last-command-event))))
- (error "Bogus calling sequence"))
+ (error "This command should only be called from the menu bar"))
(describe-language-environment language-name)))
(defun describe-language-environment (language-name)
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 50e7b331c8..1942641fae 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -549,7 +549,8 @@ Each set is a vector of the form:
(defvar isearch-error nil) ; Error message for failed search.
(defvar isearch-other-end nil) ; Start (end) of match if forward (backward).
(defvar isearch-wrapped nil) ; Searching restarted from the top (bottom).
-(defvar isearch-barrier 0)
+(defvar isearch-barrier 0
+ "Recorded minimum/maximal point for the current search.")
(defvar isearch-just-started nil)
(defvar isearch-start-hscroll 0) ; hscroll when starting the search.
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index e1cf2a661e..d28fde0b21 100644
--- a/lisp/jka-cmpr-hook.el
+++ b/lisp/jka-cmpr-hook.el
@@ -39,6 +39,12 @@
"jka-compr customization."
:group 'compression)
+(defcustom jka-compr-verbose t
+ "If non-nil, output messages whenever compressing or uncompressing files."
+ :version "24.1"
+ :type 'boolean
+ :group 'jka-compr)
+
;; List of all the elements we actually added to file-coding-system-alist.
(defvar jka-compr-added-to-file-coding-system-alist nil)
diff --git a/lisp/jka-compr.el b/lisp/jka-compr.el
index 1893e982bb..cd769885cc 100644
--- a/lisp/jka-compr.el
+++ b/lisp/jka-compr.el
@@ -97,11 +97,6 @@ NOTE: Not used in MS-DOS and Windows systems."
:type 'string
:group 'jka-compr)
-(defcustom jka-compr-verbose t
- "If non-nil, output messages whenever compressing or uncompressing files."
- :type 'boolean
- :group 'jka-compr)
-
(defvar jka-compr-use-shell
(not (memq system-type '(ms-dos windows-nt))))
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index df4edcc75e..431c15b234 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,9 @@
+2011-07-16 Bill Wohler <[email protected]>
+
+ Release MH-E version 8.2.92.
+
+ * mh-e.el (Version, mh-version): Update for release 8.2.92.
+
2011-07-12 Bill Wohler <[email protected]>
Release MH-E version 8.2.91.
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 51b41e854b..1e7b07eb6d 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -5,7 +5,7 @@
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
-;; Version: 8.2.91
+;; Version: 8.2.92
;; Keywords: mail
;; This file is part of GNU Emacs.
@@ -127,7 +127,7 @@
;; Try to keep variables local to a single file. Provide accessors if
;; variables are shared. Use this section as a last resort.
-(defconst mh-version "8.2.91" "Version number of MH-E.")
+(defconst mh-version "8.2.92" "Version number of MH-E.")
;; Variants
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el
index 67d7b2d20d..9cb071b185 100644
--- a/lisp/net/gnutls.el
+++ b/lisp/net/gnutls.el
@@ -42,9 +42,24 @@
:prefix "gnutls-"
:group 'net-utils)
-(defcustom gnutls-log-level 0
- "Logging level to be used by `starttls-negotiate' and GnuTLS."
- :type 'integer
+(defcustom gnutls-algorithm-priority nil
+ "If non-nil, this should be a TLS priority string.
+For instance, if you want to skip the \"dhe-rsa\" algorithm,
+set this variable to \"normal:-dhe-rsa\"."
+ :type '(choice (const nil)
+ string))
+
+;;;###autoload
+(defcustom gnutls-min-prime-bits nil
+ "The minimum number of bits to be used in Diffie-Hellman key exchange.
+
+This sets the minimum accepted size of the key to be used in a
+client-server handshake. If the server sends a prime with fewer than
+the specified number of bits the handshake will fail.
+
+A value of nil says to use the default gnutls value."
+ :type '(choice (const :tag "Use default value" nil)
+ (integer :tag "Number of bits" 512))
:group 'gnutls)
(defun open-gnutls-stream (name buffer host service)
@@ -90,8 +105,8 @@ trust and key files, and priority string."
(defun* gnutls-negotiate
(&rest spec
&key process type hostname priority-string
- trustfiles crlfiles keylist verify-flags
- verify-error verify-hostname-error
+ trustfiles crlfiles keylist min-prime-bits
+ verify-flags verify-error verify-hostname-error
&allow-other-keys)
"Negotiate a SSL/TLS connection. Returns proc. Signals gnutls-error.
@@ -104,6 +119,9 @@ PRIORITY-STRING is as per the GnuTLS docs, default is \"NORMAL\".
TRUSTFILES is a list of CA bundles.
CRLFILES is a list of CRL files.
KEYLIST is an alist of (client key file, client cert file) pairs.
+MIN-PRIME-BITS is the minimum acceptable size of Diffie-Hellman keys
+\(see `gnutls-min-prime-bits' for more information). Use nil for the
+default.
When VERIFY-HOSTNAME-ERROR is not nil, an error will be raised
when the hostname does not match the presented certificate's host
@@ -145,10 +163,14 @@ defaults to GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT."
((eq type 'gnutls-anon)
"NORMAL:+ANON-DH:!ARCFOUR-128")
((eq type 'gnutls-x509pki)
- "NORMAL"))))
+ (if gnutls-algorithm-priority
+ (upcase gnutls-algorithm-priority)
+ "NORMAL")))))
+ (min-prime-bits (or min-prime-bits gnutls-min-prime-bits))
(params `(:priority ,priority-string
:hostname ,hostname
:loglevel ,gnutls-log-level
+ :min-prime-bits ,min-prime-bits
:trustfiles ,trustfiles
:crlfiles ,crlfiles
:keylist ,keylist
diff --git a/lisp/simple.el b/lisp/simple.el
index 6433340292..7fd7e20b49 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."
(defun current-kill (n &optional do-not-move)
"Rotate the yanking point by N places, and then return that kill.
-If N is zero, `interprogram-paste-function' is set, and calling
-it returns a string or list of strings, then that string (or
-list) is added to the front of the kill ring and the string (or
-first string in the list) is returned as the latest kill.
+If N is zero and `interprogram-paste-function' is set to a
+function that returns a string or a list of strings, and if that
+function doesn't return nil, then that string (or list) is added
+to the front of the kill ring and the string (or first string in
+the list) is returned as the latest kill.
If N is not zero, and if `yank-pop-change-selection' is
non-nil, use `interprogram-cut-function' to transfer the
@@ -5236,14 +5237,16 @@ Some major modes set this.")
;; auto-fill-function to nil in a file-local setting is safe and
;; can be useful to prevent auto-filling.
(put 'auto-fill-function 'safe-local-variable 'null)
-;; FIXME: turn into a proper minor mode.
-;; Add a global minor mode version of it.
+
(define-minor-mode auto-fill-mode
"Toggle Auto Fill mode.
With ARG, turn Auto Fill mode on if and only if ARG is positive.
In Auto Fill mode, inserting a space at a column beyond `current-fill-column'
automatically breaks the line at a previous space.
+When `auto-fill-mode' is on, the `auto-fill-function' variable is
+non-`nil'.
+
The value of `normal-auto-fill-function' specifies the function to use
for `auto-fill-function' when turning Auto Fill mode on."
:variable (eq auto-fill-function normal-auto-fill-function))
diff --git a/lisp/subr.el b/lisp/subr.el
index 94b28c007d..ef19797012 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2145,23 +2145,34 @@ If optional argument INHIBIT-KEYBOARD-QUIT is non-nil, ignore
keyboard-quit events while waiting for a valid input."
(unless (consp chars)
(error "Called `read-char-choice' without valid char choices"))
- (let (char done)
+ (let (char done show-help (helpbuf " *Char Help*"))
(let ((cursor-in-echo-area t)
(executing-kbd-macro executing-kbd-macro))
- (while (not done)
- (unless (get-text-property 0 'face prompt)
- (setq prompt (propertize prompt 'face 'minibuffer-prompt)))
- (setq char (let ((inhibit-quit inhibit-keyboard-quit))
- (read-key prompt)))
- (cond
- ((not (numberp char)))
- ((memq char chars)
- (setq done t))
- ((and executing-kbd-macro (= char -1))
- ;; read-event returns -1 if we are in a kbd macro and
- ;; there are no more events in the macro. Attempt to
- ;; get an event interactively.
- (setq executing-kbd-macro nil)))))
+ (save-window-excursion ; in case we call help-form-show
+ (while (not done)
+ (unless (get-text-property 0 'face prompt)
+ (setq prompt (propertize prompt 'face 'minibuffer-prompt)))
+ (setq char (let ((inhibit-quit inhibit-keyboard-quit))
+ (read-key prompt)))
+ (and show-help (buffer-live-p helpbuf)
+ (kill-buffer helpbuf))
+ (cond
+ ((not (numberp char)))
+ ;; If caller has set help-form, that's enough.
+ ;; They don't explicitly have to add help-char to chars.
+ ((and help-form
+ (eq char help-char)
+ (setq show-help t)
+ (help-form-show)))
+ ((memq char chars)
+ (setq done t))
+ ((and executing-kbd-macro (= char -1))
+ ;; read-event returns -1 if we are in a kbd macro and
+ ;; there are no more events in the macro. Attempt to
+ ;; get an event interactively.
+ (setq executing-kbd-macro nil))
+ ((and (not inhibit-keyboard-quit) (eq char ?\C-g))
+ (keyboard-quit))))))
;; Display the question with the answer. But without cursor-in-echo-area.
(message "%s%s" prompt (char-to-string char))
char))
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el
index b264cc3085..52f6e5b488 100644
--- a/lisp/textmodes/fill.el
+++ b/lisp/textmodes/fill.el
@@ -93,7 +93,7 @@ reinserts the fill prefix in each resulting line."
;; Added `!' for doxygen comments starting with `//!' or `/*!'.
;; Added `%' for TeX comments.
;; RMS: deleted the code to match `1.' and `(1)'.
- (purecopy "[ \t]*\\([-!|#%;>*·•‣⁃◦]+[ \t]*\\)*")
+ (purecopy "[ \t]*\\([-–!|#%;>*·•‣⁃◦]+[ \t]*\\)*")
"Regexp to match text at start of line that constitutes indentation.
If Adaptive Fill mode is enabled, a prefix matching this pattern
on the first and second lines of a paragraph is used as the
diff --git a/lisp/window.el b/lisp/window.el
index 0302a67252..b4b900287e 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -3272,7 +3272,7 @@ window."
(defun split-window-side-by-side (&optional size)
"Split selected window into two windows side by side.
The selected window becomes the left one and gets SIZE columns.
-SIZE negative means the right window gets -SIZE lines.
+SIZE negative means the right window gets -SIZE columns.
SIZE includes the width of the window's scroll bar; if there are
no scroll bars, it includes the width of the divider column to
@@ -5836,15 +5836,13 @@ additional information."
new-window new-frame)
(set-buffer buffer)
(setq new-window (display-buffer buffer specifiers label))
- (unless (eq new-window old-window)
- ;; `display-buffer' has chosen another window, select it.
- (select-window new-window norecord)
- (setq new-frame (window-frame new-window))
- (unless (eq new-frame old-frame)
- ;; `display-buffer' has chosen another frame, make sure it gets
- ;; input focus and is risen.
- (select-frame-set-input-focus new-frame)))
-
+ (setq new-frame (window-frame new-window))
+ (if (eq old-frame new-frame)
+ ;; Make sure new-window gets selected (Bug#8615), (Bug#6954).
+ (select-window new-window norecord)
+ ;; `display-buffer' has chosen another frame, make sure it gets
+ ;; input focus and is risen.
+ (select-frame-set-input-focus new-frame norecord))
buffer))
(defsubst pop-to-buffer-same-window (&optional buffer-or-name norecord label)
@@ -5953,13 +5951,13 @@ Return the buffer switched to."
(list (read-buffer-to-switch "Switch to buffer: ") nil nil))
(let ((buffer (window-normalize-buffer-to-switch-to buffer-or-name)))
(if (null force-same-window)
- (pop-to-buffer buffer-or-name
- '(same-window (reuse-window-dedicated . weak))
- norecord nil)
+ (pop-to-buffer
+ buffer '(same-window (reuse-window-dedicated . weak))
+ norecord 'switch-to-buffer)
(cond
;; Don't call set-window-buffer if it's not needed since it
;; might signal an error (e.g. if the window is dedicated).
- ((eq buffer (window-buffer)) nil)
+ ((eq buffer (window-buffer)))
((window-minibuffer-p)
(error "Cannot switch buffers in minibuffer window"))
((eq (window-dedicated-p) t)
diff --git a/src/ChangeLog b/src/ChangeLog
index 493b3277f5..b3d9eca469 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,4 +1,4 @@
-2011-07-14 Paul Eggert <[email protected]>
+2011-07-17 Paul Eggert <[email protected]>
Integer signedness and overflow and related fixes. (Bug#9079)
@@ -197,6 +197,47 @@
Use EMACS_INT, not EMACS_UINT, for sizes. The code works equally
well either way, and we prefer signed to unsigned.
+2011-07-16 Juanma Barranquero <[email protected]>
+
+ * makefile.w32-in (GLOBAL_SOURCES): Add gnutls.c (followup to bug#9059).
+
+2011-07-16 Paul Eggert <[email protected]>
+
+ * fileio.c (Fcopy_file): Don't diagnose fchown failures. (Bug#9002)
+
+2011-07-16 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnutls.c (syms_of_gnutls): Define `gnutls-log-level' here, since
+ it's used from the C level.
+
+ * process.c: Use the same condition for POLL_FOR_INPUT in both
+ keyboard.c and process.c (bug#1858).
+
+2011-07-09 Lawrence Mitchell <[email protected]>
+
+ * gnutls.c (Qgnutls_bootprop_min_prime_bits): New variable.
+ (Fgnutls_boot): Use it.
+
+2011-07-15 Andreas Schwab <[email protected]>
+
+ * doc.c (Fsubstitute_command_keys): Revert last change.
+
+2011-07-15 Lars Magne Ingebrigtsen <[email protected]>
+
+ * doc.c (Fsubstitute_command_keys): Clarify that \= really only
+ quotes the next character, and doesn't affect other longer
+ sequences (bug#8935).
+
+ * lread.c (syms_of_lread): Clarify that is isn't only
+ `eval-buffer' and `eval-defun' that's affected by
+ `lexical-binding' (bug#8460).
+
+2011-07-15 Eli Zaretskii <[email protected]>
+
+ * xdisp.c (move_it_in_display_line_to): Fix vertical motion with
+ bidi redisplay when a line includes both an image and is
+ truncated.
+
2011-07-14 Paul Eggert <[email protected]>
Fix minor problems found by static checking.
@@ -211,9 +252,6 @@
2011-07-14 Lars Magne Ingebrigtsen <[email protected]>
- * data.c (Fcdr, Fcar): Revert the last change, since it didn't
- really clarify much.
-
* search.c (Fre_search_backward): Mention `case-fold-search' in
all the re_search_* functions (bug#8138).
diff --git a/src/fileio.c b/src/fileio.c
index d4fb038311..c67bea79bd 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. */)
owner and group. */
if (input_file_statable_p)
{
- if (!NILP (preserve_uid_gid) && fchown (ofd, st.st_uid, st.st_gid) != 0)
- report_file_error ("Doing chown", Fcons (newname, Qnil));
+ if (!NILP (preserve_uid_gid))
+ fchown (ofd, st.st_uid, st.st_gid);
if (fchmod (ofd, st.st_mode & 07777) != 0)
report_file_error ("Doing chmod", Fcons (newname, Qnil));
}
diff --git a/src/gnutls.c b/src/gnutls.c
index 3761951b86..52e80a69ae 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -35,7 +35,6 @@ static int
emacs_gnutls_handle_error (gnutls_session_t, int err);
static Lisp_Object Qgnutls_dll;
-static Lisp_Object Qgnutls_log_level;
static Lisp_Object Qgnutls_code;
static Lisp_Object Qgnutls_anon, Qgnutls_x509pki;
static Lisp_Object Qgnutls_e_interrupted, Qgnutls_e_again,
@@ -50,6 +49,7 @@ static Lisp_Object Qgnutls_bootprop_crlfiles;
static Lisp_Object Qgnutls_bootprop_callbacks;
static Lisp_Object Qgnutls_bootprop_loglevel;
static Lisp_Object Qgnutls_bootprop_hostname;
+static Lisp_Object Qgnutls_bootprop_min_prime_bits;
static Lisp_Object Qgnutls_bootprop_verify_flags;
static Lisp_Object Qgnutls_bootprop_verify_hostname_error;
@@ -105,6 +105,8 @@ DEF_GNUTLS_FN (int, gnutls_certificate_verify_peers2,
DEF_GNUTLS_FN (int, gnutls_credentials_set,
(gnutls_session_t, gnutls_credentials_type_t, void *));
DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t));
+DEF_GNUTLS_FN (void, gnutls_dh_set_prime_bits,
+ (gnutls_session_t, unsigned int));
DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int));
DEF_GNUTLS_FN (int, gnutls_global_init, (void));
DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func));
@@ -143,7 +145,6 @@ static int
init_gnutls_functions (Lisp_Object libraries)
{
HMODULE library;
- Lisp_Object gnutls_log_level = Fsymbol_value (Qgnutls_log_level);
int max_log_level = 1;
if (!(library = w32_delayed_load (libraries, Qgnutls_dll)))
@@ -169,6 +170,7 @@ init_gnutls_functions (Lisp_Object libraries)
LOAD_GNUTLS_FN (library, gnutls_certificate_verify_peers2);
LOAD_GNUTLS_FN (library, gnutls_credentials_set);
LOAD_GNUTLS_FN (library, gnutls_deinit);
+ LOAD_GNUTLS_FN (library, gnutls_dh_set_prime_bits);
LOAD_GNUTLS_FN (library, gnutls_error_is_fatal);
LOAD_GNUTLS_FN (library, gnutls_global_init);
LOAD_GNUTLS_FN (library, gnutls_global_set_log_function);
@@ -191,8 +193,8 @@ init_gnutls_functions (Lisp_Object libraries)
LOAD_GNUTLS_FN (library, gnutls_x509_crt_import);
LOAD_GNUTLS_FN (library, gnutls_x509_crt_init);
- if (NUMBERP (gnutls_log_level))
- max_log_level = XINT (gnutls_log_level);
+ if (NUMBERP (Vgnutls_log_level))
+ max_log_level = XINT (Vgnutls_log_level);
GNUTLS_LOG2 (1, max_log_level, "GnuTLS library loaded:",
SDATA (Fget (Qgnutls_dll, QCloaded_from)));
@@ -218,6 +220,7 @@ init_gnutls_functions (Lisp_Object libraries)
#define fn_gnutls_certificate_verify_peers2 gnutls_certificate_verify_peers2
#define fn_gnutls_credentials_set gnutls_credentials_set
#define fn_gnutls_deinit gnutls_deinit
+#define fn_gnutls_dh_set_prime_bits gnutls_dh_set_prime_bits
#define fn_gnutls_error_is_fatal gnutls_error_is_fatal
#define fn_gnutls_global_init gnutls_global_init
#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)
static int
emacs_gnutls_handle_error (gnutls_session_t session, int err)
{
- Lisp_Object gnutls_log_level = Fsymbol_value (Qgnutls_log_level);
int max_log_level = 0;
int ret;
@@ -404,8 +406,8 @@ emacs_gnutls_handle_error (gnutls_session_t session, int err)
if (err >= 0)
return 0;
- if (NUMBERP (gnutls_log_level))
- max_log_level = XINT (gnutls_log_level);
+ if (NUMBERP (Vgnutls_log_level))
+ max_log_level = XINT (Vgnutls_log_level);
/* TODO: use gnutls-error-fatalp and gnutls-error-string. */
@@ -646,6 +648,9 @@ gnutls_certificate_set_verify_flags.
:verify-hostname-error, if non-nil, makes a hostname mismatch an
error. Otherwise it will be just a warning.
+:min-prime-bits is the minimum accepted number of bits the client will
+accept in Diffie-Hellman key exchange.
+
The debug level will be set for this process AND globally for GnuTLS.
So if you set it higher or lower at any point, it affects global
debugging.
@@ -698,6 +703,7 @@ one trustfile (usually a CA bundle). */)
Lisp_Object verify_flags;
/* Lisp_Object verify_error; */
Lisp_Object verify_hostname_error;
+ Lisp_Object prime_bits;
CHECK_PROCESS (proc);
CHECK_SYMBOL (type);
@@ -719,6 +725,7 @@ one trustfile (usually a CA bundle). */)
verify_flags = Fplist_get (proplist, Qgnutls_bootprop_verify_flags);
/* verify_error = Fplist_get (proplist, Qgnutls_bootprop_verify_error); */
verify_hostname_error = Fplist_get (proplist, Qgnutls_bootprop_verify_hostname_error);
+ prime_bits = Fplist_get (proplist, Qgnutls_bootprop_min_prime_bits);
if (!STRINGP (hostname))
error ("gnutls-boot: invalid :hostname parameter");
@@ -936,6 +943,11 @@ one trustfile (usually a CA bundle). */)
GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_PRIORITY;
+ if (!EQ (prime_bits, Qnil))
+ {
+ fn_gnutls_dh_set_prime_bits (state, XUINT (prime_bits));
+ }
+
if (EQ (type, Qgnutls_x509pki))
{
ret = fn_gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred);
@@ -1103,7 +1115,6 @@ syms_of_gnutls (void)
gnutls_global_initialized = 0;
DEFSYM (Qgnutls_dll, "gnutls");
- DEFSYM (Qgnutls_log_level, "gnutls-log-level");
DEFSYM (Qgnutls_code, "gnutls-code");
DEFSYM (Qgnutls_anon, "gnutls-anon");
DEFSYM (Qgnutls_x509pki, "gnutls-x509pki");
@@ -1114,6 +1125,7 @@ syms_of_gnutls (void)
DEFSYM (Qgnutls_bootprop_crlfiles, ":crlfiles");
DEFSYM (Qgnutls_bootprop_callbacks, ":callbacks");
DEFSYM (Qgnutls_bootprop_callbacks_verify, "verify");
+ DEFSYM (Qgnutls_bootprop_min_prime_bits, ":min-prime-bits");
DEFSYM (Qgnutls_bootprop_loglevel, ":loglevel");
DEFSYM (Qgnutls_bootprop_verify_flags, ":verify-flags");
DEFSYM (Qgnutls_bootprop_verify_hostname_error, ":verify-hostname-error");
@@ -1142,6 +1154,10 @@ syms_of_gnutls (void)
defsubr (&Sgnutls_deinit);
defsubr (&Sgnutls_bye);
defsubr (&Sgnutls_available_p);
+
+ DEFVAR_INT ("gnutls-log-level", Vgnutls_log_level,
+ doc: /* Logging level used by the GnuTLS functions. */);
+ Vgnutls_log_level = make_number (0);
}
#endif /* HAVE_GNUTLS */
diff --git a/src/lread.c b/src/lread.c
index bef1cc8e59..c80ac43067 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4491,9 +4491,11 @@ to load. See also `load-dangerous-libraries'. */);
staticpro (&Qlexical_binding);
DEFVAR_LISP ("lexical-binding", Vlexical_binding,
doc: /* If non-nil, use lexical binding when evaluating code.
-This only applies to code evaluated by `eval-buffer' and `eval-region'.
-This variable is automatically set from the file variables of an interpreted
- Lisp file read using `load'. */);
+This applies to code evaluated by `eval-buffer' and `eval-region' and
+other commands that call these functions, like `eval-defun' and
+the like.
+This variable is automatically set from the file variables of an
+interpreted Lisp file read using `load'. */);
Fmake_variable_buffer_local (Qlexical_binding);
DEFVAR_LISP ("eval-buffer-list", Veval_buffer_list,
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index 88b5355492..fd29dec909 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -221,7 +221,8 @@ GLOBAL_SOURCES = dosfns.c msdos.c \
syntax.c bytecode.c \
process.c callproc.c unexw32.c \
region-cache.c sound.c atimer.c \
- doprnt.c intervals.c textprop.c composite.c
+ doprnt.c intervals.c textprop.c composite.c \
+ gnutls.c
SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o dbusbind.o
obj = $(GLOBAL_SOURCES:.c=.o)
diff --git a/src/process.c b/src/process.c
index 1a884357b8..236c27e5c3 100644
--- a/src/process.c
+++ b/src/process.c
@@ -245,7 +245,7 @@ static void create_pty (Lisp_Object);
/* If we support a window system, turn on the code to poll periodically
to detect C-g. It isn't actually used when doing interrupt input. */
-#ifdef HAVE_WINDOW_SYSTEM
+#if defined(HAVE_WINDOW_SYSTEM) && !defined(USE_ASYNC_EVENTS)
#define POLL_FOR_INPUT
#endif
diff --git a/src/xdisp.c b/src/xdisp.c
index 5285d94597..0352867941 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -7928,7 +7928,14 @@ move_it_in_display_line_to (struct it *it,
|| IT_OVERFLOW_NEWLINE_INTO_FRINGE (it))
{
if (!get_next_display_element (it)
- || BUFFER_POS_REACHED_P ())
+ || BUFFER_POS_REACHED_P ()
+ /* If we are past TO_CHARPOS, but never saw any
+ character positions smaller than TO_CHARPOS,
+ return MOVE_POS_MATCH_OR_ZV, like the
+ unidirectional display did. */
+ || ((op & MOVE_TO_POS) != 0
+ && !saw_smaller_pos
+ && IT_CHARPOS (*it) > to_charpos))
{
result = MOVE_POS_MATCH_OR_ZV;
break;
@@ -7939,6 +7946,13 @@ move_it_in_display_line_to (struct it *it,
break;
}
}
+ else if ((op & MOVE_TO_POS) != 0
+ && !saw_smaller_pos
+ && IT_CHARPOS (*it) > to_charpos)
+ {
+ result = MOVE_POS_MATCH_OR_ZV;
+ break;
+ }
result = MOVE_LINE_TRUNCATED;
break;
}