mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-24 06:20:43 -08:00
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.
This commit is contained in:
parent
97d1f672ac
commit
0185d76e74
19 changed files with 407 additions and 290 deletions
|
|
@ -24,7 +24,6 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(require 'format-spec)
|
||||
(eval-when-compile
|
||||
(require 'cl-lib)
|
||||
(require 'imap))
|
||||
|
|
@ -769,14 +768,14 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
|
|||
"Fetcher for single-file sources."
|
||||
(mail-source-bind (file source)
|
||||
(mail-source-run-script
|
||||
prescript (format-spec-make ?t mail-source-crash-box)
|
||||
prescript `((?t . ,mail-source-crash-box))
|
||||
prescript-delay)
|
||||
(let ((mail-source-string (format "file:%s" path)))
|
||||
(if (mail-source-movemail path mail-source-crash-box)
|
||||
(prog1
|
||||
(mail-source-callback callback path)
|
||||
(mail-source-run-script
|
||||
postscript (format-spec-make ?t mail-source-crash-box))
|
||||
postscript `((?t . ,mail-source-crash-box)))
|
||||
(mail-source-delete-crash-box))
|
||||
0))))
|
||||
|
||||
|
|
@ -784,7 +783,7 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
|
|||
"Fetcher for directory sources."
|
||||
(mail-source-bind (directory source)
|
||||
(mail-source-run-script
|
||||
prescript (format-spec-make ?t path) prescript-delay)
|
||||
prescript `((?t . ,path)) prescript-delay)
|
||||
(let ((found 0)
|
||||
(mail-source-string (format "directory:%s" path)))
|
||||
(dolist (file (directory-files
|
||||
|
|
@ -793,7 +792,7 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
|
|||
(funcall predicate file)
|
||||
(mail-source-movemail file mail-source-crash-box))
|
||||
(cl-incf found (mail-source-callback callback file))
|
||||
(mail-source-run-script postscript (format-spec-make ?t path))
|
||||
(mail-source-run-script postscript `((?t . ,path)))
|
||||
(mail-source-delete-crash-box)))
|
||||
found)))
|
||||
|
||||
|
|
@ -803,8 +802,8 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
|
|||
;; fixme: deal with stream type in format specs
|
||||
(mail-source-run-script
|
||||
prescript
|
||||
(format-spec-make ?p password ?t mail-source-crash-box
|
||||
?s server ?P port ?u user)
|
||||
`((?p . ,password) (?t . ,mail-source-crash-box)
|
||||
(?s . ,server) (?P . ,port) (?u . ,user))
|
||||
prescript-delay)
|
||||
(let ((from (format "%s:%s:%s" server user port))
|
||||
(mail-source-string (format "pop:%s@%s" user server))
|
||||
|
|
@ -825,8 +824,8 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
|
|||
(mail-source-fetch-with-program
|
||||
(format-spec
|
||||
program
|
||||
(format-spec-make ?p password ?t mail-source-crash-box
|
||||
?s server ?P port ?u user))))
|
||||
`((?p . ,password) (?t . ,mail-source-crash-box)
|
||||
(?s . ,server) (?P . ,port) (?u . ,user)))))
|
||||
(function
|
||||
(funcall function mail-source-crash-box))
|
||||
;; The default is to use pop3.el.
|
||||
|
|
@ -863,8 +862,8 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
|
|||
(setq mail-source-new-mail-available nil))
|
||||
(mail-source-run-script
|
||||
postscript
|
||||
(format-spec-make ?p password ?t mail-source-crash-box
|
||||
?s server ?P port ?u user))
|
||||
`((?p . ,password) (?t . ,mail-source-crash-box)
|
||||
(?s . ,server) (?P . ,port) (?u . ,user)))
|
||||
(mail-source-delete-crash-box)))
|
||||
;; We nix out the password in case the error
|
||||
;; was because of a wrong password being given.
|
||||
|
|
@ -1077,8 +1076,9 @@ This only works when `display-time' is enabled."
|
|||
"Fetcher for imap sources."
|
||||
(mail-source-bind (imap source)
|
||||
(mail-source-run-script
|
||||
prescript (format-spec-make ?p password ?t mail-source-crash-box
|
||||
?s server ?P port ?u user)
|
||||
prescript
|
||||
`((?p . ,password) (?t . ,mail-source-crash-box)
|
||||
(?s . ,server) (?P . ,port) (?u . ,user))
|
||||
prescript-delay)
|
||||
(let ((from (format "%s:%s:%s" server user port))
|
||||
(found 0)
|
||||
|
|
@ -1143,8 +1143,8 @@ This only works when `display-time' is enabled."
|
|||
(kill-buffer buf)
|
||||
(mail-source-run-script
|
||||
postscript
|
||||
(format-spec-make ?p password ?t mail-source-crash-box
|
||||
?s server ?P port ?u user))
|
||||
`((?p . ,password) (?t . ,mail-source-crash-box)
|
||||
(?s . ,server) (?P . ,port) (?u . ,user)))
|
||||
found)))
|
||||
|
||||
(provide 'mail-source)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue