]> code.delx.au - gnu-emacs/commitdiff
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
authorMichael Albinus <michael.albinus@gmx.de>
Tue, 31 May 2016 18:01:02 +0000 (20:01 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Tue, 31 May 2016 18:01:02 +0000 (20:01 +0200)
22 files changed:
doc/emacs/trouble.texi
doc/misc/mh-e.texi
etc/NEWS
etc/TODO
lisp/ChangeLog.17
lisp/desktop.el
lisp/emacs-lisp/find-func.el
lisp/files.el
lisp/international/kinsoku.el
lisp/language/japan-util.el
lisp/mh-e/mh-compat.el
lisp/mh-e/mh-mime.el
lisp/mh-e/mh-show.el
lisp/mh-e/mh-thread.el
lisp/progmodes/elisp-mode.el
lisp/recentf.el
lisp/subr.el
msdos/sed1v2.inp
src/coding.c
src/dired.c
test/lisp/emulation/viper-tests.el
test/lisp/subr-tests.el

index 25f296e52c3bdd274f769f36918d1b6246d894ab..fbd13c8a58a2dd46e94ffd0c02f2d624f79ab081 100644 (file)
@@ -1133,7 +1133,8 @@ The patch itself.
 Use @samp{diff -u} to make your diffs.  Diffs without context are hard
 to install reliably.  More than that, they are hard to study; we must
 always study a patch to decide whether we want to install it.  Context
-format is better than contextless diffs, but we prefer we unified format.
+format is better than contextless diffs, but we prefer the unified
+format.
 
 If you have GNU diff, use @samp{diff -u -F'^[_a-zA-Z0-9$]\+ *('} when
 making diffs of C code.  This shows the name of the function that each
index c48e4a40ea91dd0362f82bc48b2682f7f195dd2d..2ff0dac35db973769ad725cf2bbb104380af06f8 100644 (file)
@@ -9,12 +9,12 @@
 @c %**end of header
 
 @c Version of the software and manual.
-@set VERSION 8.5
+@set VERSION 8.6
 @c Edition of the manual. It is either empty for the first edition or
 @c has the form ", nth Edition" (without the quotes).
 @set EDITION
-@set UPDATED 2013-03-02
-@set UPDATE-MONTH March, 2013
+@set UPDATED 2016-04-29
+@set UPDATE-MONTH April, 2016
 
 @c Other variables.
 @set MH-BOOK-HOME http://rand-mh.sourceforge.net/book/mh
@@ -2527,8 +2527,7 @@ in the @cite{The Gnus Manual}.
 @cindex HTML
 @cindex Gnus
 
-MH-E can display messages that have been sent in HTML@footnote{This
-feature depends on a version of Gnus that is at least 5.10.}. The
+MH-E can display messages that have been sent in HTML. The
 content of the message will appear in the MH-Show buffer as you would
 expect if the entire message is HTML, or there is an inline HTML body
 part. However, if there is an HTML body part that is an attachment,
@@ -2549,86 +2548,107 @@ based upon the presence of a known browser on your system. If you wish
 to use a different browser, then set this option accordingly. See the
 documentation for the browser you use for additional information on
 how to use it. In particular, find and disable the option to render
-images as this can tip off spammers that the email address they have
-used is valid.
+images, as displaying remote images can tip off spammers that the
+email address they have used is valid.
 
 @vindex mm-text-html-renderer
 
 If you're confused about which @code{mm-text-html-renderer} to use,
-here's a brief description of each, sorted by popularity, that
-includes the results of a quick poll of MH-E users from 2005-12-23.
+here's a brief description of each, sorted by name.
 
 @table @asis
+@cindex browser, @samp{gnus-w3m}
+@cindex @samp{gnus-w3m}
 @cindex browser, @samp{w3m}
 @cindex @samp{w3m}
-@kindex mouse-2
-@item @samp{w3m} 7
-The @samp{w3m} browser requires an external program. It's quick,
-produces pretty nice output, and best of all, it's the only browser
-that highlights links. These can be clicked with @kbd{mouse-2} to view
-the content of the link in @samp{w3m}. The @samp{w3m} browser handles
-tables well and actually respects the table's width parameter (which
-can cause text to wrap if the author didn't anticipate that the page
-would be viewed in Emacs).
+@item @samp{gnus-w3m}
+The @samp{gnus-w3m} browser requires an external program. It's quick,
+produces pretty nice output, and it highlights links. It renders
+@samp{&ndash;} and @samp{&reg;} okay. It sometimes fails to wrap lines
+properly. It always downloads remote images.
 @c -------------------------
