]> git.eshelyaron.com Git - emacs.git/commit
Fix and extend format-spec (bug#41758)
authorBasil L. Contovounesios <contovob@tcd.ie>
Fri, 29 May 2020 18:56:14 +0000 (19:56 +0100)
committerBasil L. Contovounesios <contovob@tcd.ie>
Thu, 18 Jun 2020 11:46:21 +0000 (12:46 +0100)
commit0185d76e7426eb1b58a9b60b0d18e763ddf57dea
tree68e6f560b1751902e98a241a3bf732b9fd596364
parent97d1f672ac1529ac07a999405f630cb19a1010eb
Fix and extend format-spec (bug#41758)

* lisp/format-spec.el: Use lexical-binding.  Remove dependence on
subr-x.el.
(format-spec-make): Clarify docstring.
(format-spec--parse-modifiers): Rename to...
(format-spec--parse-flags): ...this and simplify.  In particular,
don't bother parsing :space-pad which is redundant and unused.
(format-spec--pad): Remove, replacing with...
(format-spec--do-flags): ...this new helper function which performs
more of format-spec's supported text manipulation.
(format-spec): Autoload.  Allow optional argument to take on special
values 'ignore' and 'delete' for more control over what happens when
a replacement for a format specification isn't provided.  Bring back
proper support for a precision modifier similar to that of 'format'.

* lisp/battery.el (battery-format): Rewrite in terms of format-spec.
(battery-echo-area-format, battery-mode-line-format): Mention
support of format-spec syntax in docstrings.

* doc/lispref/strings.texi (Custom Format Strings):
* etc/NEWS: Document and announce these changes.

* lisp/dired-aux.el (dired-do-compress-to):
* lisp/erc/erc-match.el (erc-log-matches):
* lisp/erc/erc.el (erc-update-mode-line-buffer):
* lisp/gnus/gnus-sieve.el (gnus-sieve-update):
* lisp/gnus/gssapi.el (open-gssapi-stream):
* lisp/gnus/mail-source.el (mail-source-fetch-file)
(mail-source-fetch-directory, mail-source-fetch-pop)
(mail-source-fetch-imap):
* lisp/gnus/message.el (message-insert-formatted-citation-line):
* lisp/image-dired.el:
* lisp/net/eww.el:
* lisp/net/imap.el (imap-kerberos4-open, imap-gssapi-open)
(imap-shell-open):
* lisp/net/network-stream.el (network-stream-open-shell):
* lisp/obsolete/tls.el (open-tls-stream):
* lisp/textmodes/tex-mode.el:
Remove extraneous loads and autoloads of format-spec now that it is
autoloaded and simplify its uses where possible.

* test/lisp/battery-tests.el (battery-format): Test new format-spec
support.
* test/lisp/format-spec-tests.el (test-format-spec): Rename to...
(format-spec) ...this, extending test cases.
(test-format-unknown): Rename to...
(format-spec-unknown): ...this, extending test cases.
(test-format-modifiers): Rename to...
(format-spec-flags): ...this.
(format-spec-make, format-spec-parse-flags, format-spec-do-flags)
(format-spec-do-flags-truncate, format-spec-do-flags-pad)
(format-spec-do-flags-chop, format-spec-do-flags-case): New tests.
19 files changed:
doc/lispref/strings.texi
etc/NEWS
lisp/battery.el
lisp/dired-aux.el
lisp/erc/erc-match.el
lisp/erc/erc.el
lisp/format-spec.el
lisp/gnus/gnus-sieve.el
lisp/gnus/gssapi.el
lisp/gnus/mail-source.el
lisp/gnus/message.el
lisp/image-dired.el
lisp/net/eww.el
lisp/net/imap.el
lisp/net/network-stream.el
lisp/obsolete/tls.el
lisp/textmodes/tex-mode.el
test/lisp/battery-tests.el
test/lisp/format-spec-tests.el