~ruther/guix-local

f4044b586d04c197325dec36eb35e77fe05028c7 — Alex Kost 10 years ago 0048552
emacs: Enable 'guix-build-log-minor-mode' in shell buffers.

* emacs/guix-build-log.el (guix-build-log-minor-mode-activate): New variable.
  (guix-build-log-minor-mode-activate-maybe): New function.
* emacs/guix-init.el: Add it to 'shell-mode-hook'.
* doc/emacs.texi (Emacs Build Log): Mention it.
3 files changed, 19 insertions(+), 7 deletions(-)

M doc/emacs.texi
M emacs/guix-build-log.el
M emacs/guix-init.el
M doc/emacs.texi => doc/emacs.texi +5 -7
@@ 646,13 646,11 @@ Toggle (show/hide) the bodies of all build phases.
@end table

There is also @kbd{M-x guix-build-log-minor-mode} which also provides
the same highlighting.  And as it is a minor mode, it can be enabled in
any buffer.  For example, if you are building some package in a shell
buffer (@pxref{Interactive Shell,,, emacs, The GNU Emacs Manual}), you
may enable @command{guix-build-log-minor-mode} to make it more colorful.
Guix build output is rather specific, so this new highlighting shouldn't
conflict with the existing one.  This mode also provides the same key
bindings as the major mode, but prefixed with @kbd{C-c}.
the same highlighting and the same key bindings as the major mode, but
prefixed with @kbd{C-c}.  By default, this minor mode is enabled in
shell buffers (@pxref{Interactive Shell,,, emacs, The GNU Emacs
Manual}).  If you don't like it, set
@code{guix-build-log-minor-mode-activate} to nil.


@node Emacs Completions

M emacs/guix-build-log.el => emacs/guix-build-log.el +13 -0
@@ 102,6 102,12 @@
  "Face for the number of seconds for a phase."
  :group 'guix-build-log-faces)

(defcustom guix-build-log-minor-mode-activate t
  "If non-nil, then `guix-build-log-minor-mode' is automatically
activated in `shell-mode' buffers."
  :type 'boolean
  :group 'guix-build-log)

(defcustom guix-build-log-mode-hook '()
  "Hook run after `guix-build-log-mode' is entered."
  :type 'hook


@@ 347,6 353,13 @@ programmatically using hooks:
    (font-lock-fontify-buffer)))

;;;###autoload
(defun guix-build-log-minor-mode-activate-maybe ()
  "Activate `guix-build-log-minor-mode' depending on
`guix-build-log-minor-mode-activate' variable."
  (when guix-build-log-minor-mode-activate
    (guix-build-log-minor-mode)))

;;;###autoload
(add-to-list 'auto-mode-alist
             ;; Regexp for log files (usually placed in /var/log/guix/...)
             (cons (rx "/guix/drvs/" (= 2 alnum) "/" (= 30 alnum)

M emacs/guix-init.el => emacs/guix-init.el +1 -0
@@ 15,5 15,6 @@ avoid loading autoloads of Emacs packages installed in
  (guix-emacs-load-autoloads 'all))

(add-hook 'scheme-mode-hook 'guix-devel-activate-mode-maybe)
(add-hook 'shell-mode-hook 'guix-build-log-minor-mode-activate-maybe)

(provide 'guix-init)