-@cindex browser, @samp{w3m-standalone}
-@cindex @samp{w3m-standalone}
-@item @samp{w3m-standalone} 3
-This browser, along with @samp{nil} for the external browser, are the
-only choices that work without having to download a separate lisp
-package or external program. This browser is quick, but does not show
-links. It handles simple tables but some tables get rendered much
-wider than the Emacs frame. This browser was the only one not to
-handle the escape @samp{&ndash;} (it printed a @samp{?}), but it did
-render @samp{&reg;}.
+@cindex browser, @samp{html2text}
+@cindex @samp{html2text}
+@item @samp{html2text}
+The @samp{html2text} browser requires an external program. Some users
+have reported problems with it, such as filling the entire message as
+if it were one paragraph, or displaying chunks of raw HTML.
 @c -------------------------
 @cindex browser, @samp{links}
 @cindex @samp{links}
-@item @samp{links} 1
+@item @samp{links}
 The @samp{links} browser requires an external program. It's quick, and
 produces nicer output than @samp{lynx} on single column mails in
 tables. However, it doesn't show links and it doesn't do as nice a job
-on multi-column tables as some lines wrap. At least it fits in 80
-columns and thus seems better than @samp{w3} and
-@samp{w3m-standalone}. Converts escapes such as @samp{&reg;} to (R).
+on multi-column tables as some lines wrap. It does do a good job of
+fitting text within 80 columns. It appears to render special
+characters using ASCII equivalents. For example, @samp{&reg;} appears
+as (R). It does not download images.
 @c -------------------------
 @cindex browser, @samp{lynx}
 @cindex @samp{lynx}
-@item @samp{lynx} 1
+@item @samp{lynx}
 The @samp{lynx} browser requires an external program. It's quick and
 produces pretty decent output but it doesn't show links. It doesn't
 seem to do multi-column tables which makes output much cleaner. It
-centers the output and wraps long lines more than most. Handles
-@samp{&reg;}.
+centers the output and wraps long lines more than most. It does not
+always handle special characters like @samp{&reg;} or @samp{&ndash;}.
+It does not download images.
 @c -------------------------
-@item @samp{nil} 1
-This choice obviously requires an external browser. Like
-@samp{w3m-standalone}, it works out of the box. With this setting,
+@item @samp{nil}
+This choice obviously requires an external browser. With this setting,
 HTML messages have a button for the body part which you can view with
-@kbd{K v} (@code{mh-folder-toggle-mime-part}).
-@c -------------------------
-@cindex browser, @samp{w3}
-@cindex @samp{w3}
-@item @samp{w3} 0
-This choice does not require an external program as all of the
-rendering is done in lisp. You do need to get the package separately.
-This browser is @strong{slow}, and doesn't appear to have been updated
-since 2001 and the author hasn't responded to my emails. It displays
-unknown tags instead of hiding them, so you get to see all the
-Microsoft crap in certain messages. Tends to make multi-column tables
-wider than even a full-screen Emacs can handle. Like @samp{w3m}, you
-can follow links, but you have to find them first as they are not
-highlighted. Performs well on single-column tables and handles escapes
-such as @samp{&reg;}.
+@kbd{K v} (@code{mh-folder-toggle-mime-part}). Rendering of special
+characters and handling of remote images depends on your choice of
+browser.
+@c -------------------------
+@item @samp{shr}
+@cindex @samp{shr}
+This choice does not require an external program, but it does require
+that Emacs be configured at build time to use @samp{libxml2}. It is
+fairly quick, it highlights links, and it supports HTML color
+declarations. It renders @samp{&ndash;} and @samp{&reg;} okay. It
+sometimes truncates text, particularly if the message tries to have
+fancy text layout. By default it does not download images; this
+behavior is controlled by the options @code{mm-html-blocked-images}
+and @code{mm-html-inhibit-images}
+@ifinfo
+(@pxref{Display Customization,,,emacs-mime}).
+@end ifinfo
+@ifnotinfo
+(see section @uref{http://www.gnus.org/manual/emacs-mime_6.html,
+Display Customization} in the @cite{The Emacs MIME Manual}).
+@end ifnotinfo
 @c -------------------------
