diff options
author | Paul Eggert <[email protected]> | 2011-07-16 17:37:57 -0700 |
---|---|---|
committer | Paul Eggert <[email protected]> | 2011-07-16 17:37:57 -0700 |
commit | 4f8a4547454e24304b4182fbf4ae4b34a7bdc92b (patch) | |
tree | d03d6d6cdd4b10a62633ed5f9da42d60dac016d0 | |
parent | f0eb61e99dce9005dc94c909046f6130b3d4a97c (diff) | |
parent | 64a465b2d97d00f27ed74513047ced07b798b9fd (diff) |
Merge from trunk.
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 @@ -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; } |