Merge from origin/emacs-30
5c9de704cc
; * admin/make-tarball.txt: Minor copyedits.3fc1635783
; * doc/lispref/strings.texi (Text Comparison): Improve i...45a78ec6c5
* lisp/files.el (require-with-check): Improve error messa...9a04b99b3d
; * src/data.c (Fsubrp): Improve docstring.4f3e8c3b4e
Improve documentation of ERTed8904937e
Disambiguate minor-mode variable in its function docstring505139e0ba
Fix project-dired keybinding in manual9bedb957be
Improve documentation of time-parsing functions # Conflicts: # doc/lispref/os.texi # lisp/calendar/iso8601.el # lisp/calendar/parse-time.el
This commit is contained in:
commit
661e5dec57
11 changed files with 139 additions and 57 deletions
|
@ -137,38 +137,40 @@ General steps (for each step, check for possible errors):
|
|||
of the format "Bump Emacs version to ...", so that the commit can
|
||||
be skipped when merging branches (see admin/gitmerge.el).
|
||||
|
||||
The final pretest should be a release candidate.
|
||||
Before a release candidate is made, the tasks listed in
|
||||
admin/release-process must be completed.
|
||||
If this is a final pretest before the release:
|
||||
|
||||
Set the version number to that of the actual release (commit in
|
||||
one, as described above). Pick a date about a week from now when
|
||||
you intend to make the release. Use M-x add-release-logs from
|
||||
admin/admin.el to add entries to etc/HISTORY and the ChangeLog
|
||||
file. It's best not to commit these files until the release is
|
||||
actually made. Merge the entries from (unversioned) ChangeLog
|
||||
into the top of the current versioned ChangeLog.N and commit that
|
||||
along with etc/HISTORY. Then you can tag that commit as the
|
||||
release.
|
||||
The final pretest should be a release candidate.
|
||||
Before a release candidate is made, the tasks listed in
|
||||
admin/release-process must be completed.
|
||||
|
||||
Alternatively, you can commit and tag with the RC tag right away,
|
||||
and delay the final tagging until you actually decide to make a
|
||||
release and announce it. The "git tag" command can tag a specific
|
||||
commit if you give it the SHA1 of that commit, even if additional
|
||||
commits have been pushed in the meantime.
|
||||
Set the version number to that of the actual release (commit in
|
||||
one, as described above). Pick a date about a week from now when
|
||||
you intend to make the release. Use M-x add-release-logs from
|
||||
admin/admin.el to add entries to etc/HISTORY and the ChangeLog
|
||||
file. It's best not to commit these files until the release is
|
||||
actually made. Merge the entries from (unversioned) ChangeLog
|
||||
into the top of the current versioned ChangeLog.N and commit that
|
||||
along with etc/HISTORY. Then you can tag that commit as the
|
||||
release.
|
||||
|
||||
Name the tar file as emacs-XX.Y-rc1.tar. If all goes well in the
|
||||
following week, you can simply rename the file and use it for the
|
||||
actual release. If you need another release candidate, remember
|
||||
to adjust the ChangeLog and etc/HISTORY entries.
|
||||
Alternatively, you can commit and tag with the RC tag right away,
|
||||
and delay the final tagging until you actually decide to make a
|
||||
release and announce it. The "git tag" command can tag a specific
|
||||
commit if you give it the SHA1 of that commit, even if additional
|
||||
commits have been pushed in the meantime.
|
||||
|
||||
If you need to change only a file(s) that cannot possibly affect
|
||||
the build (README, ChangeLog, NEWS, etc.) then rather than doing
|
||||
an entirely new build, it is better to unpack the existing
|
||||
tarfile, modify the file(s), and tar it back up again.
|
||||
Name the tar file as emacs-XX.Y-rc1.tar. If all goes well in the
|
||||
following week, you can simply rename the file and use it for the
|
||||
actual release. If you need another release candidate, remember
|
||||
to adjust the ChangeLog and etc/HISTORY entries.
|
||||
|
||||
Never replace an existing tarfile! If you need to fix something,
|
||||
always upload it with a different name.
|
||||
If you need to change only a file(s) that cannot possibly affect
|
||||
the build (README, ChangeLog, NEWS, etc.) then rather than doing
|
||||
an entirely new build, it is better to unpack the existing
|
||||
tarfile, modify the file(s), and tar it back up again.
|
||||
|
||||
Never replace an existing tarfile! If you need to fix something,
|
||||
always upload it with a different name.
|
||||
|
||||
4. autoreconf -i -I m4 --force
|
||||
make bootstrap
|
||||
|
|
|
@ -1829,7 +1829,7 @@ the current project.
|
|||
@item C-x p r
|
||||
Perform query-replace for a regexp in all files that belong to the
|
||||
current project (@code{project-query-replace-regexp}).
|
||||
@item C-x p d
|
||||
@item C-x p D
|
||||
Run Dired in the current project's root directory
|
||||
(@code{project-dired}).
|
||||
@item C-x p v
|
||||
|
|
|
@ -1803,15 +1803,50 @@ function will attempt to parse less well-formed time strings as well.
|
|||
It parses an incomplete string like ``2024-08-13'' to an incomplete
|
||||
structure like @samp{(nil nil nil 13 8 2024 nil -1 nil)}, in which
|
||||
an unknown DST value is @minus{}1 and other unknown values are @code{nil}.
|
||||
|
||||
Note that, unlike @code{decode-time} (@pxref{Time Conversion}), this
|
||||
function does not interpret the time string, and in particular the
|
||||
values of daylight-saving and timezone or UTC offset parts of the
|
||||
@var{string} argument do not affect the returned value of date and time,
|
||||
they only affect the last two members of the returned decoded time
|
||||
structure. For example, if the time-zone information is present in
|
||||
@var{string}, the decoded time structure will include it; otherwise the
|
||||
time-zone member of the returned value will be @code{nil}. In other
|
||||
words, this function simply parses the textual representation of date
|
||||
and time into separate numerical values, and doesn't care whether the
|
||||
input time is local or UTC.
|
||||
|
||||
If a Lisp program passes the return value of this function to some other
|
||||
time-related API, it should make sure the @code{nil} members of the
|
||||
decoded time structure are interpreted correctly, and in particular the
|
||||
lack of time-zone information is interpreted as UTC or local time,
|
||||
according to the needs of the calling program.
|
||||
@end defun
|
||||
|
||||
@vindex ISO 8601 date/time strings
|
||||
@defun iso8601-parse string
|
||||
This function acts like @code{parse-time-string} except it is stricter
|
||||
and errors out upon invalid input. It can parse all variants of
|
||||
the ISO 8601 standard, so in addition to the formats mentioned above,
|
||||
it also parses things like ``1998W45-3'' (week number) and
|
||||
``1998-245'' (ordinal day number).
|
||||
For a more strict function (that will error out upon invalid input),
|
||||
Lisp programs can use this function instead. It can parse all variants
|
||||
of the ISO 8601 standard, so in addition to the formats mentioned above,
|
||||
it also parses things like ``1998W45-3'' (week number) and ``1998-245''
|
||||
(ordinal day number). To parse durations, there's
|
||||
@code{iso8601-parse-duration}, and to parse intervals, there's
|
||||
@code{iso8601-parse-interval}. All these functions return decoded time
|
||||
structures, except the final one, which returns three of them (the
|
||||
start, the end, and the duration).
|
||||
Like @code{parse-time-string}, this function does not interpret the time
|
||||
string, and in particular the time-zone designator or UTC offset that is
|
||||
part of the @var{string} argument does not affect the returned value of
|
||||
date and time, it only affects the last two members of the returned
|
||||
decoded time structure. The ISO 8601 standard specifies that date/time
|
||||
strings that do not include information about UTC relation are assumed
|
||||
to be in local time, but this function does not do that, because it
|
||||
doesn't interpret the time values. For example, if the time-zone
|
||||
information is present in @var{string}, the decoded time structure will
|
||||
include it; otherwise the time-zone member of the returned value will be
|
||||
@code{nil}. In other words, this function simply parses the textual
|
||||
representation of date and time into separate numerical values, and
|
||||
doesn't care whether the input time is local or UTC.
|
||||
@end defun
|
||||
|
||||
@defun iso8601-parse-duration string
|
||||
|
|
|
@ -487,7 +487,9 @@ null characters. It may also change @var{string}'s length.
|
|||
@section Comparison of Characters and Strings
|
||||
@cindex string equality
|
||||
@cindex text comparison
|
||||
@cindex string comparison
|
||||
|
||||
@cindex compare characters
|
||||
@defun char-equal character1 character2
|
||||
This function returns @code{t} if the arguments represent the same
|
||||
character, @code{nil} otherwise. This function ignores differences
|
||||
|
@ -502,6 +504,7 @@ in case if @code{case-fold-search} is non-@code{nil}.
|
|||
@end example
|
||||
@end defun
|
||||
|
||||
@cindex compare strings
|
||||
@defun string-equal string1 string2
|
||||
This function returns @code{t} if the characters of the two strings
|
||||
match exactly. Symbols are also allowed as arguments, in which case
|
||||
|
@ -534,6 +537,7 @@ character codes all being in the range 0--127 (@acronym{ASCII}).
|
|||
@code{string=} is another name for @code{string-equal}.
|
||||
@end defun
|
||||
|
||||
@cindex case-insensitive string comparison
|
||||
@defun string-equal-ignore-case string1 string2
|
||||
@code{string-equal-ignore-case} compares strings ignoring case
|
||||
differences, like @code{char-equal} when @code{case-fold-search} is
|
||||
|
@ -665,6 +669,7 @@ This function returns the result of comparing @var{string1} and
|
|||
@end defun
|
||||
|
||||
@cindex locale-dependent string comparison
|
||||
@cindex string collation
|
||||
@defun string-collate-lessp string1 string2 &optional locale ignore-case
|
||||
This function returns @code{t} if @var{string1} is less than
|
||||
@var{string2} in collation order of the specified @var{locale}, which
|
||||
|
@ -719,6 +724,8 @@ If your system does not support a locale environment, this function
|
|||
behaves like @code{string-lessp}.
|
||||
@end defun
|
||||
|
||||
@cindex version comparison
|
||||
@cindex comparing version strings
|
||||
@defun string-version-lessp string1 string2
|
||||
This function compares strings lexicographically, except it treats
|
||||
sequences of numerical characters as if they comprised a base-ten
|
||||
|
@ -727,6 +734,7 @@ number, and then compares the numbers. So @samp{foo2.png} is
|
|||
@samp{12} is lexicographically ``smaller'' than @samp{2}.
|
||||
@end defun
|
||||
|
||||
@cindex string starts with prefix
|
||||
@defun string-prefix-p string1 string2 &optional ignore-case
|
||||
This function returns non-@code{nil} if @var{string1} is a prefix of
|
||||
@var{string2}; i.e., if @var{string2} starts with @var{string1}. If
|
||||
|
@ -734,6 +742,7 @@ the optional argument @var{ignore-case} is non-@code{nil}, the
|
|||
comparison ignores case differences.
|
||||
@end defun
|
||||
|
||||
@cindex string ends with suffix
|
||||
@defun string-suffix-p suffix string &optional ignore-case
|
||||
This function returns non-@code{nil} if @var{suffix} is a suffix of
|
||||
@var{string}; i.e., if @var{string} ends with @var{suffix}. If the
|
||||
|
|
|
@ -203,9 +203,12 @@ different Emacs versions.
|
|||
@cindex interactive testing
|
||||
|
||||
@findex ert
|
||||
@findex ert-run-tests-interactively
|
||||
You can run the tests that are currently defined in your Emacs with the
|
||||
command @kbd{M-x ert @key{RET} t @key{RET}}. (For an explanation of the
|
||||
@code{t} argument, @pxref{Test Selectors}.) ERT will pop up a new
|
||||
command @kbd{M-x ert @key{RET} t @key{RET}} (which is an alias of
|
||||
@code{ert-run-tests-interactively}). The @code{t} argument means to run
|
||||
all the defined tests, see @ref{Test Selectors}, which also explains how
|
||||
to run only some specific part of the tests. ERT will pop up a new
|
||||
buffer, the ERT results buffer, showing the results of the tests run.
|
||||
It looks like this:
|
||||
|
||||
|
@ -474,7 +477,7 @@ to Common Lisp's type specifier syntax:
|
|||
@item @code{:failed} and @code{:passed} select tests according to their most recent result.
|
||||
@item @code{:expected}, @code{:unexpected} select tests according to their most recent result.
|
||||
@item A string is a regular expression that selects all tests with matching names.
|
||||
@item A test (i.e., an object of @code{ert-test} data type) selects that test.
|
||||
@item A test (i.e., an object of @code{ert-test} data type, see its doc string for details) selects that test.
|
||||
@item A symbol selects the test that the symbol names.
|
||||
@item @code{(member @var{tests}...)} selects the elements of
|
||||
@var{tests}, a list of tests or symbols naming tests.
|
||||
|
|
|
@ -121,12 +121,23 @@
|
|||
|
||||
(defun iso8601-parse (string &optional form)
|
||||
"Parse an ISO 8601 date/time string and return a `decode-time' structure.
|
||||
ISO 8601 date/time strings look like \"2008-03-02T13:47:30+05:30\",
|
||||
or like shorter, incomplete strings like date \"2008-03-02\",
|
||||
week number \"2008W32\", and ordinal day number \"2008-234\".
|
||||
|
||||
The ISO 8601 date/time strings look like \"2008-03-02T13:47:30\"
|
||||
or \"2024-04-05T14:30Z\" or \"2024-04-05T12:30−02:00\",
|
||||
but shorter, incomplete strings like \"2008-03-02\" are valid, as
|
||||
well as variants like \"2008W32\" (week number) and
|
||||
\"2008-234\" (ordinal day number).
|
||||
Values returned are identical to those of `decode-time', except
|
||||
that an unknown DST value is -1 and other unknown values are nil.
|
||||
|
||||
Note that, unlike `decode-time', this function does not interpret
|
||||
the time string, and in particular the time-zone designator or UTC
|
||||
offset that is part of STRING does not affect the returned value of
|
||||
date and time, it only affects the last two members of the returned
|
||||
value. This function simply parses the textual representation of
|
||||
date and time into separate numerical values, and doesn't care
|
||||
whether the time is local or UTC.
|
||||
|
||||
See `decode-time' for the meaning of FORM."
|
||||
(if (not (iso8601-valid-p string))
|
||||
(signal 'wrong-type-argument (list string))
|
||||
|
|
|
@ -154,8 +154,15 @@ or something resembling an RFC 822 (or later) date-time, e.g.,
|
|||
\"Wed, 15 Jan 2020 16:12:21 -0800\". This function is
|
||||
somewhat liberal in what format it accepts, and will attempt to
|
||||
return a \"likely\" value even for somewhat malformed strings.
|
||||
Values returned are identical to those of `decode-time', except
|
||||
that an unknown DST value is -1 and other unknown values are nil.
|
||||
The values returned are identical to those of `decode-time', but
|
||||
any unknown values other than DST are returned as nil, and an
|
||||
unknown DST value is returned as -1.
|
||||
Note that, unlike `decode-time', this function does not interpret
|
||||
the time string, and in particular the values of DST and TZ do not
|
||||
affect the returned value of date and time, they only affect the
|
||||
last two members of the returned value. This function simply
|
||||
parses the textual representation of date and time into separate
|
||||
numerical values, and doesn't care whether the time is local or UTC.
|
||||
|
||||
See `decode-time' for the meaning of FORM."
|
||||
(condition-case ()
|
||||
|
|
|
@ -91,7 +91,7 @@ Enable the mode if ARG is nil, omitted, or is a positive number.
|
|||
Disable the mode if ARG is a negative number.
|
||||
|
||||
To check whether the minor mode is enabled in the current buffer,
|
||||
evaluate `%s'.
|
||||
evaluate %s.
|
||||
|
||||
The mode's hook is called both when the mode is enabled and when
|
||||
it is disabled.")
|
||||
|
@ -128,8 +128,11 @@ it is disabled.")
|
|||
easy-mmode--arg-docstring
|
||||
(if global "global " "")
|
||||
mode-pretty-name
|
||||
;; Avoid having quotes turn into pretty quotes.
|
||||
(string-replace "'" "\\='" (format "%S" getter)))))
|
||||
(concat
|
||||
(if (symbolp getter) "the variable ")
|
||||
(format "`%s'"
|
||||
;; Avoid having quotes turn into pretty quotes.
|
||||
(string-replace "'" "\\='" (format "%S" getter)))))))
|
||||
(let ((start (point)))
|
||||
(insert argdoc)
|
||||
(when (fboundp 'fill-region) ;Don't break bootstrap!
|
||||
|
|
|
@ -932,14 +932,14 @@ of tests, or t, which refers to all tests named by symbols in `obarray'.
|
|||
Valid SELECTORs:
|
||||
|
||||
nil -- Selects the empty set.
|
||||
t -- Selects UNIVERSE.
|
||||
t -- Selects all of UNIVERSE. If UNIVERSE is t, selects all tests.
|
||||
:new -- Selects all tests that have not been run yet.
|
||||
:failed, :passed -- Select tests according to their most recent result.
|
||||
:expected, :unexpected -- Select tests according to their most recent result.
|
||||
a string -- A regular expression selecting all tests with matching names.
|
||||
a test -- (i.e., an object of the ert-test data-type) Selects that test.
|
||||
a symbol -- Selects the test that the symbol names, signals an
|
||||
`ert-test-unbound' error if none.
|
||||
a test -- (i.e., an object of the `ert-test' data-type) Selects that test.
|
||||
a symbol -- Selects the test named by the symbol, signals an
|
||||
`ert-test-unbound' error if no such test.
|
||||
\(member TESTS...) -- Selects the elements of TESTS, a list of tests
|
||||
or symbols naming tests.
|
||||
\(eql TEST) -- Selects TEST, a test or a symbol naming a test.
|
||||
|
@ -1375,10 +1375,10 @@ RESULT must be an `ert-test-result-with-condition'."
|
|||
(defun ert-run-tests-batch (&optional selector)
|
||||
"Run the tests specified by SELECTOR, printing results to the terminal.
|
||||
|
||||
SELECTOR works as described in `ert-select-tests', except if
|
||||
SELECTOR is nil, in which case all tests rather than none will be
|
||||
run; this makes the command line \"emacs -batch -l my-tests.el -f
|
||||
ert-run-tests-batch-and-exit\" useful.
|
||||
SELECTOR selects which tests to run as described in `ert-select-tests' when
|
||||
called with its second argument t, except if SELECTOR is nil, in which case
|
||||
all tests rather than none will be run; this makes the command line
|
||||
\"emacs -batch -l my-tests.el -f ert-run-tests-batch-and-exit\" useful.
|
||||
|
||||
Returns the stats object."
|
||||
(unless selector (setq selector 't))
|
||||
|
@ -2240,7 +2240,9 @@ STATS is the stats object; LISTENER is the results listener."
|
|||
(defun ert-run-tests-interactively (selector)
|
||||
"Run the tests specified by SELECTOR and display the results in a buffer.
|
||||
|
||||
SELECTOR works as described in `ert-select-tests'."
|
||||
SELECTOR selects which tests to run as described in `ert-select-tests'
|
||||
when called with its second argument t. Interactively, prompt for
|
||||
SELECTOR; the default t means run all the defined tests."
|
||||
(interactive
|
||||
(list (let ((default (if ert--selector-history
|
||||
;; Can't use `first' here as this form is
|
||||
|
|
|
@ -1274,9 +1274,17 @@ NOERROR is equal to `reload'), or otherwise emit a warning."
|
|||
(cond
|
||||
((assoc fn load-history) nil) ;We loaded the right file.
|
||||
((eq noerror 'reload) (load fn nil 'nomessage))
|
||||
(t (funcall (if noerror #'warn #'error)
|
||||
"Feature `%S' is now provided by a different file %s"
|
||||
feature fn)))))
|
||||
((and fn (memq feature features))
|
||||
(funcall (if noerror #'warn #'error)
|
||||
"Feature `%S' is now provided by a different file %s"
|
||||
feature fn))
|
||||
(fn
|
||||
(funcall (if noerror #'warn #'error)
|
||||
"Could not load file %s" fn))
|
||||
(t
|
||||
(funcall (if noerror #'warn #'error)
|
||||
"Could not locate file %s in load path"
|
||||
(or filename (symbol-name feature)))))))
|
||||
res))
|
||||
|
||||
(defun file-remote-p (file &optional identification connected)
|
||||
|
|
|
@ -505,7 +505,9 @@ DEFUN ("user-ptrp", Fuser_ptrp, Suser_ptrp, 1, 1, 0,
|
|||
#endif
|
||||
|
||||
DEFUN ("subrp", Fsubrp, Ssubrp, 1, 1, 0,
|
||||
doc: /* Return t if OBJECT is a built-in function. */)
|
||||
doc: /* Return t if OBJECT is a built-in or native compiled Lisp function.
|
||||
|
||||
See also `primitive-function-p' and `native-comp-function-p'. */)
|
||||
(Lisp_Object object)
|
||||
{
|
||||
if (SUBRP (object))
|
||||
|
|
Loading…
Reference in a new issue