-@cindex browser, @samp{html2text}
-@cindex @samp{html2text}
-@item @samp{html2text} 0
-The @samp{html2text} browser requires an external program. I noticed
-that it can do some nasty things with simple HTML mails (like filling
-the entire message as if it were one paragraph, including signature).
-On another message, it displayed half of the HTML tags for some
-reason.
+@cindex browser, @samp{w3m}
+@cindex @samp{w3m}
+@kindex mouse-2
+@item @samp{w3m}
+The @samp{w3m} browser requires an external program. It's quick,
+produces pretty nice output, and it highlights links. These can be
+clicked with @kbd{mouse-2} to view the content of the link in
+@samp{w3m}. The @samp{w3m} browser handles tables well and actually
+respects the table's width parameter (which can cause text to wrap if
+the author didn't anticipate that the page would be viewed in Emacs).
+It does not download images by default; this behavior is controlled by
+the option @code{mm-w3m-safe-url-regexp}
+@ifinfo
+(@pxref{Display Customization,,,emacs-mime}).
+@end ifinfo
+@ifnotinfo
+(see section @uref{http://www.gnus.org/manual/emacs-mime_6.html,
+Display Customization} in the @cite{The Emacs MIME Manual}).
+@end ifnotinfo
+@c -------------------------
+@cindex browser, @samp{w3m-standalone}
+@cindex @samp{w3m-standalone}
+@cindex browser, @samp{w3m}
+@cindex @samp{w3m}
+@item @samp{w3m-standalone}
+This browser is quick, but does not show links. It handles simple
+tables but some tables get rendered much wider than the Emacs frame.
+This browser renders @samp{&ndash;} and @samp{&reg;} okay. It does not
+download images.
 @end table
 
 @vindex mm-text-html-renderer
@@ -2637,13 +2657,14 @@ For a couple more sources of information about
 @code{mm-text-html-renderer},
 @ifinfo
 @xref{Display Customization,,,emacs-mime}, and the documentation for
-the Gnus command @kbd{W h} (@pxref{Article Washing,,,gnus},).
+the Gnus command @kbd{W h} (@pxref{Article Washing,,,gnus}).
 @end ifinfo
 @ifnotinfo
 see section @uref{http://www.gnus.org/manual/emacs-mime_6.html,
 Display Customization} in the @cite{The Emacs MIME Manual} and the
 documentation for the Gnus command @kbd{W h} (see section
-@uref{http://www.gnus.org/manual/gnus_99.html, Article Washing} in the
+@uref{http://www.gnus.org/manual/gnus_48.html#Article-Washing, Article
+Washing} in the
 @cite{The Gnus Manual}).
 @end ifnotinfo
 
index 80b8036bbd1451f36b503aa6877cd6abbbfa9623..a72be53d0f36b6081ac1623c01c236ee53046c9b 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -854,6 +854,10 @@ recommended to do this as soon as you have firmly upgraded to Emacs
 25.1 (or later).  Should you ever need to downgrade your desktop file
 to version 206, you can do this with 'C-u C-u M-x desktop-save'.
 
+---
+*** desktop-restore-in-current-display now defaults to t, not nil.
+That is, Emacs by default now restores frames into the current display.
+
 +++
 ** New function 'bookmark-set-no-overwrite' bound to 'C-x r M'.
 It raises an error if a bookmark of that name already exists,
index 599e74a442cdff50bb9463117a56e82d5928e968..fe0e2ac2e06985b837cc3ec0efc462d5c224fb5e 100644 (file)
--- a/etc/TODO
+++ b/etc/TODO
@@ -1403,10 +1403,6 @@ elements
 **** In rng-valid, instead of using modification-hooks and
 insert-behind-hooks on dependent overlays, use same technique as nxml-mode.
 
-**** Port to XEmacs.  Issues include: Unicode (XEmacs seems to be based on
-Mule-UCS); overlays/text properties vs extents; absence of
-fontification-functions hook.
-
 *** Fontification
 
 **** Allow face to depend on element qname, attribute qname, attribute
index 2f1957ad0caeea71a7e9105eb1a902bd5c8673c4..f0b2651f870a760e5aeddd07fdd8973a69ff27ca 100644 (file)
        * net/tramp.el (tramp-read-passwd): Ignore errors from `auth-source-*'.
 
        * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): Use "\n"
-       as end-of-line delimeter for passwords, when running on MS Windows.
+       as end-of-line delimiter for passwords, when running on MS Windows.
 
 2014-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 
index dba3277c0911e3f1e92c57373382de892586b095..1f460b7a3ede4f9537f5a530cd8009300e225544 100644 (file)
@@ -408,7 +408,7 @@ See related options `desktop-restore-reuses-frames',
   :group 'desktop
   :version "24.4")
 
-(defcustom desktop-restore-in-current-display nil
+(defcustom desktop-restore-in-current-display t
   "Controls how restoring of frames treats displays.
 If t, restores frames into the current display.
 If nil, restores frames into their original displays (if possible).
index 71437ce89bd4edf9ae971111bbe4c2be2bd36296..4a7b7109106dfb69e9a295a06730167b16c233d9 100644 (file)
@@ -404,8 +404,10 @@ signal an error.
 
 If VERBOSE is non-nil, and FUNCTION is an alias, display a
 message about the whole chain of aliases."
-  (let ((def (if (symbolp function)
-                 (find-function-advised-original function)))
+  (let ((def (when (symbolp function)
+               (or (fboundp function)
+                   (signal 'void-function (list function)))
+               (find-function-advised-original function)))
         aliases)
     ;; FIXME for completeness, it might be nice to print something like:
     ;; foo (which is advised), which is an alias for bar (which is advised).
index b737c1015883c43854e9877d3ddd03361c3a47c6..db274e2782de83900d703d2ff8b58ff27089bbe6 100644 (file)
@@ -4320,8 +4320,8 @@ the group would be preserved too."
 
 (defun file-name-sans-extension (filename)
   "Return FILENAME sans final \"extension\".
-The extension, in a file name, is the part that follows the last `.',
-except that a leading `.', if any, doesn't count."
+The extension, in a file name, is the part that begins with the last `.',
+except that a leading `.' of the file name, if there is one, doesn't count."
   (save-match-data
     (let ((file (file-name-sans-versions (file-name-nondirectory filename)))
          directory)
@@ -4336,15 +4336,16 @@ except that a leading `.', if any, doesn't count."
 
 (defun file-name-extension (filename &optional period)
   "Return FILENAME's final \"extension\".
-The extension, in a file name, is the part that follows the last `.',
-excluding version numbers and backup suffixes,
-except that a leading `.', if any, doesn't count.
+The extension, in a file name, is the part that begins with the last `.',
+excluding version numbers and backup suffixes, except that a leading `.'
+of the file name, if there is one, doesn't count.
 Return nil for extensionless file names such as `foo'.
 Return the empty string for file names such as `foo.'.
 
-If PERIOD is non-nil, then the returned value includes the period
-that delimits the extension, and if FILENAME has no extension,
-the value is \"\"."
+By default, the returned value excludes the period that starts the
+extension, but if the optional argument PERIOD is non-nil, the period
+is included in the value, and in that case, if FILENAME has no
+extension, the value is \"\"."
   (save-match-data
     (let ((file (file-name-sans-versions (file-name-nondirectory filename))))
       (if (and (string-match "\\.[^.]*\\'" file)
index e9609f493b74edbd5233d9a3481b045a58c42ff7..f5824d486bffbf3327b0bb1a84a1be017b987183 100644 (file)
@@ -104,10 +104,10 @@ The value 0 means there's no limitation.")
         ;; JISX0201 Katakana
         "\e(I"\e(B"
         ;; Japanese JISX0208
-        "\e$B!F!H!J!L!N!P!R!T!V!X!Z!k!l!m!n!w!x\e(B\
-\e$A!.!0#"#(!2!4!6!8!:!<!>!c!d!e#@!f!l\e(B"
+        "\e$B!F!H!J!L!N!P!R!T!V!X!Z!k!l!m!n!w!x\e(B"
         ;; Chinese GB2312
-        "\e$A(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(h\e(B\
+         "\e$A!.!0#"#(!2!4!6!8!:!<!>!c!d!e#@!f!l\e(B\
+\e$A(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(h\e(B\
 \\e$(0!>!@!B!D!F!H!J!L!N!P!R!T!V!X!Z!\!^!`!b\e(B"
         ;; Chinese BIG5
         "\e$(0!d!f!h!j!k!q!p"i"j"k"n"x$u$v$w$x$y$z${\e(B\
index f0d817b8b5e263a5c4c212ef73b8aad89fa10570..939b70ab91120d06227a5c5f5b04aacbb491501c 100644 (file)
@@ -57,6 +57,7 @@
     (?\e$B$C\e(B ?\e$B%C\e(B ?\e(I/\e(B)
     (?\e$B$c\e(B ?\e$B%c\e(B ?\e(I,\e(B) (?\e$B$e\e(B ?\e$B%e\e(B ?\e(I-\e(B) (?\e$B$g\e(B ?\e$B%g\e(B ?\e(I.\e(B)
     (?\e$B$n\e(B ?\e$B%n\e(B "\e(I\\e(B")
+    (?\e$B!5\e(B ?\e$B!3\e(B) (?\e$B!6\e(B ?\e$B!4\e(B)
     ("\e$B$&!+\e(B" ?\e$B%t\e(B "\e(I3^\e(B") (nil ?\e$B%u\e(B "\e(I6\e(B") (nil ?\e$B%v\e(B "\e(I9\e(B"))
   "Japanese JISX0208 Kana character table.
 Each element is of the form (HIRAGANA KATAKANA HANKAKU-KATAKANA), where
@@ -146,7 +147,7 @@ and HANKAKU belongs to `japanese-jisx0201-kana'.")
     (?\e$B#p\e(B . ?p) (?\e$B#q\e(B . ?q) (?\e$B#r\e(B . ?r) (?\e$B#s\e(B . ?s) (?\e$B#t\e(B . ?t)
     (?\e$B#u\e(B . ?u) (?\e$B#v\e(B . ?v) (?\e$B#w\e(B . ?w) (?\e$B#x\e(B . ?x) (?\e$B#y\e(B . ?y) (?\e$B#z\e(B . ?z))
   "Japanese JISX0208 alpha numeric character table.
-Each element is of the form (ALPHA-NUMERIC ASCII), where ALPHA-NUMERIC
+Each element is of the form (ALPHA-NUMERIC ASCII), where ALPHA-NUMERIC
 belongs to `japanese-jisx0208', ASCII belongs to `ascii'.")
 
 ;; Put properties 'jisx0208 and 'ascii to each Japanese alpha numeric
index 10a8b6e219c21a2916e4b85be5664d424e499ef2..21ff5cb2cb8d9be280626fa319d3e02fe61446b4 100644 (file)
@@ -75,11 +75,24 @@ introduced in Emacs 22."
       'cancel-timer
     'delete-itimer))
 
-;; Emacs 24 renamed flet to cl-flet.
-(defalias 'mh-cl-flet
-  (if (fboundp 'cl-flet)
-      'cl-flet
-    'flet))
+;; Emacs 24 made flet obsolete and suggested either cl-flet or
+;; cl-letf. This macro is based upon gmm-flet from Gnus.
+(defmacro mh-flet (bindings &rest body)
+  "Make temporary overriding function definitions.
+This is an analogue of a dynamically scoped `let' that operates on
+the function cell of FUNCs rather than their value cell.
+
+\(fn ((FUNC ARGLIST BODY...) ...) FORM...)"
+  (if (fboundp 'cl-letf)
+      `(cl-letf ,(mapcar (lambda (binding)
+                           `((symbol-function ',(car binding))
+                             (lambda ,@(cdr binding))))
+                         bindings)
+         ,@body)
+    `(flet ,bindings ,@body)))
+(put 'mh-flet 'lisp-indent-function 1)
+(put 'mh-flet 'edebug-form-spec
+     '((&rest (sexp sexp &rest form)) &rest form))
 
 (defun mh-display-color-cells (&optional display)
   "Return the number of color cells supported by DISPLAY.
index df3a42ec0f7fead26a87ff6d5855f5716167036a..b8d700ddf5f73f491a15f188977752a62fc2f3e2 100644 (file)
@@ -268,7 +268,7 @@ usually reads the file \"/etc/mailcap\"."
               (buffer-read-only nil))
          (when (string-match "^[^% \t]+$" method)
            (setq method (concat method " %s")))
-         (mh-cl-flet
+         (mh-flet
           ((mm-handle-set-external-undisplayer
             (handle function)
             (mh-handle-set-external-undisplayer folder handle function)))
@@ -525,7 +525,7 @@ parsed and then displayed."
   (let ((handles ())
         (folder mh-show-folder-buffer)
         (raw-message-data (buffer-string)))
-    (mh-cl-flet
+    (mh-flet
      ((mm-handle-set-external-undisplayer
        (handle function)
        (mh-handle-set-external-undisplayer folder handle function)))
@@ -1049,7 +1049,7 @@ attachment, the attachment is hidden."
         (function (get-text-property (point) 'mh-callback))
         (buffer-read-only nil)
         (folder mh-show-folder-buffer))
-    (mh-cl-flet
+    (mh-flet
      ((mm-handle-set-external-undisplayer
        (handle function)
        (mh-handle-set-external-undisplayer folder handle function)))
@@ -1070,7 +1070,7 @@ to click the MIME button."
           (mm-inline-media-tests mh-mm-inline-media-tests)
           (data (get-text-property (point) 'mh-data))
           (function (get-text-property (point) 'mh-callback)))
-      (mh-cl-flet
+      (mh-flet
        ((mm-handle-set-external-undisplayer
          (handle func)
          (mh-handle-set-external-undisplayer folder handle func)))
@@ -1166,7 +1166,7 @@ this ;-)"
 (defun mh-display-emphasis ()
   "Display graphical emphasis."
   (when (and mh-graphical-emphasis-flag (mh-small-show-buffer-p))
-    (mh-cl-flet
+    (mh-flet
      ((article-goto-body ()))      ; shadow this function to do nothing
      (save-excursion
        (goto-char (point-min))
index afe9812eea8ec6b4fed9db87d263613bb067cbb2..26e821696a8a0db2a81b812b19df8ffd07919496 100644 (file)
@@ -900,7 +900,7 @@ See also `mh-folder-mode'.
   (interactive)
   ;; Don't allow Gnus to create buttons while highlighting, maybe this is bad
   ;; style?
-  (mh-cl-flet
+  (mh-flet
    ((gnus-article-add-button (&rest args) nil))
    (let* ((modified (buffer-modified-p))
           (gnus-article-buffer (buffer-name))
index 5135e7e88fa555cee43c8baa36f1ba3abb9bee4d..e6acdba8b30507650b31f5ee646fe047f509ee4a 100644 (file)
@@ -647,7 +647,7 @@ Only information about messages in MSG-LIST are added to the tree."
 
 (defun mh-thread-set-tables (folder)
   "Use the tables of FOLDER in current buffer."
-  (mh-cl-flet
+  (mh-flet
    ((mh-get-table (symbol)
                   (with-current-buffer folder
                     (symbol-value symbol))))
index 2ad22ddd0ffc2632a45262d869e53afec187e5a1..f3607911aa10ca39ef72a9e8caa27855e3d4d408 100644 (file)
@@ -1566,7 +1566,8 @@ In the absence of INDEX, just call `eldoc-docstring-format-sym-doc'."
 ARGLIST is either a string, or a list of strings or symbols."
   (let ((str (cond ((stringp arglist) arglist)
                    ((not (listp arglist)) nil)
-                   (t (help--make-usage-docstring 'toto arglist)))))
+                   (t (substitute-command-keys
+                       (help--make-usage-docstring 'toto arglist))))))
     (if (and str (string-match "\\`([^ )]+ ?" str))
         (replace-match "(" t t str)
       str)))
index 3321f2fe1010e0f93cc14ba7402e4ac105626838..dc9489752fb56f6cf96e3db081548a1f7f95064f 100644 (file)
@@ -1186,6 +1186,9 @@ IGNORE other arguments."
            :format "%[%t\n%]"
            :help-echo ,(concat "Open " (cdr menu-element))
            :action recentf-open-files-action
+           ;; Override the (problematic) follow-link property of the
+           ;; `link' widget (bug#22434).
+           :follow-link nil
            ,(cdr menu-element))))
 
 (defun recentf-open-files-items (files)
index 6e679e70f7ef627cd1ebe9de3ff76451c21b9f40..b66ff288b7a755f2af015d66c1cf3fd7b1124bcf 100644 (file)
@@ -486,13 +486,16 @@ of course, also replace TO with a slightly larger value
       (list from)
     (or inc (setq inc 1))
     (when (zerop inc) (error "The increment can not be zero"))
-    (let (seq (n 0) (next from))
+    (let (seq (n 0) (next from) (last from))
       (if (> inc 0)
-          (while (<= next to)
+          ;; The (>= next last) condition protects against integer
+          ;; overflow in computing NEXT.
+          (while (and (>= next last) (<= next to))
             (setq seq (cons next seq)
                   n (1+ n)
+                  last next
                   next (+ from (* n inc))))
-        (while (>= next to)
+        (while (and (<= next last) (>= next to))
           (setq seq (cons next seq)
                 n (1+ n)
                 next (+ from (* n inc)))))
index 383105a3f304a07ba252a231ed6d91cf3978b09b..d0ab8afa2186e5c846d9dc5eca054a6f5da80c39 100644 (file)
@@ -155,7 +155,8 @@ s/ *@LIBXPM@//
 /^[Aa][Mm]_/s/@AM_V@/$(V)/
 /^[Aa][Mm]_/s/@AM_DEFAULT_V@/$(AM_DEFAULT_VERBOSITY)/
 /^AUTO_DEPEND *=/s/@AUTO_DEPEND@/yes/
-/^PAXCTL_if_present *=/s/=.*$/=@Rem/
+/^PAXCTL_dumped *=/s/=.*$/=/
+/^PAXCTL_notdumped *=/s/=.*$/=/
 /^lisp\.mk:/,/^$/c\
 lisp.mk: $(lispsource)/loadup.el\
        @rm -f $@\
@@ -174,7 +175,8 @@ lisp.mk: $(lispsource)/loadup.el\
 /^\$(leimdir)\/leim-list.el: /s/bootstrap-emacs\$(EXEEXT)/b-emacs$(EXEEXT)/
 /^     if test -f/,/^  fi$/c\
        command.com /c if exist .gdbinit rm -f _gdbinit
-/^      *\$(PAXCTL_if_present) -zex/d
+/^      *ifneq (\$(PAXCTL_notdumped),)/,/^      *endif/d
+/^      *ifneq (\$(PAXCTL_dumped),)/,/^         *endif/d
 /^      *ln /s/ln /cp /
 /^      *\$(SETFATTR_if_present) -n/d
 /^     fi/d
index 9d75ef931021bacac25d1eba00fed9703a52f436..a28fec1efe49cc77865cb6ef7d0274043f065114 100644 (file)
@@ -6947,18 +6947,21 @@ get_translation_table (Lisp_Object attrs, bool encodep, int *max_lookup)
 
 
 /* Return a translation of character(s) at BUF according to TRANS.
-   TRANS is TO-CHAR or ((FROM .  TO) ...) where
-   FROM = [FROM-CHAR ...], TO is TO-CHAR or [TO-CHAR ...].
-   The return value is TO-CHAR or ([FROM-CHAR ...] . TO) if a
-   translation is found, and Qnil if not found..
-   If BUF is too short to lookup characters in FROM, return Qt.  */
+   TRANS is TO-CHAR, [TO-CHAR ...], or ((FROM .  TO) ...) where FROM =
+   [FROM-CHAR ...], TO is TO-CHAR or [TO-CHAR ...].  The return value
+   is TO-CHAR or [TO-CHAR ...] if a translation is found, Qnil if not
+   found, or Qt if BUF is too short to lookup characters in FROM.  As
+   a side effect, if a translation is found, *NCHARS is set to the
+   number of characters being translated.  */
 
 static Lisp_Object
-get_translation (Lisp_Object trans, int *buf, int *buf_end)
+get_translation (Lisp_Object trans, int *buf, int *buf_end, ptrdiff_t *nchars)
 {
-
-  if (INTEGERP (trans))
-    return trans;
+  if (INTEGERP (trans) || VECTORP (trans))
+    {
+      *nchars = 1;
+      return trans;
+    }
   for (; CONSP (trans); trans = XCDR (trans))
     {
       Lisp_Object val = XCAR (trans);
@@ -6974,7 +6977,10 @@ get_translation (Lisp_Object trans, int *buf, int *buf_end)
            break;
        }
       if (i == len)
-       return val;
+       {
+         *nchars = len;
+         return XCDR (val);
+       }
     }
   return Qnil;
 }
@@ -7017,20 +7023,13 @@ produce_chars (struct coding_system *coding, Lisp_Object translation_table,
              LOOKUP_TRANSLATION_TABLE (translation_table, c, trans);
              if (! NILP (trans))
                {
-                 trans = get_translation (trans, buf, buf_end);
+                 trans = get_translation (trans, buf, buf_end, &from_nchars);
                  if (INTEGERP (trans))
                    c = XINT (trans);
-                 else if (CONSP (trans))
+                 else if (VECTORP (trans))
                    {
-                     from_nchars = ASIZE (XCAR (trans));
-                     trans = XCDR (trans);
-                     if (INTEGERP (trans))
-                       c = XINT (trans);
-                     else
-                       {
-                         to_nchars = ASIZE (trans);
-                         c = XINT (AREF (trans, 0));
-                       }
+                     to_nchars = ASIZE (trans);
+                     c = XINT (AREF (trans, 0));
                    }
                  else if (EQ (trans, Qt) && ! last_block)
                    break;
@@ -7671,22 +7670,16 @@ consume_chars (struct coding_system *coding, Lisp_Object translation_table,
          for (i = 1; i < max_lookup && p < src_end; i++)
            lookup_buf[i] = STRING_CHAR_ADVANCE (p);
          lookup_buf_end = lookup_buf + i;
-         trans = get_translation (trans, lookup_buf, lookup_buf_end);
+         trans = get_translation (trans, lookup_buf, lookup_buf_end,
+                                  &from_nchars);
          if (INTEGERP (trans))
            c = XINT (trans);
-         else if (CONSP (trans))
+         else if (VECTORP (trans))
            {
-             from_nchars = ASIZE (XCAR (trans));
-             trans = XCDR (trans);
-             if (INTEGERP (trans))
-               c = XINT (trans);
-             else
-               {
-                 to_nchars = ASIZE (trans);
-                 if (buf_end - buf < to_nchars)
-                   break;
-                 c = XINT (AREF (trans, 0));
-               }
+             to_nchars = ASIZE (trans);
+             if (buf_end - buf < to_nchars)
+               break;
+             c = XINT (AREF (trans, 0));
            }
          else
            break;
index 2dffbb756ac09d5685e77e7c33f2318e629967ed..e468147e8b2ffa4fc8e304ecd6be3d558fbdabf4 100644 (file)
@@ -416,8 +416,7 @@ DEFUN ("file-name-all-completions", Ffile_name_all_completions,
 These are all file names in directory DIRECTORY which begin with FILE.
 
 This function ignores some of the possible completions as determined
-by the variables `completion-regexp-list' and
-`completion-ignored-extensions', which see.  `completion-regexp-list'
+by `completion-regexp-list', which see.  `completion-regexp-list'
 is matched against file and directory names relative to DIRECTORY.  */)
   (Lisp_Object file, Lisp_Object directory)
 {
index 8b30f050935b149d797919f373e957a25079de6e..e2c39b3c3de1ca8104537973925f558e1495f8ba 100644 (file)
@@ -33,7 +33,7 @@ after itself, although it will leave a buffer called
   (let (
         ;; Viper just turns itself off during batch use.
         (noninteractive nil)
-        ;; Switch off start up message or it will chew the key presses
+        ;; Switch off start up message or it will chew the key presses.
         (viper-inhibit-startup-message 't)
         ;; Select an expert-level for the same reason.
         (viper-expert-level 5)
@@ -42,7 +42,7 @@ after itself, although it will leave a buffer called
         (before-buffer (current-buffer)))
     (unwind-protect
         (progn
-          ;; viper-mode is essentially global, so set it here
+          ;; viper-mode is essentially global, so set it here.
           (viper-mode)
           ;; We must switch to buffer because we are using a keyboard macro
           ;; which appears to not go to the current-buffer but what ever is
@@ -54,16 +54,16 @@ after itself, although it will leave a buffer called
           (erase-buffer)
           ;; The new buffer fails to enter vi state so set it.
           (viper-change-state-to-vi)
-          ;; Run the macro
+          ;; Run the macro.
           (execute-kbd-macro kmacro)
           (let ((rtn
                  (buffer-substring-no-properties
                   (point-min)
                   (point-max))))
-            ;; Kill the buffer iff the macro succeeds
+            ;; Kill the buffer iff the macro succeeds.
             (kill-buffer)
             rtn))
-      ;; switch everthing off and restore the buffer
+      ;; Switch everything off and restore the buffer.
       (toggle-viper-mode)
       (switch-to-buffer before-buffer))))
 
index 7906a207a96ac6f0eee7d32861fe4d12873cd20e..ce212903c9d3cb41deb4c52d97d0305e4a49a0ec 100644 (file)
                      (quote
                       (0 font-lock-keyword-face))))))))
 
+(ert-deftest number-sequence-test ()
+  (should (= (length
+              (number-sequence (1- most-positive-fixnum) most-positive-fixnum))
+             2))
+  (should (= (length
+              (number-sequence
+               (1+ most-negative-fixnum) most-negative-fixnum -1))
+             2)))
+
 (ert-deftest string-comparison-test ()
   (should (string-lessp "abc" "acb"))
   (should (string-lessp "aBc" "abc"))