1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-06 11:50:51 -08:00

Merge remote-tracking branch 'savannah/master' into HEAD

This commit is contained in:
Andrea Corallo 2020-05-06 20:11:59 +01:00
commit 92cf4bb8cc
20 changed files with 249 additions and 131 deletions

View file

@ -89,91 +89,97 @@ following sections.
@table @kbd
@item C-h a @var{topics} @key{RET}
Display a list of commands whose names match @var{topics}
(@code{apropos-command}).
(@code{apropos-command}). @xref{Apropos}.
@item C-h b
Display all active key bindings; minor mode bindings first, then those
of the major mode, then global bindings (@code{describe-bindings}).
@xref{Misc Help}.
@item C-h c @var{key}
Show the name of the command that the key sequence @var{key} is bound
to (@code{describe-key-briefly}). Here @kbd{c} stands for
``character''. For more extensive information on @var{key}, use
@kbd{C-h k}.
@kbd{C-h k}. @xref{Key Help}.
@item C-h d @var{topics} @key{RET}
Display the commands and variables whose documentation matches
@var{topics} (@code{apropos-documentation}).
@var{topics} (@code{apropos-documentation}). @xref{Apropos}.
@item C-h e
Display the @file{*Messages*} buffer
(@code{view-echo-area-messages}).
(@code{view-echo-area-messages}). @xref{Misc Help}.
@item C-h f @var{function} @key{RET}
Display documentation on the Lisp function named @var{function}
(@code{describe-function}). Since commands are Lisp functions,
this works for commands too.
this works for commands too. @xref{Name Help}.
@item C-h h
Display the @file{HELLO} file, which shows examples of various character
sets.
@item C-h i
Run Info, the GNU documentation browser (@code{info}). The Emacs
manual is available in Info.
manual is available in Info. @xref{Misc Help}.
@item C-h k @var{key}
Display the name and documentation of the command that @var{key} runs
(@code{describe-key}).
(@code{describe-key}). @xref{Key Help}.
@item C-h l
Display a description of your last 300 keystrokes
(@code{view-lossage}).
(@code{view-lossage}). @xref{Misc Help}.
@item C-h m
Display documentation of the current major mode and minor modes
(@code{describe-mode}).
(@code{describe-mode}). @xref{Misc Help}.
@item C-h n
Display news of recent Emacs changes (@code{view-emacs-news}).
@xref{Help Files}.
@item C-h o @var{symbol}
Display documentation of the Lisp symbol named @var{symbol}
(@code{describe-symbol}). This will show the documentation of all
kinds of symbols: functions, variables, and faces.
kinds of symbols: functions, variables, and faces. @xref{Name Help}.
@item C-h p
Find packages by topic keyword (@code{finder-by-keyword}). This lists
packages using a package menu buffer. @xref{Packages}.
Find packages by topic keyword (@code{finder-by-keyword}).
@xref{Package Keywords}. This lists packages using a package menu
buffer. @xref{Packages}.
@item C-h P @var{package} @key{RET}
Display documentation about the specified package
(@code{describe-package}).
(@code{describe-package}). @xref{Package Keywords}.
@item C-h r
Display the Emacs manual in Info (@code{info-emacs-manual}).
@item C-h s
Display the contents of the current @dfn{syntax table}
(@code{describe-syntax}). The syntax table says which characters are
opening delimiters, which are parts of words, and so on. @xref{Syntax
Tables,, Syntax Tables, elisp, The Emacs Lisp Reference Manual}, for
details.
(@code{describe-syntax}). @xref{Misc Help}. The syntax table says
which characters are opening delimiters, which are parts of words, and
so on. @xref{Syntax Tables,, Syntax Tables, elisp, The Emacs Lisp
Reference Manual}, for details.
@item C-h t
Enter the Emacs interactive tutorial (@code{help-with-tutorial}).
@item C-h v @var{var} @key{RET}
Display the documentation of the Lisp variable @var{var}
(@code{describe-variable}).
(@code{describe-variable}). @xref{Name Help}.
@item C-h w @var{command} @key{RET}
Show which keys run the command named @var{command} (@code{where-is}).
@xref{Key Help}.
@item C-h C @var{coding} @key{RET}
Describe the coding system @var{coding}
(@code{describe-coding-system}).
(@code{describe-coding-system}). @xref{Coding Systems}.
@item C-h C @key{RET}
Describe the coding systems currently in use.
@item C-h F @var{command} @key{RET}
Enter Info and go to the node that documents the Emacs command
@var{command} (@code{Info-goto-emacs-command-node}).
@var{command} (@code{Info-goto-emacs-command-node}). @xref{Name Help}.
@item C-h I @var{method} @key{RET}
Describe the input method @var{method} (@code{describe-input-method}).
@xref{Select Input Method}.
@item C-h K @var{key}
Enter Info and go to the node that documents the key sequence
@var{key} (@code{Info-goto-emacs-key-command-node}).
@var{key} (@code{Info-goto-emacs-key-command-node}). @xref{Key Help}.
@item C-h L @var{language-env} @key{RET}
Display information on the character sets, coding systems, and input
methods used in language environment @var{language-env}
(@code{describe-language-environment}).
(@code{describe-language-environment}). @xref{Language Environments}.
@item C-h S @var{symbol} @key{RET}
Display the Info documentation on symbol @var{symbol} according to the
programming language you are editing (@code{info-lookup-symbol}).
@xref{Misc Help}.
@item C-h .
Display the help message for a special text area, if point is in one
(@code{display-local-help}). (These include, for example, links in
@file{*Help*} buffers.)
@file{*Help*} buffers.) @xref{Help Echo}.
@end table
@node Key Help

View file

@ -2920,9 +2920,16 @@ you might like to bind to keys, such as @code{browse-url-at-point} and
You can customize Browse-URL's behavior via various options in the
@code{browse-url} Customize group. In particular, the option
@code{browse-url-mailto-function} lets you define how to follow
@samp{mailto:} URLs, while @code{browse-url-browser-function} lets you
define how to follow other types of URLs. For more information, view
the package commentary by typing @kbd{C-h P browse-url @key{RET}}.
@samp{mailto:} URLs, while @code{browse-url-browser-function}
specifies your default browser.
@vindex browse-url-handlers
You can define that certain URLs are browsed with other functions by
customizing @code{browse-url-handlers}, an alist of regular
expressions paired with functions to browse matching URLs.
For more information, view the package commentary by typing @kbd{C-h P
browse-url @key{RET}}.
@node Goto Address mode
@subsection Activating URLs

View file

@ -116,7 +116,7 @@ is enabled in a buffer. @xref{Hooks}, for more information about
hooks. Each mode hook is named after its major mode, e.g., Fortran
mode has @code{fortran-mode-hook}. Furthermore, all text-based major
modes run @code{text-mode-hook}, and many programming language modes
@footnote{More specifically, the modes which are ''derived'' from
@footnote{More specifically, the modes which are ``derived'' from
@code{prog-mode} (@pxref{Derived Modes,,, elisp, The Emacs Lisp
Reference Manual}).} (including all those distributed with Emacs) run
@code{prog-mode-hook}, prior to running their own mode hooks. Hook

View file

@ -3875,13 +3875,15 @@ detailed knowledge of what types other applications use for drag and
drop.
@vindex dnd-protocol-alist
@vindex browse-url-handlers
@vindex browse-url-default-handlers
When an URL is dropped on Emacs it may be a file, but it may also be
another URL type (https, etc.). Emacs first checks
@code{dnd-protocol-alist} to determine what to do with the URL@. If
there is no match there and if @code{browse-url-browser-function} is
an alist, Emacs looks for a match there. If no match is found the
text for the URL is inserted. If you want to alter Emacs behavior,
you can customize these variables.
there is no match there, Emacs looks for a match in
@code{browse-url-handlers} and @code{browse-url-default-handlers}. If
still no match has been found, the text for the URL is inserted. If
you want to alter Emacs behavior, you can customize these variables.
@node Color Names
@section Color Names

View file

@ -304,6 +304,22 @@ use doxygen by default one might evaluate:
(c++-mode . doxygen)))
or use it in a custom c-style.
** browse-url
*** Added support for custom URL handlers
There is a new defvar 'browse-url-default-handlers' and a defcustom
'browse-url-handlers' being alists with (REGEXP . FUNCTION) entries
allowing to define different browsing FUNCTIONs depending on the URL
to be browsed. The defvar is for default handlers provided by Emacs
itself or external packages, the defcustom is for the user (and allows
for overriding the default handlers).
Formerly, one could do the same by setting
'browse-url-browser-function' to such an alist. This usage is still
supported but deprecated.
* New Modes and Packages in Emacs 28.1

View file

@ -87,12 +87,11 @@ and is the default except for MS-Windows."
(defun dnd-handle-one-url (window action url)
"Handle one dropped url by calling the appropriate handler.
The handler is first located by looking at `dnd-protocol-alist'.
If no match is found here, and the value of `browse-url-browser-function'
is a pair of (REGEXP . FUNCTION), those regexps are tried for a match.
If no match is found, just call `dnd-insert-text'.
WINDOW is where the drop happened, ACTION is the action for the drop,
URL is what has been dropped.
Returns ACTION."
If no match is found here, `browse-url-handlers' and
`browse-url-default-handlers' are searched for a match.
If no match is found, just call `dnd-insert-text'. WINDOW is
where the drop happened, ACTION is the action for the drop, URL
is what has been dropped. Returns ACTION."
(require 'browse-url)
(let (ret)
(or
@ -102,14 +101,21 @@ Returns ACTION."
(setq ret (funcall (cdr bf) url action))
(throw 'done t)))
nil)
(when (not (functionp browse-url-browser-function))
(catch 'done
(dolist (bf browse-url-browser-function)
(when (string-match (car bf) url)
(setq ret 'private)
(funcall (cdr bf) url action)
(throw 'done t)))
nil))
(catch 'done
(require 'browse-url) ;; browse-url-handlers is not autoloaded.
(dolist (bf (append
;; The alist choice of browse-url-browser-function
;; is deprecated since 28.1, so the (unless ...)
;; can be removed at some point in time.
(unless (functionp browse-url-browser-function)
browse-url-browser-function)
browse-url-handlers
browse-url-default-handlers))
(when (string-match (car bf) url)
(setq ret 'private)
(funcall (cdr bf) url action)
(throw 'done t)))
nil)
(progn
(dnd-insert-text window action url)
(setq ret 'private)))

View file

@ -181,8 +181,7 @@ operating on the next file and nil otherwise."
(fileloop-initialize
files
(lambda ()
(let ((case-fold-search
(if (memq case-fold '(t nil)) case-fold case-fold-search)))
(let ((case-fold-search (fileloop--case-fold regexp case-fold)))
(re-search-forward regexp nil t)))
(lambda ()
(unless (eq last-buffer (current-buffer))
@ -190,13 +189,27 @@ operating on the next file and nil otherwise."
(message "Scanning file %s...found" buffer-file-name))
nil))))
(defun fileloop--case-fold (regexp case-fold)
(let ((value
(if (memql case-fold '(nil t))
case-fold
case-fold-search)))
(if (and value search-upper-case)
(isearch-no-upper-case-p regexp t)
value)))
;;;###autoload
(defun fileloop-initialize-replace (from to files case-fold &optional delimited)
"Initialize a new round of query&replace on several files.
FROM is a regexp and TO is the replacement to use.
FILES describes the file, as in `fileloop-initialize'.
CASE-FOLD can be t, nil, or `default', the latter one meaning to obey
the default setting of `case-fold-search'.
FILES describes the files, as in `fileloop-initialize'.
CASE-FOLD can be t, nil, or `default':
if it is nil, matching of FROM is case-sensitive.
if it is t, matching of FROM is case-insensitive, except
when `search-upper-case' is non-nil and FROM includes
upper-case letters.
if it is `default', the function uses the value of
`case-fold-search' instead.
DELIMITED if non-nil means replace only word-delimited matches."
;; FIXME: Not sure how the delimited-flag interacts with the regexp-flag in
;; `perform-replace', so I just try to mimic the old code.
@ -204,8 +217,7 @@ DELIMITED if non-nil means replace only word-delimited matches."
(fileloop-initialize
files
(lambda ()
(let ((case-fold-search
(if (memql case-fold '(nil t)) case-fold case-fold-search)))
(let ((case-fold-search (fileloop--case-fold from case-fold)))
(when (re-search-forward from nil t)
;; When we find a match, save its beginning for
;; `perform-replace' (we used to just set point, but this
@ -213,9 +225,10 @@ DELIMITED if non-nil means replace only word-delimited matches."
;; `switch-to-buffer-preserve-window-point').
(puthash (current-buffer) (match-beginning 0) mstart))))
(lambda ()
(perform-replace from to t t delimited nil multi-query-replace-map
(gethash (current-buffer) mstart (point-min))
(point-max))))))
(let ((case-fold-search (fileloop--case-fold from case-fold)))
(perform-replace from to t t delimited nil multi-query-replace-map
(gethash (current-buffer) mstart (point-min))
(point-max)))))))
(provide 'fileloop)
;;; fileloop.el ends here

View file

@ -873,8 +873,8 @@ If this is nil, use `user-mail-address'. If it is the symbol
message-sendmail-envelope-from))
(defcustom message-sendmail-extra-arguments nil
"Additional arguments to `sendmail-program'."
;; E.g. '("-a" "account") for msmtp
"Additional arguments to `sendmail-program'.
A list of strings, e.g. (\"-a\" \"account\") for msmtp."
:version "23.1" ;; No Gnus
:type '(repeat string)
;; :link '(custom-manual "(message)Mail Variables")

View file

@ -902,7 +902,7 @@ If ANY-SYMBOL is non-nil, don't insist the symbol be bound."
(output nil))
(if custom-version
(setq output
(format "This %s was introduced, or its default value was changed, in\nversion %s of Emacs.\n"
(format " This %s was introduced, or its default value was changed, in\n version %s of Emacs.\n"
type custom-version))
(when cpv
(let* ((package (car-safe cpv))
@ -913,7 +913,7 @@ If ANY-SYMBOL is non-nil, don't insist the symbol be bound."
(emacsv (cdr (assoc version pkg-versions))))
(if (and package version)
(setq output
(format (concat "This %s was introduced, or its default value was changed, in\nversion %s of the %s package"
(format (concat " This %s was introduced, or its default value was changed, in\n version %s of the %s package"
(if emacsv
(format " that is part of Emacs %s" emacsv))
".\n")
@ -1134,8 +1134,8 @@ it is displayed along with the global value."
;; Note variable's version or package version.
(let ((output (describe-variable-custom-version-info variable)))
(when output
(terpri)
(terpri)
;; (terpri)
;; (terpri)
(princ output)))))
(add-hook 'help-fns-describe-variable-functions #'help-fns--var-safe-local)

View file

@ -114,9 +114,10 @@
;; To always save modified buffers before displaying the file in a browser:
;; (setq browse-url-save-file t)
;; To invoke different browsers for different URLs:
;; (setq browse-url-browser-function '(("^mailto:" . browse-url-mail)
;; ("." . browse-url-firefox)))
;; To invoke different browsers/tools for different URLs, customize
;; `browse-url-handlers'. In earlier versions of Emacs, the same
;; could be done by setting `browse-url-browser-function' to an alist
;; but this usage is deprecated now.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Code:
@ -157,7 +158,9 @@
:value browse-url-default-browser)
(function :tag "Your own function")
(alist :tag "Regexp/function association list"
:key-type regexp :value-type function)))
:key-type regexp :value-type function
:format "%{%t%}\n%d%v\n"
:doc "Deprecated. Use `browse-url-handlers' instead.")))
;;;###autoload
(defcustom browse-url-browser-function 'browse-url-default-browser
@ -165,13 +168,8 @@
This is used by the `browse-url-at-point', `browse-url-at-mouse', and
`browse-url-of-file' commands.
If the value is not a function it should be a list of pairs
\(REGEXP . FUNCTION). In this case the function called will be the one
associated with the first REGEXP which matches the current URL. The
function is passed the URL and any other args of `browse-url'. The last
regexp should probably be \".\" to specify a default browser.
Also see `browse-url-secondary-browser-function'."
Also see `browse-url-secondary-browser-function' and
`browse-url-handlers'."
:type browse-url--browser-defcustom-type
:version "24.1")
@ -595,6 +593,41 @@ down (this *won't* always work)."
"Wrapper command prepended to the Elinks command-line."
:type '(repeat (string :tag "Wrapper")))
(defun browse-url--mailto (url &rest args)
"Calls `browse-url-mailto-function' with URL and ARGS."
(funcall browse-url-mailto-function url args))
(defun browse-url--man (url &rest args)
"Calls `browse-url-man-function' with URL and ARGS."
(funcall browse-url-man-function url args))
;;;###autoload
(defvar browse-url-default-handlers
'(("\\`mailto:" . browse-url--mailto)
("\\`man:" . browse-url--man)
("\\`file://" . browse-url-emacs))
"Like `browse-url-handlers' but populated by Emacs and packages.
Emacs and external packages capable of browsing certain URLs
should place their entries in this alist rather than
`browse-url-handlers' which is reserved for the user.")
(defcustom browse-url-handlers nil
"An alist with elements of the form (REGEXP HANDLER).
Each REGEXP is matched against the URL to be opened in turn and
the first match's HANDLER is invoked with the URL.
A HANDLER must be a function with the same arguments as
`browse-url'.
If no REGEXP matches, the same procedure is performed with the
value of `browse-url-default-handlers'. If there is also no
match, the URL is opened using the value of
`browse-url-browser-function'."
:type '(alist :key-type (regexp :tag "Regexp")
:value-type (function :tag "Handler"))
:version "28.1")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; URL encoding
@ -768,16 +801,18 @@ narrowed."
"Ask a WWW browser to load URL.
Prompt for a URL, defaulting to the URL at or before point.
Invokes a suitable browser function which does the actual job.
The variable `browse-url-browser-function' says which browser function to
use. If the URL is a mailto: URL, consult `browse-url-mailto-function'
first, if that exists.
The additional ARGS are passed to the browser function. See the doc
strings of the actual functions, starting with `browse-url-browser-function',
for information about the significance of ARGS (most of the functions
ignore it).
If ARGS are omitted, the default is to pass `browse-url-new-window-flag'
as ARGS."
The variables `browse-url-browser-function',
`browse-url-handlers', and `browse-url-default-handlers'
determine which browser function to use.
The additional ARGS are passed to the browser function. See the
doc strings of the actual functions, starting with
`browse-url-browser-function', for information about the
significance of ARGS (most of the functions ignore it).
If ARGS are omitted, the default is to pass
`browse-url-new-window-flag' as ARGS."
(interactive (browse-url-interactive-arg "URL: "))
(unless (called-interactively-p 'interactive)
(setq args (or args (list browse-url-new-window-flag))))
@ -786,12 +821,15 @@ as ARGS."
(not (string-match "\\`[a-z]+:" url)))
(setq url (expand-file-name url)))
(let ((process-environment (copy-sequence process-environment))
(function (or (and (string-match "\\`mailto:" url)
browse-url-mailto-function)
(and (string-match "\\`man:" url)
browse-url-man-function)
browse-url-browser-function))
;; Ensure that `default-directory' exists and is readable (b#6077).
(function
(catch 'custom-url-handler
(dolist (regex-handler (append browse-url-handlers
browse-url-default-handlers))
(when (string-match-p (car regex-handler) url)
(throw 'custom-url-handler (cdr regex-handler))))
;; No special handler found.
browse-url-browser-function))
;; Ensure that `default-directory' exists and is readable (bug#6077).
(default-directory (or (unhandled-file-name-directory default-directory)
(expand-file-name "~/"))))
;; When connected to various displays, be careful to use the display of
@ -801,15 +839,19 @@ as ARGS."
(setenv "DISPLAY" (frame-parameter nil 'display)))
(if (and (consp function)
(not (functionp function)))
;; The `function' can be an alist; look down it for first match
;; and apply the function (which might be a lambda).
(catch 'done
(dolist (bf function)
(when (string-match (car bf) url)
(apply (cdr bf) url args)
(throw 'done t)))
(error "No browse-url-browser-function matching URL %s"
url))
;; The `function' can be an alist; look down it for first
;; match and apply the function (which might be a lambda).
;; However, this usage is deprecated as of Emacs 28.1.
(progn
(warn "Having `browse-url-browser-function' set to an
alist is deprecated. Use `browse-url-handlers' instead.")
(catch 'done
(dolist (bf function)
(when (string-match (car bf) url)
(apply (cdr bf) url args)
(throw 'done t)))
(error "No browse-url-browser-function matching URL %s"
url)))
;; Unbound symbols go down this leg, since void-function from
;; apply is clearer than wrong-type-argument from dolist.
(apply function url args))))

View file

@ -518,6 +518,10 @@ Currently this means either text/html or application/xhtml+xml."
(plist-put eww-data :dom document)
(let ((inhibit-read-only t)
(inhibit-modification-hooks t)
;; Possibly set by the caller, e.g., `eww-render' which
;; preserves the old URL #target before chasing redirects.
(shr-target-id (or shr-target-id
(url-target (url-generic-parse-url url))))
(shr-external-rendering-functions
(append
shr-external-rendering-functions

View file

@ -896,14 +896,13 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
;; it. Call it in a subshell, in order to preserve working
;; directory.
(condition-case nil
(progn
(setq ret
(if (tramp-adb-send-command-and-check
v
(format "(cd %s; %s)"
(tramp-shell-quote-argument localname) command))
;; Set return status accordingly.
0 1))
(unwind-protect
(setq ret (tramp-adb-send-command-and-check
v (format
"(cd %s; %s)"
(tramp-shell-quote-argument localname) command)
t))
(unless (natnump ret) (setq ret 1))
;; We should add the output anyway.
(when outbuf
(with-current-buffer outbuf
@ -1186,11 +1185,14 @@ This happens for Android >= 4.0."
(while (re-search-forward "\r+$" nil t)
(replace-match "" nil nil))))))
(defun tramp-adb-send-command-and-check (vec command)
(defun tramp-adb-send-command-and-check (vec command &optional exit-status)
"Run COMMAND and check its exit status.
Sends `echo $?' along with the COMMAND for checking the exit
status. If COMMAND is nil, just sends `echo $?'. Returns nil if
the exit status is not equal 0, and t otherwise."
the exit status is not equal 0, and t otherwise.
Optional argument EXIT-STATUS, if non-nil, triggers the return of
the exit status."
(tramp-adb-send-command
vec (if command
(format "%s; echo tramp_exit_status $?" command)
@ -1201,7 +1203,9 @@ the exit status is not equal 0, and t otherwise."
vec 'file-error "Couldn't find exit status of `%s'" command))
(skip-chars-forward "^ ")
(prog1
(zerop (read (current-buffer)))
(if exit-status
(read (current-buffer))
(zerop (read (current-buffer))))
(let ((inhibit-read-only t))
(delete-region (match-beginning 0) (point-max))))))

View file

@ -3136,13 +3136,12 @@ STDERR can also be a file name."
;; directory.
(condition-case nil
(unwind-protect
(setq ret
(if (tramp-send-command-and-check
v (format "cd %s && %s"
(tramp-shell-quote-argument localname)
command)
t t)
0 1))
(setq ret (tramp-send-command-and-check
v (format
"cd %s && %s"
(tramp-shell-quote-argument localname) command)
t t t))
(unless (natnump ret) (setq ret 1))
;; We should add the output anyway.
(when outbuf
(with-current-buffer outbuf
@ -5239,7 +5238,7 @@ function waits for output unless NOOUTPUT is set."
found)))
(defun tramp-send-command-and-check
(vec command &optional subshell dont-suppress-err)
(vec command &optional subshell dont-suppress-err exit-status)
"Run COMMAND and check its exit status.
Send `echo $?' along with the COMMAND for checking the exit status.
If COMMAND is nil, just send `echo $?'. Return t if the exit
@ -5247,7 +5246,9 @@ status is 0, and nil otherwise.
If the optional argument SUBSHELL is non-nil, the command is
executed in a subshell, ie surrounded by parentheses. If
DONT-SUPPRESS-ERR is non-nil, stderr won't be sent to /dev/null."
DONT-SUPPRESS-ERR is non-nil, stderr won't be sent to /dev/null.
Optional argument EXIT-STATUS, if non-nil, triggers the return of
the exit status."
(tramp-send-command
vec
(concat (if subshell "( " "")
@ -5261,7 +5262,9 @@ DONT-SUPPRESS-ERR is non-nil, stderr won't be sent to /dev/null."
vec 'file-error "Couldn't find exit status of `%s'" command))
(skip-chars-forward "^ ")
(prog1
(zerop (read (current-buffer)))
(if exit-status
(read (current-buffer))
(zerop (read (current-buffer))))
(let ((inhibit-read-only t))
(delete-region (match-beginning 0) (point-max))))))

View file

@ -1852,8 +1852,8 @@ This takes effect when first loading the library.")
"Keymap for commands for use in HTML mode.")
(defvar html-face-tag-alist
'((bold . "b")
(italic . "i")
'((bold . "strong")
(italic . "em")
(underline . "u")
(mode-line . "rev"))
"Value of `sgml-face-tag-alist' for HTML mode.")
@ -2363,7 +2363,7 @@ have <h1>Very Major Headlines</h1> through <h6>Very Minor Headlines</h6>
<p>Paragraphs only need an opening tag. Line breaks and multiple spaces are
ignored unless the text is <pre>preformatted.</pre> Text can be marked as
<b>bold</b>, <i>italic</i> or <u>underlined</u> using the normal M-o or
<strong>bold</strong>, <em>italic</em> or <u>underlined</u> using the normal M-o or
Edit/Text Properties/Face commands.
Pages can have <a name=\"SOMENAME\">named points</a> and can link other points

View file

@ -108,7 +108,8 @@ bignum_integer (mpz_t *tmp, Lisp_Object i)
if (FIXNUMP (i))
{
mpz_set_intmax (*tmp, XFIXNUM (i));
return tmp;
/* The unnecessary cast pacifies a buggy GCC 4.8.5. */
return (mpz_t const *) tmp;
}
return xbignum_val (i);
}

View file

@ -77,6 +77,7 @@ typedef bool bool_bf;
# define HAS_ATTRIBUTE(a) HAS_ATTR_##a
# define HAS_ATTR_cleanup GNUC_PREREQ (3, 4, 0)
# define HAS_ATTR_no_address_safety_analysis false
# define HAS_ATTR_no_sanitize false
# define HAS_ATTR_no_sanitize_address GNUC_PREREQ (4, 8, 0)
# define HAS_ATTR_no_sanitize_undefined GNUC_PREREQ (4, 9, 0)
#endif
@ -294,10 +295,10 @@ extern int emacs_setenv_TZ (char const *);
/* Attribute of functions whose code should not have addresses
sanitized. */
#if __has_attribute (no_sanitize_address)
#if HAS_ATTRIBUTE (no_sanitize_address)
# define ATTRIBUTE_NO_SANITIZE_ADDRESS \
__attribute__ ((no_sanitize_address)) ADDRESS_SANITIZER_WORKAROUND
#elif __has_attribute (no_address_safety_analysis)
#elif HAS_ATTRIBUTE (no_address_safety_analysis)
# define ATTRIBUTE_NO_SANITIZE_ADDRESS \
__attribute__ ((no_address_safety_analysis)) ADDRESS_SANITIZER_WORKAROUND
#else
@ -306,9 +307,9 @@ extern int emacs_setenv_TZ (char const *);
/* Attribute of functions whose undefined behavior should not be sanitized. */
#if __has_attribute (no_sanitize_undefined)
#if HAS_ATTRIBUTE (no_sanitize_undefined)
# define ATTRIBUTE_NO_SANITIZE_UNDEFINED __attribute__ ((no_sanitize_undefined))
#elif __has_attribute (no_sanitize)
#elif HAS_ATTRIBUTE (no_sanitize)
# define ATTRIBUTE_NO_SANITIZE_UNDEFINED \
__attribute__ ((no_sanitize ("undefined")))
#else

View file

@ -697,8 +697,14 @@ DEFUN ("fboundp", Ffboundp, Sfboundp, 1, 1, 0,
}
DEFUN ("makunbound", Fmakunbound, Smakunbound, 1, 1, 0,
doc: /* Make SYMBOL's value be void.
Return SYMBOL. */)
doc: /* Empty out the value cell of SYMBOL, making it void as a variable.
Return SYMBOL.
If a variable is void, trying to evaluate the variable signals a
`void-variable' error, instead of returning a value. For more
details, see Info node `(elisp) Void Variables'.
See also `fmakunbound'. */)
(register Lisp_Object symbol)
{
CHECK_SYMBOL (symbol);
@ -709,8 +715,14 @@ Return SYMBOL. */)
}
DEFUN ("fmakunbound", Ffmakunbound, Sfmakunbound, 1, 1, 0,
doc: /* Make SYMBOL's function definition be nil.
Return SYMBOL. */)
doc: /* Make SYMBOL's function definition be void.
Return SYMBOL.
If a function definition is void, trying to call a function by that
name will cause a `void-function' error. For more details, see Info
node `(elisp) Function Cells'.
See also `makunbound'. */)
(register Lisp_Object symbol)
{
CHECK_SYMBOL (symbol);

View file

@ -3019,7 +3019,7 @@ printed representation. The padding, if any, normally goes on the
left, but it goes on the right if the - flag is present. The padding
character is normally a space, but it is 0 if the 0 flag is present.
The 0 flag is ignored if the - flag is present, or the format sequence
is something other than %d, %e, %f, and %g.
is something other than %d, %o, %x, %e, %f, and %g.
For %e and %f sequences, the number after the "." in the precision
specifier says how many decimal places to show; if zero, the decimal

View file

@ -248,7 +248,7 @@ module_decode_utf_8 (const char *str, ptrdiff_t len)
of `internal_condition_case' etc., and to avoid worrying about
passing information to the handler functions. */
#if !__has_attribute (cleanup)
#if !HAS_ATTRIBUTE (cleanup)
#error "__attribute__ ((cleanup)) not supported by this compiler; try GCC"
#endif

View file

@ -4208,6 +4208,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should (zerop (process-file "true")))
(should-not (zerop (process-file "false")))
(should-not (zerop (process-file "binary-does-not-exist")))
(should (= 42 (process-file "sh" nil nil nil "-c" "exit 42")))
(with-temp-buffer
(write-region "foo" nil tmp-name)
(should (file-exists-p tmp-name))