diff options
| author | Paul Eggert | 2011-07-16 17:37:57 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-07-16 17:37:57 -0700 |
| commit | 4f8a4547454e24304b4182fbf4ae4b34a7bdc92b (patch) | |
| tree | d03d6d6cdd4b10a62633ed5f9da42d60dac016d0 | |
| parent | f0eb61e99dce9005dc94c909046f6130b3d4a97c (diff) | |
| parent | 64a465b2d97d00f27ed74513047ced07b798b9fd (diff) | |
| download | emacs-4f8a4547454e24304b4182fbf4ae4b34a7bdc92b.tar.gz emacs-4f8a4547454e24304b4182fbf4ae4b34a7bdc92b.zip | |
Merge from trunk.
43 files changed, 465 insertions, 129 deletions
diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker index 04721e4cec3..dd1ea46ceb2 100644 --- a/admin/notes/bugtracker +++ b/admin/notes/bugtracker | |||
| @@ -632,3 +632,11 @@ mytest my.email.address | |||
| 632 | 632 | ||
| 633 | Then if you do all your testing with 'Package: mytest', the resulting | 633 | Then if you do all your testing with 'Package: mytest', the resulting |
| 634 | mails should only go to your email address. | 634 | mails should only go to your email address. |
| 635 | |||
| 636 | ** Adding new tags | ||
| 637 | |||
| 638 | Add them to @gTags in /etc/debbugs/config. | ||
| 639 | I think you also have to add them to 'tags' and 'tags_single_letter' | ||
| 640 | in /usr/share/perl5/Debbugs/Config.pm. | ||
| 641 | And update /var/www/Developer.html with a description of what the tag means. | ||
| 642 | And the "valid tags" list in /var/www/index.html. | ||
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 531bf206a80..e10b9a83a43 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * help.texi (Misc Help): Mention `describe-prefix-bindings' | ||
| 4 | explicitly (bug#8904). | ||
| 5 | |||
| 1 | 2011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> | 6 | 2011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 2 | 7 | ||
| 3 | * trouble.texi (Checklist): Use an `M-x' example instead of an | 8 | * trouble.texi (Checklist): Use an `M-x' example instead of an |
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi index 76a9f2413b1..9a75bfb1887 100644 --- a/doc/emacs/help.texi +++ b/doc/emacs/help.texi | |||
| @@ -589,11 +589,13 @@ displays the contents of the syntax table, with explanations of each | |||
| 589 | character's syntax (@pxref{Syntax Tables,, Syntax Tables, elisp, The | 589 | character's syntax (@pxref{Syntax Tables,, Syntax Tables, elisp, The |
| 590 | Emacs Lisp Reference Manual}). | 590 | Emacs Lisp Reference Manual}). |
| 591 | 591 | ||
| 592 | @findex describe-prefix-bindings | ||
| 592 | You can get a list of subcommands for a particular prefix key by | 593 | You can get a list of subcommands for a particular prefix key by |
| 593 | typing @kbd{C-h} after the prefix key. (There are a few prefix keys | 594 | typing @kbd{C-h} (@code{describe-prefix-bindings}) after the prefix |
| 594 | for which this does not work---those that provide their own bindings | 595 | key. (There are a few prefix keys for which this does not |
| 595 | for @kbd{C-h}. One of these is @key{ESC}, because @kbd{@key{ESC} C-h} | 596 | work---those that provide their own bindings for @kbd{C-h}. One of |
| 596 | is actually @kbd{C-M-h}, which marks a defun.) | 597 | these is @key{ESC}, because @kbd{@key{ESC} C-h} is actually |
| 598 | @kbd{C-M-h}, which marks a defun.) | ||
| 597 | 599 | ||
| 598 | @node Help Files | 600 | @node Help Files |
| 599 | @section Help Files | 601 | @section Help Files |
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 153d7e839c3..091a6ffda59 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog | |||
| @@ -1,3 +1,22 @@ | |||
| 1 | 2011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | Tim Cross <theophilusx@gmail.com> (tiny change) | ||
| 3 | Glenn Morris <rgm@gnu.org> | ||
| 4 | |||
| 5 | * keymaps.texi (Toolkit Differences): New node. (Bug#8176) | ||
| 6 | |||
| 7 | 2011-07-15 Andreas Schwab <schwab@linux-m68k.org> | ||
| 8 | |||
| 9 | * help.texi (Keys in Documentation): Revert last change. | ||
| 10 | |||
| 11 | 2011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 12 | |||
| 13 | * help.texi (Keys in Documentation): Clarify that \= only quotes | ||
| 14 | the next character, and doesn't affect longer sequences in | ||
| 15 | particular (bug#8935). | ||
| 16 | |||
| 17 | * debugging.texi (Using Debugger): Mention | ||
| 18 | @code{eval-expression-debug-on-error} (bug#8549). | ||
| 19 | |||
| 1 | 2011-07-14 Eli Zaretskii <eliz@gnu.org> | 20 | 2011-07-14 Eli Zaretskii <eliz@gnu.org> |
| 2 | 21 | ||
| 3 | * display.texi (Other Display Specs): Document that `left-fringe' | 22 | * display.texi (Other Display Specs): Document that `left-fringe' |
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi index ed146453df7..d9e807afb88 100644 --- a/doc/lispref/debugging.texi +++ b/doc/lispref/debugging.texi | |||
| @@ -306,6 +306,16 @@ and it is wise to go back to the backtrace buffer and exit the debugger | |||
| 306 | the debugger gets out of the recursive edit and kills the backtrace | 306 | the debugger gets out of the recursive edit and kills the backtrace |
| 307 | buffer. | 307 | buffer. |
| 308 | 308 | ||
| 309 | When the debugger has been entered, the @code{debug-on-error} | ||
| 310 | variable is temporarily set according to | ||
| 311 | @code{eval-expression-debug-on-error}. If the latter variable is | ||
| 312 | non-@code{nil}, @code{debug-on-error} will temporarily be set to | ||
| 313 | @code{t}. This means that any further errors that occur while doing a | ||
| 314 | debugging session will (by default) trigger another backtrace. If | ||
| 315 | this is not want you want, you can either set | ||
| 316 | @code{eval-expression-debug-on-error} to @code{nil}, or set | ||
| 317 | @code{debug-on-error} to @code{nil} in @code{debugger-mode-hook}. | ||
| 318 | |||
| 309 | @cindex current stack frame | 319 | @cindex current stack frame |
| 310 | The backtrace buffer shows you the functions that are executing and | 320 | The backtrace buffer shows you the functions that are executing and |
| 311 | their argument values. It also allows you to specify a stack frame by | 321 | 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 15b2f2079ba..e5cca0622a9 100644 --- a/doc/lispref/keymaps.texi +++ b/doc/lispref/keymaps.texi | |||
| @@ -2019,8 +2019,10 @@ an existing menu, you can specify its position in the menu using | |||
| 2019 | various features. | 2019 | various features. |
| 2020 | * Menu Separators:: Drawing a horizontal line through a menu. | 2020 | * Menu Separators:: Drawing a horizontal line through a menu. |
| 2021 | * Alias Menu Items:: Using command aliases in menu items. | 2021 | * Alias Menu Items:: Using command aliases in menu items. |
| 2022 | * Toolkit Differences:: Not all toolkits provide the same features. | ||
| 2022 | @end menu | 2023 | @end menu |
| 2023 | 2024 | ||
| 2025 | |||
| 2024 | @node Simple Menu Items | 2026 | @node Simple Menu Items |
| 2025 | @subsubsection Simple Menu Items | 2027 | @subsubsection Simple Menu Items |
| 2026 | 2028 | ||
| @@ -2309,6 +2311,28 @@ itself). To request this, give the alias symbol a non-@code{nil} | |||
| 2309 | causes menu items for @code{make-read-only} and @code{make-writable} to | 2311 | causes menu items for @code{make-read-only} and @code{make-writable} to |
| 2310 | show the keyboard bindings for @code{toggle-read-only}. | 2312 | show the keyboard bindings for @code{toggle-read-only}. |
| 2311 | 2313 | ||
| 2314 | @node Toolkit Differences | ||
| 2315 | @subsubsection Toolkit Differences | ||
| 2316 | |||
| 2317 | The various toolkits with which you can build Emacs do not all support | ||
| 2318 | the same set of features for menus. Some code works as expected with | ||
| 2319 | one toolkit, but not under another. | ||
| 2320 | |||
| 2321 | One example is menu actions or buttons in a top-level menu-bar. The | ||
| 2322 | following works with the Lucid toolkit or on MS Windows, but not with | ||
| 2323 | GTK or Nextstep, where clicking on the item has no effect. | ||
| 2324 | |||
| 2325 | @example | ||
| 2326 | (defun menu-action-greet () | ||
| 2327 | (interactive) | ||
| 2328 | (message "Hello Emacs User!")) | ||
| 2329 | |||
| 2330 | (defun top-level-menu () | ||
| 2331 | (interactive) | ||
| 2332 | (define-key lisp-interaction-mode-map [menu-bar m] | ||
| 2333 | '(menu-item "Action Button" menu-action-greet))) | ||
| 2334 | @end example | ||
| 2335 | |||
| 2312 | @node Mouse Menus | 2336 | @node Mouse Menus |
| 2313 | @subsection Menus and the Mouse | 2337 | @subsection Menus and the Mouse |
| 2314 | 2338 | ||
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 3da09369882..091765043e3 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi | |||
| @@ -1099,11 +1099,12 @@ use short names like @code{x}. | |||
| 1099 | @node Lexical Binding | 1099 | @node Lexical Binding |
| 1100 | @subsection Use of Lexical Scoping | 1100 | @subsection Use of Lexical Scoping |
| 1101 | 1101 | ||
| 1102 | Emacs Lisp can be evaluated in two different modes: in dynamic binding mode or | 1102 | Emacs Lisp can be evaluated in two different modes: in dynamic binding |
| 1103 | lexical binding mode. In dynamic binding mode, all local variables use dynamic | 1103 | mode or lexical binding mode. In dynamic binding mode, all local |
| 1104 | scoping, whereas in lexical binding mode variables that have been declared | 1104 | variables use dynamic scoping, whereas in lexical binding mode |
| 1105 | @dfn{special} (i.e., declared with @code{defvar} or @code{defconst}) use | 1105 | variables that have been declared @dfn{special} (i.e., declared with |
| 1106 | dynamic scoping and all others use lexical scoping. | 1106 | @code{defvar}, @code{defcustom} or @code{defconst}) use dynamic |
| 1107 | scoping and all others use lexical scoping. | ||
| 1107 | 1108 | ||
| 1108 | @defvar lexical-binding | 1109 | @defvar lexical-binding |
| 1109 | When non-nil, evaluation of Lisp code uses lexical scoping for non-special | 1110 | When non-nil, evaluation of Lisp code uses lexical scoping for non-special |
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 38cbaafa45d..d64980bd1c8 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * flymake.texi (Example -- Configuring a tool called via make): | ||
| 4 | Use /dev/null instead of the Windows "nul" (bug#8715). | ||
| 5 | |||
| 1 | 2011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> | 6 | 2011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 2 | 7 | ||
| 3 | * widget.texi (Setting Up the Buffer): Remove mention of the | 8 | * widget.texi (Setting Up the Buffer): Remove mention of the |
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi index 74cf3d630da..625e9549444 100644 --- a/doc/misc/flymake.texi +++ b/doc/misc/flymake.texi | |||
| @@ -483,7 +483,7 @@ our case this target might look like this: | |||
| 483 | 483 | ||
| 484 | @verbatim | 484 | @verbatim |
| 485 | check-syntax: | 485 | check-syntax: |
| 486 | gcc -o nul -S ${CHK_SOURCES} | 486 | gcc -o /dev/null -S ${CHK_SOURCES} |
| 487 | @end verbatim | 487 | @end verbatim |
| 488 | 488 | ||
| 489 | The format of error messages reported by @code{gcc} is already | 489 | The format of error messages reported by @code{gcc} is already |
diff --git a/etc/ChangeLog b/etc/ChangeLog index bfe584c69a1..cf856429f01 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2011-07-16 Bill Wohler <wohler@newt.com> | ||
| 2 | |||
| 3 | Release MH-E version 8.2.92. | ||
| 4 | |||
| 5 | * NEWS, MH-E-NEWS: Update for MH-E release 8.2.92. | ||
| 6 | |||
| 1 | 2011-07-12 Bill Wohler <wohler@newt.com> | 7 | 2011-07-12 Bill Wohler <wohler@newt.com> |
| 2 | 8 | ||
| 3 | Release MH-E version 8.2.91. | 9 | Release MH-E version 8.2.91. |
diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS index a46354d7b7b..b5b2a8b5867 100644 --- a/etc/MH-E-NEWS +++ b/etc/MH-E-NEWS | |||
| @@ -3,6 +3,11 @@ | |||
| 3 | Copyright (C) 2001-2011 Free Software Foundation, Inc. | 3 | Copyright (C) 2001-2011 Free Software Foundation, Inc. |
| 4 | See the end of the file for license conditions. | 4 | See the end of the file for license conditions. |
| 5 | 5 | ||
| 6 | * Changes in MH-E 8.2.92 | ||
| 7 | |||
| 8 | Version 8.2.92 actually corrects the error in the modeline glyph when | ||
| 9 | running XEmacs 21.5.31 in a terminal. | ||
| 10 | |||
| 6 | * Changes in MH-E 8.2.91 | 11 | * Changes in MH-E 8.2.91 |
| 7 | 12 | ||
| 8 | Version 8.2.91 fixes the folder window problem that was introduced | 13 | 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 | |||
| 14 | `load-path' to "/path/to/mh-e/emacs/trunk/lisp/mh-e" instead. Note the | 19 | `load-path' to "/path/to/mh-e/emacs/trunk/lisp/mh-e" instead. Note the |
| 15 | addition of "trunk." | 20 | addition of "trunk." |
| 16 | 21 | ||
| 17 | This version of MH-E is packaged with GNU Emacs 24.1 | ||
| 18 | |||
| 19 | * Changes in MH-E 8.2.90 | 22 | * Changes in MH-E 8.2.90 |
| 20 | 23 | ||
| 21 | In 2010, the version control system (VCS) of Emacs was upgraded from | 24 | 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'. | |||
| 32 | Also, RFC 2047-encoded Subject header fields in replies are now | 35 | Also, RFC 2047-encoded Subject header fields in replies are now |
| 33 | decoded. | 36 | decoded. |
| 34 | 37 | ||
| 38 | This version of MH-E is packaged with GNU Emacs 24.1 | ||
| 39 | |||
| 40 | ** Bug Fixes in MH-E 8.2.90 | ||
| 41 | |||
| 42 | *** Make mh-showing a legitimate minor mode | ||
| 43 | |||
| 44 | The `mh-showing-mode' variable is now defined with `define-minor-mode' | ||
| 45 | (closes SF #482666). | ||
| 46 | |||
| 35 | 47 | ||
| 36 | 48 | ||
| 37 | * Changes in MH-E 8.2 | 49 | * Changes in MH-E 8.2 |
| @@ -488,7 +488,7 @@ $ESHELL nor variable `explicit-shell-file-name' is set. | |||
| 488 | 488 | ||
| 489 | ** MH-E | 489 | ** MH-E |
| 490 | 490 | ||
| 491 | *** Upgraded to MH-E version 8.2.91. See MH-E-NEWS for details. | 491 | *** Upgraded to MH-E version 8.2.92. See MH-E-NEWS for details. |
| 492 | 492 | ||
| 493 | ** comint and modes derived from it use the generic completion code. | 493 | ** comint and modes derived from it use the generic completion code. |
| 494 | 494 | ||
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 66783b9a5ed..15f742ed91a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,87 @@ | |||
| 1 | 2011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * net/gnutls.el (gnutls-log-level): Removed. | ||
| 4 | |||
| 5 | * textmodes/fill.el (adaptive-fill-regexp): Include EN DASH as an | ||
| 6 | indentation character (bug#6380). | ||
| 7 | |||
| 8 | * files.el (buffer-offer-save): Made permanently local (bug#6241). | ||
| 9 | |||
| 10 | * doc-view.el (doc-view-make-safe-dir): Rewrite the error message | ||
| 11 | to clarify what the problem is (bug#4291). | ||
| 12 | |||
| 13 | * simple.el (current-kill): Clarify what | ||
| 14 | `interprogram-paste-function' does (bug#7500). | ||
| 15 | (auto-fill-mode): Document `auto-fill-function' in relation to | ||
| 16 | `auto-fill-mode' (bug#2470). | ||
| 17 | |||
| 18 | 2011-07-16 Lawrence Mitchell <wence@gmx.li> | ||
| 19 | |||
| 20 | * emacs-lisp/cl-macs.el (defstruct): Ignore argument to setf | ||
| 21 | method if slot is read-only (bug#9035). | ||
| 22 | |||
| 23 | 2011-07-16 Martin Rudalics <rudalics@gmx.at> | ||
| 24 | |||
| 25 | * frame.el (select-frame-set-input-focus): New argument | ||
| 26 | NORECORD. | ||
| 27 | * window.el (pop-to-buffer): Select window used even if it was | ||
| 28 | selected before, see discussion of (Bug#8615), (Bug#6954). Pass | ||
| 29 | argument NORECORD on to select-frame-set-input-focus. | ||
| 30 | |||
| 31 | 2011-07-15 Glenn Morris <rgm@gnu.org> | ||
| 32 | |||
| 33 | * subr.el (read-char-choice): Allow quitting. (Bug#9001) | ||
| 34 | Respect help-form. | ||
| 35 | |||
| 36 | 2011-07-09 Lawrence Mitchell <wence@gmx.li> | ||
| 37 | |||
| 38 | * net/gnutls.el (gnutls-min-prime-bits): New variable. | ||
| 39 | (gnutls-negotiate): Use it. | ||
| 40 | |||
| 41 | 2011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 42 | |||
| 43 | * net/gnutls.el (gnutls-negotiate): Upcase | ||
| 44 | `gnutls-algorithm-priority'. | ||
| 45 | |||
| 46 | 2011-07-15 Glenn Morris <rgm@gnu.org> | ||
| 47 | |||
| 48 | * jka-compr.el (jka-compr-verbose): Move from here... | ||
| 49 | * jka-cmpr-hook.el (jka-compr-verbose): ... to here. (Bug#9090) | ||
| 50 | Add missing :version tag. | ||
| 51 | * info.el: No need to require jka-compr when compiling. | ||
| 52 | |||
| 53 | 2011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 54 | |||
| 55 | * net/gnutls.el (gnutls-algorithm-priority): New variable. | ||
| 56 | (gnutls-negotiate): Use it. | ||
| 57 | |||
| 58 | * emacs-lisp/cl-macs.el (declare): Link to the "Declarations" node. | ||
| 59 | |||
| 60 | * info.el (Info-beginning-of-buffer): New command. | ||
| 61 | (Info-mode-map): Use it instead of `beginning-of-buffer' to allow | ||
| 62 | announcing `b' as the key (bug#8325). | ||
| 63 | (Info-mode-menu): Use `Info-beginning-of-buffer' for consistency. | ||
| 64 | |||
| 65 | * emacs-lisp/cl-macs.el (declare): Doc string fix-up. | ||
| 66 | |||
| 67 | * international/mule-cmds.el | ||
| 68 | (describe-specified-language-support): Make the error message | ||
| 69 | clearer (bug#8905). | ||
| 70 | |||
| 71 | * emacs-lisp/cl-macs.el (declare): Add a doc string (bug#8690). | ||
| 72 | |||
| 73 | * isearch.el (isearch-barrier): Add a doc string, since it's | ||
| 74 | mentioned in a function doc string (bug#8678). | ||
| 75 | |||
| 76 | 2011-07-15 Martin Rudalics <rudalics@gmx.at> | ||
| 77 | |||
| 78 | * window.el (switch-to-buffer): Call pop-to-buffer with normalized | ||
| 79 | buffer argument (Bug#9083) and self-identifying label argument. | ||
| 80 | |||
| 81 | 2011-07-15 Glenn Morris <rgm@gnu.org> | ||
| 82 | |||
| 83 | * emacs-lisp/debug.el (debug): Doc fix. (Bug#8273) | ||
| 84 | |||
| 1 | 2011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> | 85 | 2011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 2 | 86 | ||
| 3 | * man.el (Man-fontify-manpage): Fix message when formatting the | 87 | * man.el (Man-fontify-manpage): Fix message when formatting the |
diff --git a/lisp/doc-view.el b/lisp/doc-view.el index 666c6a8b034..872b2172c7e 100644 --- a/lisp/doc-view.el +++ b/lisp/doc-view.el | |||
| @@ -569,18 +569,18 @@ at the top edge of the page moves to the previous page." | |||
| 569 | (defun doc-view-make-safe-dir (dir) | 569 | (defun doc-view-make-safe-dir (dir) |
| 570 | (condition-case nil | 570 | (condition-case nil |
| 571 | (let ((umask (default-file-modes))) | 571 | (let ((umask (default-file-modes))) |
| 572 | (unwind-protect | 572 | (unwind-protect |
| 573 | (progn | 573 | (progn |
| 574 | ;; Create temp files with strict access rights. It's easy to | 574 | ;; Create temp files with strict access rights. It's easy to |
| 575 | ;; loosen them later, whereas it's impossible to close the | 575 | ;; loosen them later, whereas it's impossible to close the |
| 576 | ;; time-window of loose permissions otherwise. | 576 | ;; time-window of loose permissions otherwise. |
| 577 | (set-default-file-modes #o0700) | 577 | (set-default-file-modes #o0700) |
| 578 | (make-directory dir)) | 578 | (make-directory dir)) |
| 579 | ;; Reset the umask. | 579 | ;; Reset the umask. |
| 580 | (set-default-file-modes umask))) | 580 | (set-default-file-modes umask))) |
| 581 | (file-already-exists | 581 | (file-already-exists |
| 582 | (if (file-symlink-p dir) | 582 | (when (file-symlink-p dir) |
| 583 | (error "Danger: %s points to a symbolic link" dir)) | 583 | (error "Danger: %s points to a symbolic link" dir)) |
| 584 | ;; In case it was created earlier with looser rights. | 584 | ;; In case it was created earlier with looser rights. |
| 585 | ;; We could check the mode info returned by file-attributes, but it's | 585 | ;; We could check the mode info returned by file-attributes, but it's |
| 586 | ;; a pain to parse and it may not tell you what we want under | 586 | ;; a pain to parse and it may not tell you what we want under |
| @@ -589,7 +589,12 @@ at the top edge of the page moves to the previous page." | |||
| 589 | ;; This also ends up checking a bunch of useful conditions: it makes | 589 | ;; This also ends up checking a bunch of useful conditions: it makes |
| 590 | ;; sure we have write-access to the directory and that we own it, thus | 590 | ;; sure we have write-access to the directory and that we own it, thus |
| 591 | ;; closing a bunch of security holes. | 591 | ;; closing a bunch of security holes. |
| 592 | (set-file-modes dir #o0700)))) | 592 | (condition-case error |
| 593 | (set-file-modes dir #o0700) | ||
| 594 | (file-error | ||
| 595 | (error | ||
| 596 | (format "Unable to use temporary directory %s: %s" | ||
| 597 | dir (mapconcat 'identity (cdr error) " ")))))))) | ||
| 593 | 598 | ||
| 594 | (defun doc-view-current-cache-dir () | 599 | (defun doc-view-current-cache-dir () |
| 595 | "Return the directory where the png files of the current doc should be saved. | 600 | "Return the directory where the png files of the current doc should be saved. |
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el index 48c7386bd43..f0c72a0b269 100644 --- a/lisp/emacs-lisp/cl-loaddefs.el +++ b/lisp/emacs-lisp/cl-loaddefs.el | |||
| @@ -282,7 +282,7 @@ Not documented | |||
| 282 | ;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist | 282 | ;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist |
| 283 | ;;;;;; do* do loop return-from return block etypecase typecase ecase | 283 | ;;;;;; do* do loop return-from return block etypecase typecase ecase |
| 284 | ;;;;;; case load-time-value eval-when destructuring-bind function* | 284 | ;;;;;; case load-time-value eval-when destructuring-bind function* |
| 285 | ;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "9f551dc739a39b3c8b420fbd1ab71879") | 285 | ;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "2261724608e3223036b863d214f7dc0c") |
| 286 | ;;; Generated autoloads from cl-macs.el | 286 | ;;; Generated autoloads from cl-macs.el |
| 287 | 287 | ||
| 288 | (autoload 'gensym "cl-macs" "\ | 288 | (autoload 'gensym "cl-macs" "\ |
| @@ -541,7 +541,13 @@ values. For compatibility, (values A B C) is a synonym for (list A B C). | |||
| 541 | \(fn TYPE FORM)" nil (quote macro)) | 541 | \(fn TYPE FORM)" nil (quote macro)) |
| 542 | 542 | ||
| 543 | (autoload 'declare "cl-macs" "\ | 543 | (autoload 'declare "cl-macs" "\ |
| 544 | Declare SPECS about the current function while compiling. | ||
| 545 | For instance | ||
| 544 | 546 | ||
| 547 | (declare (warn 0)) | ||
| 548 | |||
| 549 | will turn off byte-compile warnings in the function. | ||
| 550 | See Info node `(cl)Declarations' for details. | ||
| 545 | 551 | ||
| 546 | \(fn &rest SPECS)" nil (quote macro)) | 552 | \(fn &rest SPECS)" nil (quote macro)) |
| 547 | 553 | ||
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 2813cc4f065..d6b4643d6a4 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el | |||
| @@ -1601,6 +1601,13 @@ values. For compatibility, (values A B C) is a synonym for (list A B C). | |||
| 1601 | 1601 | ||
| 1602 | ;;;###autoload | 1602 | ;;;###autoload |
| 1603 | (defmacro declare (&rest specs) | 1603 | (defmacro declare (&rest specs) |
| 1604 | "Declare SPECS about the current function while compiling. | ||
| 1605 | For instance | ||
| 1606 | |||
| 1607 | \(declare (warn 0)) | ||
| 1608 | |||
| 1609 | will turn off byte-compile warnings in the function. | ||
| 1610 | See Info node `(cl)Declarations' for details." | ||
| 1604 | (if (cl-compiling-file) | 1611 | (if (cl-compiling-file) |
| 1605 | (while specs | 1612 | (while specs |
| 1606 | (if (listp cl-declare-stack) (push (car specs) cl-declare-stack)) | 1613 | (if (listp cl-declare-stack) (push (car specs) cl-declare-stack)) |
| @@ -2389,8 +2396,10 @@ value, that slot cannot be set via `setf'. | |||
| 2389 | (push (cons accessor t) side-eff) | 2396 | (push (cons accessor t) side-eff) |
| 2390 | (push (list 'define-setf-method accessor '(cl-x) | 2397 | (push (list 'define-setf-method accessor '(cl-x) |
| 2391 | (if (cadr (memq :read-only (cddr desc))) | 2398 | (if (cadr (memq :read-only (cddr desc))) |
| 2392 | (list 'error (format "%s is a read-only slot" | 2399 | (list 'progn '(ignore cl-x) |
| 2393 | accessor)) | 2400 | (list 'error |
| 2401 | (format "%s is a read-only slot" | ||
| 2402 | 'accessor))) | ||
| 2394 | ;; If cl is loaded only for compilation, | 2403 | ;; If cl is loaded only for compilation, |
| 2395 | ;; the call to cl-struct-setf-expander would | 2404 | ;; the call to cl-struct-setf-expander would |
| 2396 | ;; cause a warning because it may not be | 2405 | ;; cause a warning because it may not be |
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 2fa339e62fe..157749500e7 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el | |||
| @@ -102,7 +102,7 @@ and `debugger-reenable' to temporarily disable debug-on-entry.") | |||
| 102 | (setq debugger 'debug) | 102 | (setq debugger 'debug) |
| 103 | ;;;###autoload | 103 | ;;;###autoload |
| 104 | (defun debug (&rest debugger-args) | 104 | (defun debug (&rest debugger-args) |
| 105 | "Enter debugger. To return, type \\<debugger-mode-map>`\\[debugger-continue]'. | 105 | "Enter debugger. \\<debugger-mode-map>`\\[debugger-continue]' returns from the debugger. |
| 106 | Arguments are mainly for use when this is called from the internals | 106 | Arguments are mainly for use when this is called from the internals |
| 107 | of the evaluator. | 107 | of the evaluator. |
| 108 | 108 | ||
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el index 200b3a6389b..c65cbc39eab 100644 --- a/lisp/emacs-lisp/syntax.el +++ b/lisp/emacs-lisp/syntax.el | |||
| @@ -100,7 +100,7 @@ Put first the functions more likely to cause a change and cheaper to compute.") | |||
| 100 | (cons beg end)) | 100 | (cons beg end)) |
| 101 | 101 | ||
| 102 | (defvar syntax-propertize--done -1 | 102 | (defvar syntax-propertize--done -1 |
| 103 | "Position upto which syntax-table properties have been set.") | 103 | "Position up to which syntax-table properties have been set.") |
| 104 | (make-variable-buffer-local 'syntax-propertize--done) | 104 | (make-variable-buffer-local 'syntax-propertize--done) |
| 105 | 105 | ||
| 106 | (defun syntax-propertize--shift-groups (re n) | 106 | (defun syntax-propertize--shift-groups (re n) |
| @@ -283,7 +283,7 @@ The return value is a function suitable for `syntax-propertize-function'." | |||
| 283 | (setq keywords font-lock-syntactic-keywords)))))) | 283 | (setq keywords font-lock-syntactic-keywords)))))) |
| 284 | 284 | ||
| 285 | (defun syntax-propertize (pos) | 285 | (defun syntax-propertize (pos) |
| 286 | "Ensure that syntax-table properties are set upto POS." | 286 | "Ensure that syntax-table properties are set until POS." |
| 287 | (when (and syntax-propertize-function | 287 | (when (and syntax-propertize-function |
| 288 | (< syntax-propertize--done pos)) | 288 | (< syntax-propertize--done pos)) |
| 289 | ;; (message "Needs to syntax-propertize from %s to %s" | 289 | ;; (message "Needs to syntax-propertize from %s to %s" |
diff --git a/lisp/files.el b/lisp/files.el index 0b253fcc297..6b8a352f20c 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -151,6 +151,7 @@ Automatically local in all buffers." | |||
| 151 | :type 'boolean | 151 | :type 'boolean |
| 152 | :group 'backup) | 152 | :group 'backup) |
| 153 | (make-variable-buffer-local 'buffer-offer-save) | 153 | (make-variable-buffer-local 'buffer-offer-save) |
| 154 | (put 'buffer-offer-save 'permanent-local t) | ||
| 154 | 155 | ||
| 155 | (defcustom find-file-existing-other-name t | 156 | (defcustom find-file-existing-other-name t |
| 156 | "Non-nil means find a file under alternative names, in existing buffers. | 157 | "Non-nil means find a file under alternative names, in existing buffers. |
diff --git a/lisp/frame.el b/lisp/frame.el index d6f82750347..8fea4f05147 100644 --- a/lisp/frame.el +++ b/lisp/frame.el | |||
| @@ -747,12 +747,15 @@ the user during startup." | |||
| 747 | 747 | ||
| 748 | (declare-function x-focus-frame "xfns.c" (frame)) | 748 | (declare-function x-focus-frame "xfns.c" (frame)) |
| 749 | 749 | ||
| 750 | (defun select-frame-set-input-focus (frame) | 750 | (defun select-frame-set-input-focus (frame &optional norecord) |
| 751 | "Select FRAME, raise it, and set input focus, if possible. | 751 | "Select FRAME, raise it, and set input focus, if possible. |
| 752 | If `mouse-autoselect-window' is non-nil, also move mouse pointer | 752 | If `mouse-autoselect-window' is non-nil, also move mouse pointer |
| 753 | to FRAME's selected window. Otherwise, if `focus-follows-mouse' | 753 | to FRAME's selected window. Otherwise, if `focus-follows-mouse' |
| 754 | is non-nil, move mouse cursor to FRAME." | 754 | is non-nil, move mouse cursor to FRAME. |
| 755 | (select-frame frame) | 755 | |
| 756 | Optional argument NORECORD means to neither change the order of | ||
| 757 | recently selected windows nor the buffer list." | ||
| 758 | (select-frame frame norecord) | ||
| 756 | (raise-frame frame) | 759 | (raise-frame frame) |
| 757 | ;; Ensure, if possible, that FRAME gets input focus. | 760 | ;; Ensure, if possible, that FRAME gets input focus. |
| 758 | (when (memq (window-system frame) '(x w32 ns)) | 761 | (when (memq (window-system frame) '(x w32 ns)) |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 7c887dc5450..32f5b702c6f 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,18 @@ | |||
| 1 | 2011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * message.el (message-auto-save-directory): If the ~/Mail directory | ||
| 4 | doesn't exist, use ~ as the auto-save directory (bug#4432). | ||
| 5 | |||
| 6 | * gnus-group.el (gnus-group-read-ephemeral-group): Start Gnus if it | ||
| 7 | hasn't already been started. | ||
| 8 | |||
| 9 | 2011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 10 | |||
| 11 | * gnus.el (debbugs-gnu): Renamed from debbugs-emacs. | ||
| 12 | |||
| 13 | * message.el (message-reply): Work around mysterious bug where | ||
| 14 | `message-mode' seems to overwrite the locally bound `subject' variable. | ||
| 15 | |||
| 1 | 2011-07-14 Andrew Cohen <cohen@andy.bu.edu> | 16 | 2011-07-14 Andrew Cohen <cohen@andy.bu.edu> |
| 2 | 17 | ||
| 3 | * nnimap.el (nnimap-request-thread): Ensure search is performed in | 18 | * nnimap.el (nnimap-request-thread): Ensure search is performed in |
| @@ -5,7 +20,7 @@ | |||
| 5 | 20 | ||
| 6 | * gnus-int.el (gnus-request-thread): Add group argument. | 21 | * gnus-int.el (gnus-request-thread): Add group argument. |
| 7 | 22 | ||
| 8 | * gnus-sum.el (gnus-request-thread): Use it. | 23 | * gnus-sum.el (gnus-summary-refer-thread): Use it. |
| 9 | 24 | ||
| 10 | 2011-07-10 Lars Magne Ingebrigtsen <larsi@gnus.org> | 25 | 2011-07-10 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 11 | 26 | ||
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 2ea2a5c9bc7..b4dca3e1fc4 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el | |||
| @@ -2282,6 +2282,8 @@ Return the name of the group if selection was successful." | |||
| 2282 | (gnus-group-completing-read) | 2282 | (gnus-group-completing-read) |
| 2283 | (gnus-read-method "From method"))) | 2283 | (gnus-read-method "From method"))) |
| 2284 | ;; Transform the select method into a unique server. | 2284 | ;; Transform the select method into a unique server. |
| 2285 | (unless (gnus-alive-p) | ||
| 2286 | (gnus-no-server)) | ||
| 2285 | (when (stringp method) | 2287 | (when (stringp method) |
| 2286 | (setq method (gnus-server-to-method method))) | 2288 | (setq method (gnus-server-to-method method))) |
| 2287 | (setq method | 2289 | (setq method |
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el index ac7db0e1d69..b66d5f22474 100644 --- a/lisp/gnus/gnus.el +++ b/lisp/gnus/gnus.el | |||
| @@ -4381,12 +4381,11 @@ prompt the user for the name of an NNTP server to use." | |||
| 4381 | (gnus-1 arg dont-connect slave) | 4381 | (gnus-1 arg dont-connect slave) |
| 4382 | (gnus-final-warning))) | 4382 | (gnus-final-warning))) |
| 4383 | 4383 | ||
| 4384 | (autoload 'debbugs-emacs "debbugs-gnu") | 4384 | (autoload 'debbugs-gnu "debbugs-gnu") |
| 4385 | (defun gnus-list-debbugs () | 4385 | (defun gnus-list-debbugs () |
| 4386 | "List all open Gnus bug reports." | 4386 | "List all open Gnus bug reports." |
| 4387 | (interactive) | 4387 | (interactive) |
| 4388 | (debbugs-emacs '("important" "normal" "minor" "wishlist") | 4388 | (debbugs-gnu nil "gnus")) |
| 4389 | "gnus")) | ||
| 4390 | 4389 | ||
| 4391 | ;; Allow redefinition of Gnus functions. | 4390 | ;; Allow redefinition of Gnus functions. |
| 4392 | 4391 | ||
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 7d7cc01225b..ff013e5b291 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el | |||
| @@ -1310,7 +1310,9 @@ text and it replaces `self-insert-command' with the other command, e.g. | |||
| 1310 | :type '(repeat function)) | 1310 | :type '(repeat function)) |
| 1311 | 1311 | ||
| 1312 | (defcustom message-auto-save-directory | 1312 | (defcustom message-auto-save-directory |
| 1313 | (file-name-as-directory (expand-file-name "drafts" message-directory)) | 1313 | (if (file-exists-p message-directory) |
| 1314 | (file-name-as-directory (expand-file-name "drafts" message-directory)) | ||
| 1315 | "~/") | ||
| 1314 | "*Directory where Message auto-saves buffers if Gnus isn't running. | 1316 | "*Directory where Message auto-saves buffers if Gnus isn't running. |
| 1315 | If nil, Message won't auto-save." | 1317 | If nil, Message won't auto-save." |
| 1316 | :group 'message-buffers | 1318 | :group 'message-buffers |
| @@ -6878,20 +6880,19 @@ Useful functions to put in this list include: | |||
| 6878 | (unless follow-to | 6880 | (unless follow-to |
| 6879 | (setq follow-to (message-get-reply-headers wide to-address)))) | 6881 | (setq follow-to (message-get-reply-headers wide to-address)))) |
| 6880 | 6882 | ||
| 6881 | (unless (message-mail-user-agent) | 6883 | (let ((headers |
| 6882 | (message-pop-to-buffer | 6884 | `((Subject . ,subject) |
| 6883 | (message-buffer-name | 6885 | ,@follow-to))) |
| 6884 | (if wide "wide reply" "reply") from | 6886 | (unless (message-mail-user-agent) |
| 6885 | (if wide to-address nil)) | 6887 | (message-pop-to-buffer |
| 6886 | switch-function)) | 6888 | (message-buffer-name |
| 6887 | 6889 | (if wide "wide reply" "reply") from | |
| 6888 | (setq message-reply-headers | 6890 | (if wide to-address nil)) |
| 6889 | (vector 0 subject from date message-id references 0 0 "")) | 6891 | switch-function)) |
| 6890 | 6892 | (setq message-reply-headers | |
| 6891 | (message-setup | 6893 | (vector 0 (cdr (assq 'Subject headers)) |
| 6892 | `((Subject . ,subject) | 6894 | from date message-id references 0 0 "")) |
| 6893 | ,@follow-to) | 6895 | (message-setup headers cur)))) |
| 6894 | cur))) | ||
| 6895 | 6896 | ||
| 6896 | ;;;###autoload | 6897 | ;;;###autoload |
| 6897 | (defun message-wide-reply (&optional to-address) | 6898 | (defun message-wide-reply (&optional to-address) |
diff --git a/lisp/info.el b/lisp/info.el index cbdc8cc7ab3..a4826ee8c2c 100644 --- a/lisp/info.el +++ b/lisp/info.el | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | 32 | ||
| 33 | ;;; Code: | 33 | ;;; Code: |
| 34 | 34 | ||
| 35 | (eval-when-compile (require 'jka-compr) (require 'cl)) | 35 | (eval-when-compile (require 'cl)) |
| 36 | 36 | ||
| 37 | (defgroup info nil | 37 | (defgroup info nil |
| 38 | "Info subsystem." | 38 | "Info subsystem." |
| @@ -2789,6 +2789,11 @@ N is the digit argument used to invoke this command." | |||
| 2789 | (goto-char (point-max))))) | 2789 | (goto-char (point-max))))) |
| 2790 | (t (error "No previous nodes")))) | 2790 | (t (error "No previous nodes")))) |
| 2791 | 2791 | ||
| 2792 | (defun Info-beginning-of-buffer () | ||
| 2793 | "Go to the beginnning of the buffer." | ||
| 2794 | (interactive) | ||
| 2795 | (goto-char (point-min))) | ||
| 2796 | |||
| 2792 | (defun Info-scroll-up () | 2797 | (defun Info-scroll-up () |
| 2793 | "Scroll one screenful forward in Info, considering all nodes as one sequence. | 2798 | "Scroll one screenful forward in Info, considering all nodes as one sequence. |
| 2794 | Once you scroll far enough in a node that its menu appears on the screen | 2799 | 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'." | |||
| 3650 | (defvar Info-mode-map | 3655 | (defvar Info-mode-map |
| 3651 | (let ((map (make-keymap))) | 3656 | (let ((map (make-keymap))) |
| 3652 | (suppress-keymap map) | 3657 | (suppress-keymap map) |
| 3653 | (define-key map "." 'beginning-of-buffer) | 3658 | (define-key map "." 'Info-beginning-of-buffer) |
| 3654 | (define-key map " " 'Info-scroll-up) | 3659 | (define-key map " " 'Info-scroll-up) |
| 3655 | (define-key map "\C-m" 'Info-follow-nearest-node) | 3660 | (define-key map "\C-m" 'Info-follow-nearest-node) |
| 3656 | (define-key map "\t" 'Info-next-reference) | 3661 | (define-key map "\t" 'Info-next-reference) |
| @@ -3671,7 +3676,8 @@ If FORK is non-nil, it is passed to `Info-goto-node'." | |||
| 3671 | (define-key map "[" 'Info-backward-node) | 3676 | (define-key map "[" 'Info-backward-node) |
| 3672 | (define-key map "<" 'Info-top-node) | 3677 | (define-key map "<" 'Info-top-node) |
| 3673 | (define-key map ">" 'Info-final-node) | 3678 | (define-key map ">" 'Info-final-node) |
| 3674 | (define-key map "b" 'beginning-of-buffer) | 3679 | (define-key map "b" 'Info-beginning-of-buffer) |
| 3680 | (put 'Info-beginning-of-buffer :advertised-binding "b") | ||
| 3675 | (define-key map "d" 'Info-directory) | 3681 | (define-key map "d" 'Info-directory) |
| 3676 | (define-key map "e" 'Info-edit) | 3682 | (define-key map "e" 'Info-edit) |
| 3677 | (define-key map "f" 'Info-follow-reference) | 3683 | (define-key map "f" 'Info-follow-reference) |
| @@ -3725,7 +3731,7 @@ If FORK is non-nil, it is passed to `Info-goto-node'." | |||
| 3725 | :help "Go backward one node, considering all as a sequence"] | 3731 | :help "Go backward one node, considering all as a sequence"] |
| 3726 | ["Forward" Info-forward-node | 3732 | ["Forward" Info-forward-node |
| 3727 | :help "Go forward one node, considering all as a sequence"] | 3733 | :help "Go forward one node, considering all as a sequence"] |
| 3728 | ["Beginning" beginning-of-buffer | 3734 | ["Beginning" Info-beginning-of-buffer |
| 3729 | :help "Go to beginning of this node"] | 3735 | :help "Go to beginning of this node"] |
| 3730 | ["Top" Info-top-node | 3736 | ["Top" Info-top-node |
| 3731 | :help "Go to top node of file"] | 3737 | :help "Go to top node of file"] |
| @@ -3931,7 +3937,7 @@ Moving within a node: | |||
| 3931 | \\[Info-scroll-down] Normally, scroll backward. If the beginning of the buffer is | 3937 | \\[Info-scroll-down] Normally, scroll backward. If the beginning of the buffer is |
| 3932 | already visible, try to go to the previous menu entry, or up | 3938 | already visible, try to go to the previous menu entry, or up |
| 3933 | if there is none. | 3939 | if there is none. |
| 3934 | \\[beginning-of-buffer] Go to beginning of node. | 3940 | \\[Info-beginning-of-buffer] Go to beginning of node. |
| 3935 | 3941 | ||
| 3936 | Advanced commands: | 3942 | Advanced commands: |
| 3937 | \\[Info-search] Search through this Info file for specified regexp, | 3943 | \\[Info-search] Search through this Info file for specified regexp, |
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 6a73aaaa838..128fb86b7b4 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el | |||
| @@ -2059,7 +2059,7 @@ See `set-language-info-alist' for use in programs." | |||
| 2059 | (or (not (eq last-command-event 'Default)) | 2059 | (or (not (eq last-command-event 'Default)) |
| 2060 | (setq last-command-event 'English)) | 2060 | (setq last-command-event 'English)) |
| 2061 | (setq language-name (symbol-name last-command-event)))) | 2061 | (setq language-name (symbol-name last-command-event)))) |
| 2062 | (error "Bogus calling sequence")) | 2062 | (error "This command should only be called from the menu bar")) |
| 2063 | (describe-language-environment language-name))) | 2063 | (describe-language-environment language-name))) |
| 2064 | 2064 | ||
| 2065 | (defun describe-language-environment (language-name) | 2065 | (defun describe-language-environment (language-name) |
diff --git a/lisp/isearch.el b/lisp/isearch.el index 50e7b331c85..1942641fae9 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el | |||
| @@ -549,7 +549,8 @@ Each set is a vector of the form: | |||
| 549 | (defvar isearch-error nil) ; Error message for failed search. | 549 | (defvar isearch-error nil) ; Error message for failed search. |
| 550 | (defvar isearch-other-end nil) ; Start (end) of match if forward (backward). | 550 | (defvar isearch-other-end nil) ; Start (end) of match if forward (backward). |
| 551 | (defvar isearch-wrapped nil) ; Searching restarted from the top (bottom). | 551 | (defvar isearch-wrapped nil) ; Searching restarted from the top (bottom). |
| 552 | (defvar isearch-barrier 0) | 552 | (defvar isearch-barrier 0 |
| 553 | "Recorded minimum/maximal point for the current search.") | ||
| 553 | (defvar isearch-just-started nil) | 554 | (defvar isearch-just-started nil) |
| 554 | (defvar isearch-start-hscroll 0) ; hscroll when starting the search. | 555 | (defvar isearch-start-hscroll 0) ; hscroll when starting the search. |
| 555 | 556 | ||
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el index e1cf2a661ed..d28fde0b214 100644 --- a/lisp/jka-cmpr-hook.el +++ b/lisp/jka-cmpr-hook.el | |||
| @@ -39,6 +39,12 @@ | |||
| 39 | "jka-compr customization." | 39 | "jka-compr customization." |
| 40 | :group 'compression) | 40 | :group 'compression) |
| 41 | 41 | ||
| 42 | (defcustom jka-compr-verbose t | ||
| 43 | "If non-nil, output messages whenever compressing or uncompressing files." | ||
| 44 | :version "24.1" | ||
| 45 | :type 'boolean | ||
| 46 | :group 'jka-compr) | ||
| 47 | |||
| 42 | ;; List of all the elements we actually added to file-coding-system-alist. | 48 | ;; List of all the elements we actually added to file-coding-system-alist. |
| 43 | (defvar jka-compr-added-to-file-coding-system-alist nil) | 49 | (defvar jka-compr-added-to-file-coding-system-alist nil) |
| 44 | 50 | ||
diff --git a/lisp/jka-compr.el b/lisp/jka-compr.el index 1893e982bbb..cd769885cc6 100644 --- a/lisp/jka-compr.el +++ b/lisp/jka-compr.el | |||
| @@ -97,11 +97,6 @@ NOTE: Not used in MS-DOS and Windows systems." | |||
| 97 | :type 'string | 97 | :type 'string |
| 98 | :group 'jka-compr) | 98 | :group 'jka-compr) |
| 99 | 99 | ||
| 100 | (defcustom jka-compr-verbose t | ||
| 101 | "If non-nil, output messages whenever compressing or uncompressing files." | ||
| 102 | :type 'boolean | ||
| 103 | :group 'jka-compr) | ||
| 104 | |||
| 105 | (defvar jka-compr-use-shell | 100 | (defvar jka-compr-use-shell |
| 106 | (not (memq system-type '(ms-dos windows-nt)))) | 101 | (not (memq system-type '(ms-dos windows-nt)))) |
| 107 | 102 | ||
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index df4edcc75e1..431c15b2346 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2011-07-16 Bill Wohler <wohler@newt.com> | ||
| 2 | |||
| 3 | Release MH-E version 8.2.92. | ||
| 4 | |||
| 5 | * mh-e.el (Version, mh-version): Update for release 8.2.92. | ||
| 6 | |||
| 1 | 2011-07-12 Bill Wohler <wohler@newt.com> | 7 | 2011-07-12 Bill Wohler <wohler@newt.com> |
| 2 | 8 | ||
| 3 | Release MH-E version 8.2.91. | 9 | Release MH-E version 8.2.91. |
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el index 51b41e854b0..1e7b07eb6dc 100644 --- a/lisp/mh-e/mh-e.el +++ b/lisp/mh-e/mh-e.el | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | 5 | ||
| 6 | ;; Author: Bill Wohler <wohler@newt.com> | 6 | ;; Author: Bill Wohler <wohler@newt.com> |
| 7 | ;; Maintainer: Bill Wohler <wohler@newt.com> | 7 | ;; Maintainer: Bill Wohler <wohler@newt.com> |
| 8 | ;; Version: 8.2.91 | 8 | ;; Version: 8.2.92 |
| 9 | ;; Keywords: mail | 9 | ;; Keywords: mail |
| 10 | 10 | ||
| 11 | ;; This file is part of GNU Emacs. | 11 | ;; This file is part of GNU Emacs. |
| @@ -127,7 +127,7 @@ | |||
| 127 | ;; Try to keep variables local to a single file. Provide accessors if | 127 | ;; Try to keep variables local to a single file. Provide accessors if |
| 128 | ;; variables are shared. Use this section as a last resort. | 128 | ;; variables are shared. Use this section as a last resort. |
| 129 | 129 | ||
| 130 | (defconst mh-version "8.2.91" "Version number of MH-E.") | 130 | (defconst mh-version "8.2.92" "Version number of MH-E.") |
| 131 | 131 | ||
| 132 | ;; Variants | 132 | ;; Variants |
| 133 | 133 | ||
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el index 67d7b2d20d3..9cb071b185d 100644 --- a/lisp/net/gnutls.el +++ b/lisp/net/gnutls.el | |||
| @@ -42,9 +42,24 @@ | |||
| 42 | :prefix "gnutls-" | 42 | :prefix "gnutls-" |
| 43 | :group 'net-utils) | 43 | :group 'net-utils) |
| 44 | 44 | ||
| 45 | (defcustom gnutls-log-level 0 | 45 | (defcustom gnutls-algorithm-priority nil |
| 46 | "Logging level to be used by `starttls-negotiate' and GnuTLS." | 46 | "If non-nil, this should be a TLS priority string. |
| 47 | :type 'integer | 47 | For instance, if you want to skip the \"dhe-rsa\" algorithm, |
| 48 | set this variable to \"normal:-dhe-rsa\"." | ||
| 49 | :type '(choice (const nil) | ||
| 50 | string)) | ||
| 51 | |||
| 52 | ;;;###autoload | ||
| 53 | (defcustom gnutls-min-prime-bits nil | ||
| 54 | "The minimum number of bits to be used in Diffie-Hellman key exchange. | ||
| 55 | |||
| 56 | This sets the minimum accepted size of the key to be used in a | ||
| 57 | client-server handshake. If the server sends a prime with fewer than | ||
| 58 | the specified number of bits the handshake will fail. | ||
| 59 | |||
| 60 | A value of nil says to use the default gnutls value." | ||
| 61 | :type '(choice (const :tag "Use default value" nil) | ||
| 62 | (integer :tag "Number of bits" 512)) | ||
| 48 | :group 'gnutls) | 63 | :group 'gnutls) |
| 49 | 64 | ||
| 50 | (defun open-gnutls-stream (name buffer host service) | 65 | (defun open-gnutls-stream (name buffer host service) |
| @@ -90,8 +105,8 @@ trust and key files, and priority string." | |||
| 90 | (defun* gnutls-negotiate | 105 | (defun* gnutls-negotiate |
| 91 | (&rest spec | 106 | (&rest spec |
| 92 | &key process type hostname priority-string | 107 | &key process type hostname priority-string |
| 93 | trustfiles crlfiles keylist verify-flags | 108 | trustfiles crlfiles keylist min-prime-bits |
| 94 | verify-error verify-hostname-error | 109 | verify-flags verify-error verify-hostname-error |
| 95 | &allow-other-keys) | 110 | &allow-other-keys) |
| 96 | "Negotiate a SSL/TLS connection. Returns proc. Signals gnutls-error. | 111 | "Negotiate a SSL/TLS connection. Returns proc. Signals gnutls-error. |
| 97 | 112 | ||
| @@ -104,6 +119,9 @@ PRIORITY-STRING is as per the GnuTLS docs, default is \"NORMAL\". | |||
| 104 | TRUSTFILES is a list of CA bundles. | 119 | TRUSTFILES is a list of CA bundles. |
| 105 | CRLFILES is a list of CRL files. | 120 | CRLFILES is a list of CRL files. |
| 106 | KEYLIST is an alist of (client key file, client cert file) pairs. | 121 | KEYLIST is an alist of (client key file, client cert file) pairs. |
| 122 | MIN-PRIME-BITS is the minimum acceptable size of Diffie-Hellman keys | ||
| 123 | \(see `gnutls-min-prime-bits' for more information). Use nil for the | ||
| 124 | default. | ||
| 107 | 125 | ||
| 108 | When VERIFY-HOSTNAME-ERROR is not nil, an error will be raised | 126 | When VERIFY-HOSTNAME-ERROR is not nil, an error will be raised |
| 109 | when the hostname does not match the presented certificate's host | 127 | when the hostname does not match the presented certificate's host |
| @@ -145,10 +163,14 @@ defaults to GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT." | |||
| 145 | ((eq type 'gnutls-anon) | 163 | ((eq type 'gnutls-anon) |
| 146 | "NORMAL:+ANON-DH:!ARCFOUR-128") | 164 | "NORMAL:+ANON-DH:!ARCFOUR-128") |
| 147 | ((eq type 'gnutls-x509pki) | 165 | ((eq type 'gnutls-x509pki) |
| 148 | "NORMAL")))) | 166 | (if gnutls-algorithm-priority |
| 167 | (upcase gnutls-algorithm-priority) | ||
| 168 | "NORMAL"))))) | ||
| 169 | (min-prime-bits (or min-prime-bits gnutls-min-prime-bits)) | ||
| 149 | (params `(:priority ,priority-string | 170 | (params `(:priority ,priority-string |
| 150 | :hostname ,hostname | 171 | :hostname ,hostname |
| 151 | :loglevel ,gnutls-log-level | 172 | :loglevel ,gnutls-log-level |
| 173 | :min-prime-bits ,min-prime-bits | ||
| 152 | :trustfiles ,trustfiles | 174 | :trustfiles ,trustfiles |
| 153 | :crlfiles ,crlfiles | 175 | :crlfiles ,crlfiles |
| 154 | :keylist ,keylist | 176 | :keylist ,keylist |
diff --git a/lisp/simple.el b/lisp/simple.el index 64333402924..7fd7e20b499 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -3056,10 +3056,11 @@ If `interprogram-cut-function' is set, pass the resulting kill to it." | |||
| 3056 | 3056 | ||
| 3057 | (defun current-kill (n &optional do-not-move) | 3057 | (defun current-kill (n &optional do-not-move) |
| 3058 | "Rotate the yanking point by N places, and then return that kill. | 3058 | "Rotate the yanking point by N places, and then return that kill. |
| 3059 | If N is zero, `interprogram-paste-function' is set, and calling | 3059 | If N is zero and `interprogram-paste-function' is set to a |
| 3060 | it returns a string or list of strings, then that string (or | 3060 | function that returns a string or a list of strings, and if that |
| 3061 | list) is added to the front of the kill ring and the string (or | 3061 | function doesn't return nil, then that string (or list) is added |
| 3062 | first string in the list) is returned as the latest kill. | 3062 | to the front of the kill ring and the string (or first string in |
| 3063 | the list) is returned as the latest kill. | ||
| 3063 | 3064 | ||
| 3064 | If N is not zero, and if `yank-pop-change-selection' is | 3065 | If N is not zero, and if `yank-pop-change-selection' is |
| 3065 | non-nil, use `interprogram-cut-function' to transfer the | 3066 | non-nil, use `interprogram-cut-function' to transfer the |
| @@ -5236,14 +5237,16 @@ Some major modes set this.") | |||
| 5236 | ;; auto-fill-function to nil in a file-local setting is safe and | 5237 | ;; auto-fill-function to nil in a file-local setting is safe and |
| 5237 | ;; can be useful to prevent auto-filling. | 5238 | ;; can be useful to prevent auto-filling. |
| 5238 | (put 'auto-fill-function 'safe-local-variable 'null) | 5239 | (put 'auto-fill-function 'safe-local-variable 'null) |
| 5239 | ;; FIXME: turn into a proper minor mode. | 5240 | |
| 5240 | ;; Add a global minor mode version of it. | ||
| 5241 | (define-minor-mode auto-fill-mode | 5241 | (define-minor-mode auto-fill-mode |
| 5242 | "Toggle Auto Fill mode. | 5242 | "Toggle Auto Fill mode. |
| 5243 | With ARG, turn Auto Fill mode on if and only if ARG is positive. | 5243 | With ARG, turn Auto Fill mode on if and only if ARG is positive. |
| 5244 | In Auto Fill mode, inserting a space at a column beyond `current-fill-column' | 5244 | In Auto Fill mode, inserting a space at a column beyond `current-fill-column' |
| 5245 | automatically breaks the line at a previous space. | 5245 | automatically breaks the line at a previous space. |
| 5246 | 5246 | ||
| 5247 | When `auto-fill-mode' is on, the `auto-fill-function' variable is | ||
| 5248 | non-`nil'. | ||
| 5249 | |||
| 5247 | The value of `normal-auto-fill-function' specifies the function to use | 5250 | The value of `normal-auto-fill-function' specifies the function to use |
| 5248 | for `auto-fill-function' when turning Auto Fill mode on." | 5251 | for `auto-fill-function' when turning Auto Fill mode on." |
| 5249 | :variable (eq auto-fill-function normal-auto-fill-function)) | 5252 | :variable (eq auto-fill-function normal-auto-fill-function)) |
diff --git a/lisp/subr.el b/lisp/subr.el index 94b28c007d1..ef19797012a 100644 --- a/lisp/subr.el +++ b/lisp/subr.el | |||
| @@ -2145,23 +2145,34 @@ If optional argument INHIBIT-KEYBOARD-QUIT is non-nil, ignore | |||
| 2145 | keyboard-quit events while waiting for a valid input." | 2145 | keyboard-quit events while waiting for a valid input." |
| 2146 | (unless (consp chars) | 2146 | (unless (consp chars) |
| 2147 | (error "Called `read-char-choice' without valid char choices")) | 2147 | (error "Called `read-char-choice' without valid char choices")) |
| 2148 | (let (char done) | 2148 | (let (char done show-help (helpbuf " *Char Help*")) |
| 2149 | (let ((cursor-in-echo-area t) | 2149 | (let ((cursor-in-echo-area t) |
| 2150 | (executing-kbd-macro executing-kbd-macro)) | 2150 | (executing-kbd-macro executing-kbd-macro)) |
| 2151 | (while (not done) | 2151 | (save-window-excursion ; in case we call help-form-show |
| 2152 | (unless (get-text-property 0 'face prompt) | 2152 | (while (not done) |
| 2153 | (setq prompt (propertize prompt 'face 'minibuffer-prompt))) | 2153 | (unless (get-text-property 0 'face prompt) |
| 2154 | (setq char (let ((inhibit-quit inhibit-keyboard-quit)) | 2154 | (setq prompt (propertize prompt 'face 'minibuffer-prompt))) |
| 2155 | (read-key prompt))) | 2155 | (setq char (let ((inhibit-quit inhibit-keyboard-quit)) |
| 2156 | (cond | 2156 | (read-key prompt))) |
| 2157 | ((not (numberp char))) | 2157 | (and show-help (buffer-live-p helpbuf) |
| 2158 | ((memq char chars) | 2158 | (kill-buffer helpbuf)) |
| 2159 | (setq done t)) | 2159 | (cond |
| 2160 | ((and executing-kbd-macro (= char -1)) | 2160 | ((not (numberp char))) |
| 2161 | ;; read-event returns -1 if we are in a kbd macro and | 2161 | ;; If caller has set help-form, that's enough. |
| 2162 | ;; there are no more events in the macro. Attempt to | 2162 | ;; They don't explicitly have to add help-char to chars. |
| 2163 | ;; get an event interactively. | 2163 | ((and help-form |
| 2164 | (setq executing-kbd-macro nil))))) | 2164 | (eq char help-char) |
| 2165 | (setq show-help t) | ||
| 2166 | (help-form-show))) | ||
| 2167 | ((memq char chars) | ||
| 2168 | (setq done t)) | ||
| 2169 | ((and executing-kbd-macro (= char -1)) | ||
| 2170 | ;; read-event returns -1 if we are in a kbd macro and | ||
| 2171 | ;; there are no more events in the macro. Attempt to | ||
| 2172 | ;; get an event interactively. | ||
| 2173 | (setq executing-kbd-macro nil)) | ||
| 2174 | ((and (not inhibit-keyboard-quit) (eq char ?\C-g)) | ||
| 2175 | (keyboard-quit)))))) | ||
| 2165 | ;; Display the question with the answer. But without cursor-in-echo-area. | 2176 | ;; Display the question with the answer. But without cursor-in-echo-area. |
| 2166 | (message "%s%s" prompt (char-to-string char)) | 2177 | (message "%s%s" prompt (char-to-string char)) |
| 2167 | char)) | 2178 | char)) |
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el index b264cc30850..52f6e5b4889 100644 --- a/lisp/textmodes/fill.el +++ b/lisp/textmodes/fill.el | |||
| @@ -93,7 +93,7 @@ reinserts the fill prefix in each resulting line." | |||
| 93 | ;; Added `!' for doxygen comments starting with `//!' or `/*!'. | 93 | ;; Added `!' for doxygen comments starting with `//!' or `/*!'. |
| 94 | ;; Added `%' for TeX comments. | 94 | ;; Added `%' for TeX comments. |
| 95 | ;; RMS: deleted the code to match `1.' and `(1)'. | 95 | ;; RMS: deleted the code to match `1.' and `(1)'. |
| 96 | (purecopy "[ \t]*\\([-!|#%;>*·•‣⁃◦]+[ \t]*\\)*") | 96 | (purecopy "[ \t]*\\([-–!|#%;>*·•‣⁃◦]+[ \t]*\\)*") |
| 97 | "Regexp to match text at start of line that constitutes indentation. | 97 | "Regexp to match text at start of line that constitutes indentation. |
| 98 | If Adaptive Fill mode is enabled, a prefix matching this pattern | 98 | If Adaptive Fill mode is enabled, a prefix matching this pattern |
| 99 | on the first and second lines of a paragraph is used as the | 99 | on the first and second lines of a paragraph is used as the |
diff --git a/lisp/window.el b/lisp/window.el index 0302a672521..b4b900287e1 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -3272,7 +3272,7 @@ window." | |||
| 3272 | (defun split-window-side-by-side (&optional size) | 3272 | (defun split-window-side-by-side (&optional size) |
| 3273 | "Split selected window into two windows side by side. | 3273 | "Split selected window into two windows side by side. |
| 3274 | The selected window becomes the left one and gets SIZE columns. | 3274 | The selected window becomes the left one and gets SIZE columns. |
| 3275 | SIZE negative means the right window gets -SIZE lines. | 3275 | SIZE negative means the right window gets -SIZE columns. |
| 3276 | 3276 | ||
| 3277 | SIZE includes the width of the window's scroll bar; if there are | 3277 | SIZE includes the width of the window's scroll bar; if there are |
| 3278 | no scroll bars, it includes the width of the divider column to | 3278 | no scroll bars, it includes the width of the divider column to |
| @@ -5836,15 +5836,13 @@ additional information." | |||
| 5836 | new-window new-frame) | 5836 | new-window new-frame) |
| 5837 | (set-buffer buffer) | 5837 | (set-buffer buffer) |
| 5838 | (setq new-window (display-buffer buffer specifiers label)) | 5838 | (setq new-window (display-buffer buffer specifiers label)) |
| 5839 | (unless (eq new-window old-window) | 5839 | (setq new-frame (window-frame new-window)) |
| 5840 | ;; `display-buffer' has chosen another window, select it. | 5840 | (if (eq old-frame new-frame) |
| 5841 | (select-window new-window norecord) | 5841 | ;; Make sure new-window gets selected (Bug#8615), (Bug#6954). |
| 5842 | (setq new-frame (window-frame new-window)) | 5842 | (select-window new-window norecord) |
| 5843 | (unless (eq new-frame old-frame) | 5843 | ;; `display-buffer' has chosen another frame, make sure it gets |
| 5844 | ;; `display-buffer' has chosen another frame, make sure it gets | 5844 | ;; input focus and is risen. |
| 5845 | ;; input focus and is risen. | 5845 | (select-frame-set-input-focus new-frame norecord)) |
| 5846 | (select-frame-set-input-focus new-frame))) | ||
| 5847 | |||
| 5848 | buffer)) | 5846 | buffer)) |
| 5849 | 5847 | ||
| 5850 | (defsubst pop-to-buffer-same-window (&optional buffer-or-name norecord label) | 5848 | (defsubst pop-to-buffer-same-window (&optional buffer-or-name norecord label) |
| @@ -5953,13 +5951,13 @@ Return the buffer switched to." | |||
| 5953 | (list (read-buffer-to-switch "Switch to buffer: ") nil nil)) | 5951 | (list (read-buffer-to-switch "Switch to buffer: ") nil nil)) |
| 5954 | (let ((buffer (window-normalize-buffer-to-switch-to buffer-or-name))) | 5952 | (let ((buffer (window-normalize-buffer-to-switch-to buffer-or-name))) |
| 5955 | (if (null force-same-window) | 5953 | (if (null force-same-window) |
| 5956 | (pop-to-buffer buffer-or-name | 5954 | (pop-to-buffer |
| 5957 | '(same-window (reuse-window-dedicated . weak)) | 5955 | buffer '(same-window (reuse-window-dedicated . weak)) |
| 5958 | norecord nil) | 5956 | norecord 'switch-to-buffer) |
| 5959 | (cond | 5957 | (cond |
| 5960 | ;; Don't call set-window-buffer if it's not needed since it | 5958 | ;; Don't call set-window-buffer if it's not needed since it |
| 5961 | ;; might signal an error (e.g. if the window is dedicated). | 5959 | ;; might signal an error (e.g. if the window is dedicated). |
| 5962 | ((eq buffer (window-buffer)) nil) | 5960 | ((eq buffer (window-buffer))) |
| 5963 | ((window-minibuffer-p) | 5961 | ((window-minibuffer-p) |
| 5964 | (error "Cannot switch buffers in minibuffer window")) | 5962 | (error "Cannot switch buffers in minibuffer window")) |
| 5965 | ((eq (window-dedicated-p) t) | 5963 | ((eq (window-dedicated-p) t) |
diff --git a/src/ChangeLog b/src/ChangeLog index 493b3277f52..b3d9eca469e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | 2011-07-14 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-07-17 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | Integer signedness and overflow and related fixes. (Bug#9079) | 3 | Integer signedness and overflow and related fixes. (Bug#9079) |
| 4 | 4 | ||
| @@ -197,6 +197,47 @@ | |||
| 197 | Use EMACS_INT, not EMACS_UINT, for sizes. The code works equally | 197 | Use EMACS_INT, not EMACS_UINT, for sizes. The code works equally |
| 198 | well either way, and we prefer signed to unsigned. | 198 | well either way, and we prefer signed to unsigned. |
| 199 | 199 | ||
| 200 | 2011-07-16 Juanma Barranquero <lekktu@gmail.com> | ||
| 201 | |||
| 202 | * makefile.w32-in (GLOBAL_SOURCES): Add gnutls.c (followup to bug#9059). | ||
| 203 | |||
| 204 | 2011-07-16 Paul Eggert <eggert@cs.ucla.edu> | ||
| 205 | |||
| 206 | * fileio.c (Fcopy_file): Don't diagnose fchown failures. (Bug#9002) | ||
| 207 | |||
| 208 | 2011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 209 | |||
| 210 | * gnutls.c (syms_of_gnutls): Define `gnutls-log-level' here, since | ||
| 211 | it's used from the C level. | ||
| 212 | |||
| 213 | * process.c: Use the same condition for POLL_FOR_INPUT in both | ||
| 214 | keyboard.c and process.c (bug#1858). | ||
| 215 | |||
| 216 | 2011-07-09 Lawrence Mitchell <wence@gmx.li> | ||
| 217 | |||
| 218 | * gnutls.c (Qgnutls_bootprop_min_prime_bits): New variable. | ||
| 219 | (Fgnutls_boot): Use it. | ||
| 220 | |||
| 221 | 2011-07-15 Andreas Schwab <schwab@linux-m68k.org> | ||
| 222 | |||
| 223 | * doc.c (Fsubstitute_command_keys): Revert last change. | ||
| 224 | |||
| 225 | 2011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 226 | |||
| 227 | * doc.c (Fsubstitute_command_keys): Clarify that \= really only | ||
| 228 | quotes the next character, and doesn't affect other longer | ||
| 229 | sequences (bug#8935). | ||
| 230 | |||
| 231 | * lread.c (syms_of_lread): Clarify that is isn't only | ||
| 232 | `eval-buffer' and `eval-defun' that's affected by | ||
| 233 | `lexical-binding' (bug#8460). | ||
| 234 | |||
| 235 | 2011-07-15 Eli Zaretskii <eliz@gnu.org> | ||
| 236 | |||
| 237 | * xdisp.c (move_it_in_display_line_to): Fix vertical motion with | ||
| 238 | bidi redisplay when a line includes both an image and is | ||
| 239 | truncated. | ||
| 240 | |||
| 200 | 2011-07-14 Paul Eggert <eggert@cs.ucla.edu> | 241 | 2011-07-14 Paul Eggert <eggert@cs.ucla.edu> |
| 201 | 242 | ||
| 202 | Fix minor problems found by static checking. | 243 | Fix minor problems found by static checking. |
| @@ -211,9 +252,6 @@ | |||
| 211 | 252 | ||
| 212 | 2011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> | 253 | 2011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 213 | 254 | ||
| 214 | * data.c (Fcdr, Fcar): Revert the last change, since it didn't | ||
| 215 | really clarify much. | ||
| 216 | |||
| 217 | * search.c (Fre_search_backward): Mention `case-fold-search' in | 255 | * search.c (Fre_search_backward): Mention `case-fold-search' in |
| 218 | all the re_search_* functions (bug#8138). | 256 | all the re_search_* functions (bug#8138). |
| 219 | 257 | ||
diff --git a/src/fileio.c b/src/fileio.c index d4fb0383119..c67bea79bd3 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -1959,8 +1959,8 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */) | |||
| 1959 | owner and group. */ | 1959 | owner and group. */ |
| 1960 | if (input_file_statable_p) | 1960 | if (input_file_statable_p) |
| 1961 | { | 1961 | { |
| 1962 | if (!NILP (preserve_uid_gid) && fchown (ofd, st.st_uid, st.st_gid) != 0) | 1962 | if (!NILP (preserve_uid_gid)) |
| 1963 | report_file_error ("Doing chown", Fcons (newname, Qnil)); | 1963 | fchown (ofd, st.st_uid, st.st_gid); |
| 1964 | if (fchmod (ofd, st.st_mode & 07777) != 0) | 1964 | if (fchmod (ofd, st.st_mode & 07777) != 0) |
| 1965 | report_file_error ("Doing chmod", Fcons (newname, Qnil)); | 1965 | report_file_error ("Doing chmod", Fcons (newname, Qnil)); |
| 1966 | } | 1966 | } |
diff --git a/src/gnutls.c b/src/gnutls.c index 3761951b866..52e80a69ae5 100644 --- a/src/gnutls.c +++ b/src/gnutls.c | |||
| @@ -35,7 +35,6 @@ static int | |||
| 35 | emacs_gnutls_handle_error (gnutls_session_t, int err); | 35 | emacs_gnutls_handle_error (gnutls_session_t, int err); |
| 36 | 36 | ||
| 37 | static Lisp_Object Qgnutls_dll; | 37 | static Lisp_Object Qgnutls_dll; |
| 38 | static Lisp_Object Qgnutls_log_level; | ||
| 39 | static Lisp_Object Qgnutls_code; | 38 | static Lisp_Object Qgnutls_code; |
| 40 | static Lisp_Object Qgnutls_anon, Qgnutls_x509pki; | 39 | static Lisp_Object Qgnutls_anon, Qgnutls_x509pki; |
| 41 | static Lisp_Object Qgnutls_e_interrupted, Qgnutls_e_again, | 40 | static Lisp_Object Qgnutls_e_interrupted, Qgnutls_e_again, |
| @@ -50,6 +49,7 @@ static Lisp_Object Qgnutls_bootprop_crlfiles; | |||
| 50 | static Lisp_Object Qgnutls_bootprop_callbacks; | 49 | static Lisp_Object Qgnutls_bootprop_callbacks; |
| 51 | static Lisp_Object Qgnutls_bootprop_loglevel; | 50 | static Lisp_Object Qgnutls_bootprop_loglevel; |
| 52 | static Lisp_Object Qgnutls_bootprop_hostname; | 51 | static Lisp_Object Qgnutls_bootprop_hostname; |
| 52 | static Lisp_Object Qgnutls_bootprop_min_prime_bits; | ||
| 53 | static Lisp_Object Qgnutls_bootprop_verify_flags; | 53 | static Lisp_Object Qgnutls_bootprop_verify_flags; |
| 54 | static Lisp_Object Qgnutls_bootprop_verify_hostname_error; | 54 | static Lisp_Object Qgnutls_bootprop_verify_hostname_error; |
| 55 | 55 | ||
| @@ -105,6 +105,8 @@ DEF_GNUTLS_FN (int, gnutls_certificate_verify_peers2, | |||
| 105 | DEF_GNUTLS_FN (int, gnutls_credentials_set, | 105 | DEF_GNUTLS_FN (int, gnutls_credentials_set, |
| 106 | (gnutls_session_t, gnutls_credentials_type_t, void *)); | 106 | (gnutls_session_t, gnutls_credentials_type_t, void *)); |
| 107 | DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t)); | 107 | DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t)); |
| 108 | DEF_GNUTLS_FN (void, gnutls_dh_set_prime_bits, | ||
| 109 | (gnutls_session_t, unsigned int)); | ||
| 108 | DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int)); | 110 | DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int)); |
| 109 | DEF_GNUTLS_FN (int, gnutls_global_init, (void)); | 111 | DEF_GNUTLS_FN (int, gnutls_global_init, (void)); |
| 110 | DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func)); | 112 | DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func)); |
| @@ -143,7 +145,6 @@ static int | |||
| 143 | init_gnutls_functions (Lisp_Object libraries) | 145 | init_gnutls_functions (Lisp_Object libraries) |
| 144 | { | 146 | { |
| 145 | HMODULE library; | 147 | HMODULE library; |
| 146 | Lisp_Object gnutls_log_level = Fsymbol_value (Qgnutls_log_level); | ||
| 147 | int max_log_level = 1; | 148 | int max_log_level = 1; |
| 148 | 149 | ||
| 149 | if (!(library = w32_delayed_load (libraries, Qgnutls_dll))) | 150 | if (!(library = w32_delayed_load (libraries, Qgnutls_dll))) |
| @@ -169,6 +170,7 @@ init_gnutls_functions (Lisp_Object libraries) | |||
| 169 | LOAD_GNUTLS_FN (library, gnutls_certificate_verify_peers2); | 170 | LOAD_GNUTLS_FN (library, gnutls_certificate_verify_peers2); |
| 170 | LOAD_GNUTLS_FN (library, gnutls_credentials_set); | 171 | LOAD_GNUTLS_FN (library, gnutls_credentials_set); |
| 171 | LOAD_GNUTLS_FN (library, gnutls_deinit); | 172 | LOAD_GNUTLS_FN (library, gnutls_deinit); |
| 173 | LOAD_GNUTLS_FN (library, gnutls_dh_set_prime_bits); | ||
| 172 | LOAD_GNUTLS_FN (library, gnutls_error_is_fatal); | 174 | LOAD_GNUTLS_FN (library, gnutls_error_is_fatal); |
| 173 | LOAD_GNUTLS_FN (library, gnutls_global_init); | 175 | LOAD_GNUTLS_FN (library, gnutls_global_init); |
| 174 | LOAD_GNUTLS_FN (library, gnutls_global_set_log_function); | 176 | LOAD_GNUTLS_FN (library, gnutls_global_set_log_function); |
| @@ -191,8 +193,8 @@ init_gnutls_functions (Lisp_Object libraries) | |||
| 191 | LOAD_GNUTLS_FN (library, gnutls_x509_crt_import); | 193 | LOAD_GNUTLS_FN (library, gnutls_x509_crt_import); |
| 192 | LOAD_GNUTLS_FN (library, gnutls_x509_crt_init); | 194 | LOAD_GNUTLS_FN (library, gnutls_x509_crt_init); |
| 193 | 195 | ||
| 194 | if (NUMBERP (gnutls_log_level)) | 196 | if (NUMBERP (Vgnutls_log_level)) |
| 195 | max_log_level = XINT (gnutls_log_level); | 197 | max_log_level = XINT (Vgnutls_log_level); |
| 196 | 198 | ||
| 197 | GNUTLS_LOG2 (1, max_log_level, "GnuTLS library loaded:", | 199 | GNUTLS_LOG2 (1, max_log_level, "GnuTLS library loaded:", |
| 198 | SDATA (Fget (Qgnutls_dll, QCloaded_from))); | 200 | SDATA (Fget (Qgnutls_dll, QCloaded_from))); |
| @@ -218,6 +220,7 @@ init_gnutls_functions (Lisp_Object libraries) | |||
| 218 | #define fn_gnutls_certificate_verify_peers2 gnutls_certificate_verify_peers2 | 220 | #define fn_gnutls_certificate_verify_peers2 gnutls_certificate_verify_peers2 |
| 219 | #define fn_gnutls_credentials_set gnutls_credentials_set | 221 | #define fn_gnutls_credentials_set gnutls_credentials_set |
| 220 | #define fn_gnutls_deinit gnutls_deinit | 222 | #define fn_gnutls_deinit gnutls_deinit |
| 223 | #define fn_gnutls_dh_set_prime_bits gnutls_dh_set_prime_bits | ||
| 221 | #define fn_gnutls_error_is_fatal gnutls_error_is_fatal | 224 | #define fn_gnutls_error_is_fatal gnutls_error_is_fatal |
| 222 | #define fn_gnutls_global_init gnutls_global_init | 225 | #define fn_gnutls_global_init gnutls_global_init |
| 223 | #define fn_gnutls_global_set_log_function gnutls_global_set_log_function | 226 | #define fn_gnutls_global_set_log_function gnutls_global_set_log_function |
| @@ -394,7 +397,6 @@ emacs_gnutls_read (struct Lisp_Process *proc, char *buf, EMACS_INT nbyte) | |||
| 394 | static int | 397 | static int |
| 395 | emacs_gnutls_handle_error (gnutls_session_t session, int err) | 398 | emacs_gnutls_handle_error (gnutls_session_t session, int err) |
| 396 | { | 399 | { |
| 397 | Lisp_Object gnutls_log_level = Fsymbol_value (Qgnutls_log_level); | ||
| 398 | int max_log_level = 0; | 400 | int max_log_level = 0; |
| 399 | 401 | ||
| 400 | int ret; | 402 | int ret; |
| @@ -404,8 +406,8 @@ emacs_gnutls_handle_error (gnutls_session_t session, int err) | |||
| 404 | if (err >= 0) | 406 | if (err >= 0) |
| 405 | return 0; | 407 | return 0; |
| 406 | 408 | ||
| 407 | if (NUMBERP (gnutls_log_level)) | 409 | if (NUMBERP (Vgnutls_log_level)) |
| 408 | max_log_level = XINT (gnutls_log_level); | 410 | max_log_level = XINT (Vgnutls_log_level); |
| 409 | 411 | ||
| 410 | /* TODO: use gnutls-error-fatalp and gnutls-error-string. */ | 412 | /* TODO: use gnutls-error-fatalp and gnutls-error-string. */ |
| 411 | 413 | ||
| @@ -646,6 +648,9 @@ gnutls_certificate_set_verify_flags. | |||
| 646 | :verify-hostname-error, if non-nil, makes a hostname mismatch an | 648 | :verify-hostname-error, if non-nil, makes a hostname mismatch an |
| 647 | error. Otherwise it will be just a warning. | 649 | error. Otherwise it will be just a warning. |
| 648 | 650 | ||
| 651 | :min-prime-bits is the minimum accepted number of bits the client will | ||
| 652 | accept in Diffie-Hellman key exchange. | ||
| 653 | |||
| 649 | The debug level will be set for this process AND globally for GnuTLS. | 654 | The debug level will be set for this process AND globally for GnuTLS. |
| 650 | So if you set it higher or lower at any point, it affects global | 655 | So if you set it higher or lower at any point, it affects global |
| 651 | debugging. | 656 | debugging. |
| @@ -698,6 +703,7 @@ one trustfile (usually a CA bundle). */) | |||
| 698 | Lisp_Object verify_flags; | 703 | Lisp_Object verify_flags; |
| 699 | /* Lisp_Object verify_error; */ | 704 | /* Lisp_Object verify_error; */ |
| 700 | Lisp_Object verify_hostname_error; | 705 | Lisp_Object verify_hostname_error; |
| 706 | Lisp_Object prime_bits; | ||
| 701 | 707 | ||
| 702 | CHECK_PROCESS (proc); | 708 | CHECK_PROCESS (proc); |
| 703 | CHECK_SYMBOL (type); | 709 | CHECK_SYMBOL (type); |
| @@ -719,6 +725,7 @@ one trustfile (usually a CA bundle). */) | |||
| 719 | verify_flags = Fplist_get (proplist, Qgnutls_bootprop_verify_flags); | 725 | verify_flags = Fplist_get (proplist, Qgnutls_bootprop_verify_flags); |
| 720 | /* verify_error = Fplist_get (proplist, Qgnutls_bootprop_verify_error); */ | 726 | /* verify_error = Fplist_get (proplist, Qgnutls_bootprop_verify_error); */ |
| 721 | verify_hostname_error = Fplist_get (proplist, Qgnutls_bootprop_verify_hostname_error); | 727 | verify_hostname_error = Fplist_get (proplist, Qgnutls_bootprop_verify_hostname_error); |
| 728 | prime_bits = Fplist_get (proplist, Qgnutls_bootprop_min_prime_bits); | ||
| 722 | 729 | ||
| 723 | if (!STRINGP (hostname)) | 730 | if (!STRINGP (hostname)) |
| 724 | error ("gnutls-boot: invalid :hostname parameter"); | 731 | error ("gnutls-boot: invalid :hostname parameter"); |
| @@ -936,6 +943,11 @@ one trustfile (usually a CA bundle). */) | |||
| 936 | 943 | ||
| 937 | GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_PRIORITY; | 944 | GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_PRIORITY; |
| 938 | 945 | ||
| 946 | if (!EQ (prime_bits, Qnil)) | ||
| 947 | { | ||
| 948 | fn_gnutls_dh_set_prime_bits (state, XUINT (prime_bits)); | ||
| 949 | } | ||
| 950 | |||
| 939 | if (EQ (type, Qgnutls_x509pki)) | 951 | if (EQ (type, Qgnutls_x509pki)) |
| 940 | { | 952 | { |
| 941 | ret = fn_gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred); | 953 | ret = fn_gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred); |
| @@ -1103,7 +1115,6 @@ syms_of_gnutls (void) | |||
| 1103 | gnutls_global_initialized = 0; | 1115 | gnutls_global_initialized = 0; |
| 1104 | 1116 | ||
| 1105 | DEFSYM (Qgnutls_dll, "gnutls"); | 1117 | DEFSYM (Qgnutls_dll, "gnutls"); |
| 1106 | DEFSYM (Qgnutls_log_level, "gnutls-log-level"); | ||
| 1107 | DEFSYM (Qgnutls_code, "gnutls-code"); | 1118 | DEFSYM (Qgnutls_code, "gnutls-code"); |
| 1108 | DEFSYM (Qgnutls_anon, "gnutls-anon"); | 1119 | DEFSYM (Qgnutls_anon, "gnutls-anon"); |
| 1109 | DEFSYM (Qgnutls_x509pki, "gnutls-x509pki"); | 1120 | DEFSYM (Qgnutls_x509pki, "gnutls-x509pki"); |
| @@ -1114,6 +1125,7 @@ syms_of_gnutls (void) | |||
| 1114 | DEFSYM (Qgnutls_bootprop_crlfiles, ":crlfiles"); | 1125 | DEFSYM (Qgnutls_bootprop_crlfiles, ":crlfiles"); |
| 1115 | DEFSYM (Qgnutls_bootprop_callbacks, ":callbacks"); | 1126 | DEFSYM (Qgnutls_bootprop_callbacks, ":callbacks"); |
| 1116 | DEFSYM (Qgnutls_bootprop_callbacks_verify, "verify"); | 1127 | DEFSYM (Qgnutls_bootprop_callbacks_verify, "verify"); |
| 1128 | DEFSYM (Qgnutls_bootprop_min_prime_bits, ":min-prime-bits"); | ||
| 1117 | DEFSYM (Qgnutls_bootprop_loglevel, ":loglevel"); | 1129 | DEFSYM (Qgnutls_bootprop_loglevel, ":loglevel"); |
| 1118 | DEFSYM (Qgnutls_bootprop_verify_flags, ":verify-flags"); | 1130 | DEFSYM (Qgnutls_bootprop_verify_flags, ":verify-flags"); |
| 1119 | DEFSYM (Qgnutls_bootprop_verify_hostname_error, ":verify-hostname-error"); | 1131 | DEFSYM (Qgnutls_bootprop_verify_hostname_error, ":verify-hostname-error"); |
| @@ -1142,6 +1154,10 @@ syms_of_gnutls (void) | |||
| 1142 | defsubr (&Sgnutls_deinit); | 1154 | defsubr (&Sgnutls_deinit); |
| 1143 | defsubr (&Sgnutls_bye); | 1155 | defsubr (&Sgnutls_bye); |
| 1144 | defsubr (&Sgnutls_available_p); | 1156 | defsubr (&Sgnutls_available_p); |
| 1157 | |||
| 1158 | DEFVAR_INT ("gnutls-log-level", Vgnutls_log_level, | ||
| 1159 | doc: /* Logging level used by the GnuTLS functions. */); | ||
| 1160 | Vgnutls_log_level = make_number (0); | ||
| 1145 | } | 1161 | } |
| 1146 | 1162 | ||
| 1147 | #endif /* HAVE_GNUTLS */ | 1163 | #endif /* HAVE_GNUTLS */ |
diff --git a/src/lread.c b/src/lread.c index bef1cc8e591..c80ac430671 100644 --- a/src/lread.c +++ b/src/lread.c | |||
| @@ -4491,9 +4491,11 @@ to load. See also `load-dangerous-libraries'. */); | |||
| 4491 | staticpro (&Qlexical_binding); | 4491 | staticpro (&Qlexical_binding); |
| 4492 | DEFVAR_LISP ("lexical-binding", Vlexical_binding, | 4492 | DEFVAR_LISP ("lexical-binding", Vlexical_binding, |
| 4493 | doc: /* If non-nil, use lexical binding when evaluating code. | 4493 | doc: /* If non-nil, use lexical binding when evaluating code. |
| 4494 | This only applies to code evaluated by `eval-buffer' and `eval-region'. | 4494 | This applies to code evaluated by `eval-buffer' and `eval-region' and |
| 4495 | This variable is automatically set from the file variables of an interpreted | 4495 | other commands that call these functions, like `eval-defun' and |
| 4496 | Lisp file read using `load'. */); | 4496 | the like. |
| 4497 | This variable is automatically set from the file variables of an | ||
| 4498 | interpreted Lisp file read using `load'. */); | ||
| 4497 | Fmake_variable_buffer_local (Qlexical_binding); | 4499 | Fmake_variable_buffer_local (Qlexical_binding); |
| 4498 | 4500 | ||
| 4499 | DEFVAR_LISP ("eval-buffer-list", Veval_buffer_list, | 4501 | DEFVAR_LISP ("eval-buffer-list", Veval_buffer_list, |
diff --git a/src/makefile.w32-in b/src/makefile.w32-in index 88b53554925..fd29dec9096 100644 --- a/src/makefile.w32-in +++ b/src/makefile.w32-in | |||
| @@ -221,7 +221,8 @@ GLOBAL_SOURCES = dosfns.c msdos.c \ | |||
| 221 | syntax.c bytecode.c \ | 221 | syntax.c bytecode.c \ |
| 222 | process.c callproc.c unexw32.c \ | 222 | process.c callproc.c unexw32.c \ |
| 223 | region-cache.c sound.c atimer.c \ | 223 | region-cache.c sound.c atimer.c \ |
| 224 | doprnt.c intervals.c textprop.c composite.c | 224 | doprnt.c intervals.c textprop.c composite.c \ |
| 225 | gnutls.c | ||
| 225 | SOME_MACHINE_OBJECTS = dosfns.o msdos.o \ | 226 | SOME_MACHINE_OBJECTS = dosfns.o msdos.o \ |
| 226 | xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o dbusbind.o | 227 | xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o dbusbind.o |
| 227 | obj = $(GLOBAL_SOURCES:.c=.o) | 228 | obj = $(GLOBAL_SOURCES:.c=.o) |
diff --git a/src/process.c b/src/process.c index 1a884357b86..236c27e5c3a 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -245,7 +245,7 @@ static void create_pty (Lisp_Object); | |||
| 245 | 245 | ||
| 246 | /* If we support a window system, turn on the code to poll periodically | 246 | /* If we support a window system, turn on the code to poll periodically |
| 247 | to detect C-g. It isn't actually used when doing interrupt input. */ | 247 | to detect C-g. It isn't actually used when doing interrupt input. */ |
| 248 | #ifdef HAVE_WINDOW_SYSTEM | 248 | #if defined(HAVE_WINDOW_SYSTEM) && !defined(USE_ASYNC_EVENTS) |
| 249 | #define POLL_FOR_INPUT | 249 | #define POLL_FOR_INPUT |
| 250 | #endif | 250 | #endif |
| 251 | 251 | ||
diff --git a/src/xdisp.c b/src/xdisp.c index 5285d945975..0352867941e 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -7928,7 +7928,14 @@ move_it_in_display_line_to (struct it *it, | |||
| 7928 | || IT_OVERFLOW_NEWLINE_INTO_FRINGE (it)) | 7928 | || IT_OVERFLOW_NEWLINE_INTO_FRINGE (it)) |
| 7929 | { | 7929 | { |
| 7930 | if (!get_next_display_element (it) | 7930 | if (!get_next_display_element (it) |
| 7931 | || BUFFER_POS_REACHED_P ()) | 7931 | || BUFFER_POS_REACHED_P () |
| 7932 | /* If we are past TO_CHARPOS, but never saw any | ||
| 7933 | character positions smaller than TO_CHARPOS, | ||
| 7934 | return MOVE_POS_MATCH_OR_ZV, like the | ||
| 7935 | unidirectional display did. */ | ||
| 7936 | || ((op & MOVE_TO_POS) != 0 | ||
| 7937 | && !saw_smaller_pos | ||
| 7938 | && IT_CHARPOS (*it) > to_charpos)) | ||
| 7932 | { | 7939 | { |
| 7933 | result = MOVE_POS_MATCH_OR_ZV; | 7940 | result = MOVE_POS_MATCH_OR_ZV; |
| 7934 | break; | 7941 | break; |
| @@ -7939,6 +7946,13 @@ move_it_in_display_line_to (struct it *it, | |||
| 7939 | break; | 7946 | break; |
| 7940 | } | 7947 | } |
| 7941 | } | 7948 | } |
| 7949 | else if ((op & MOVE_TO_POS) != 0 | ||
| 7950 | && !saw_smaller_pos | ||
| 7951 | && IT_CHARPOS (*it) > to_charpos) | ||
| 7952 | { | ||
| 7953 | result = MOVE_POS_MATCH_OR_ZV; | ||
| 7954 | break; | ||
| 7955 | } | ||
| 7942 | result = MOVE_LINE_TRUNCATED; | 7956 | result = MOVE_LINE_TRUNCATED; |
| 7943 | break; | 7957 | break; |
| 7944 | } | 7958 | } |