Hide the output of refreshing packages
This commit is contained in:
parent
ddf26ede7e
commit
40e71781db
1 changed files with 34 additions and 1 deletions
|
@ -38,12 +38,45 @@ To start off, first I need to enable lexical binding.
|
|||
(eval-and-compile (package-initialize))
|
||||
#+END_SRC
|
||||
|
||||
Some actions produce a lot of output that is usually uninteresting
|
||||
during compilation. However, this information may be crucial when an
|
||||
error occurs. So for these actions I can use this macro, which
|
||||
stores all sent messages in a temporary buffer and prints them when
|
||||
an error occurs, and hides them when it doesn't.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defmacro silently (title &rest body)
|
||||
"Only output something when an error occurs.
|
||||
Prefix with TITLE any output that occurs while executing BODY,
|
||||
but only when an error occurs, otherwise discard it."
|
||||
(declare (indent 1))
|
||||
(let ((buffer-var (cl-gensym))
|
||||
(error-var (cl-gensym)))
|
||||
`(with-temp-buffer
|
||||
(let ((,buffer-var (current-buffer)))
|
||||
(cl-letf (((symbol-function 'message)
|
||||
(lambda (msg &rest args)
|
||||
(with-current-buffer ,buffer-var
|
||||
(insert " " (apply 'format msg args) "\n")))))
|
||||
(condition-case ,error-var
|
||||
(progn ,@body)
|
||||
(error
|
||||
(princ ,(concat title " output:\n"))
|
||||
(princ (with-current-buffer ,buffer-var (buffer-string)))
|
||||
(princ "Error:\n")
|
||||
(princ " ")
|
||||
(princ (cadr ,error-var))
|
||||
(princ "\n"))))))))
|
||||
#+END_SRC
|
||||
|
||||
Refresh the package contents so packages can be installed from all
|
||||
configured archives. Don't do this at run-time because it slows down
|
||||
the process too much.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(eval-when-compile (package-refresh-contents))
|
||||
(eval-when-compile
|
||||
(silently "Refresh packages"
|
||||
(package-refresh-contents)))
|
||||
#+END_SRC
|
||||
|
||||
This macro is inspired by use-package, but I want to maintain some
|
||||
|
|
Loading…
Reference in a new issue