Merge from origin/emacs-25

788c9b6 ; Spelling fix
25c4a30 * lisp/recentf.el (recentf-dialog-mode-map): Remove follow-li...
0992ec3 Correct cl-flet usage (Bug#22317)
50caae3 Release MH-E manual version 8.6
602bb40 Update MH-E's documentation about HTML renderers
89018f0 Fx the we->the typo
845ee57 Restore frames into the current display by default
ee28b4c * lisp/recentf.el (recentf-open-files-item): Quick fix for (b...
01c3cd1 etc/TODO: Remove out-of-place issue
5e18486 Clarify doc string of 'file-name-sans-extension'
bffda22 Fix the MSDOS build
f907f98 * lisp/progmodes/elisp-mode.el (elisp-function-argstring): Ca...
1a2ffd0 * src/dired.c (Ffile_name_all_completions): Doc fix.  (Bug#23...
f7ffc4b Fix infloop in 'number-sequence'
4ab2673 ; Spelling and punctuation fixes in comments
71c152e * lisp/emacs-lisp/find-func.el (find-function-library):
This commit is contained in:
Paul Eggert 2016-05-31 08:07:41 -07:00
commit 25cc0f2aad
19 changed files with 173 additions and 118 deletions

View 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

View 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).
@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{–} (it printed a @samp{?}), but it did
render @samp{®}.
@c -------------------------
@cindex browser, @samp{links}
@cindex @samp{links}
@item @samp{links} 1
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{®} to (R).
@c -------------------------
@cindex browser, @samp{lynx}
@cindex @samp{lynx}
@item @samp{lynx} 1
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{®}.
@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,
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{®}.
@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{–} and @samp{®} okay. It sometimes fails to wrap lines
properly. It always downloads remote images.
@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.
@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}
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. It does do a good job of
fitting text within 80 columns. It appears to render special
characters using ASCII equivalents. For example, @samp{®} appears
as (R). It does not download images.
@c -------------------------
@cindex browser, @samp{lynx}
@cindex @samp{lynx}
@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. It does not
always handle special characters like @samp{®} or @samp{–}.
It does not download images.
@c -------------------------
@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}). 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{–} and @samp{®} 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{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{–} and @samp{®} 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

View file

@ -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,

View file

@ -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

View file

@ -3737,7 +3737,7 @@
* 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>

View 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).

View 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).

View 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)

View 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.

View 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))

View 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))

View 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))))

View 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)))

View 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)

View 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)))))

View 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

View 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)
{

View 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))))

View file

@ -61,6 +61,15 @@
(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"))