unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alex Kost <alezost@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH 1/3] emacs: Enable 'guix-build-log-mode' for build log files.
Date: Sat, 31 Oct 2015 23:30:10 +0300	[thread overview]
Message-ID: <874mh6lr1p.fsf@gmail.com> (raw)
In-Reply-To: <87vb9oe1yq.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Fri, 30 Oct 2015 17:49:17 +0100")

[-- Attachment #1: Type: text/plain, Size: 937 bytes --]

Ludovic Courtès (2015-10-30 19:49 +0300) wrote:

> Alex Kost <alezost@gmail.com> skribis:
>
>> As suggested by Ludovic on IRC, after this patch, build log files (from
>> /var/log/guix/drvs) will be displayed in a 'guix-build-log-mode'.
>>
>> I'm not sure about regexp though: are these files always "bz2" and
>> ".../XX/XXXXX-30-more-characters-XXXXX/..."?
>
> It’s not necessarily bz2, see ‘guix-daemon --disable-log-compression’.

Thanks for the pointer, now I see.

> The regexp should match 32 characters of ‘%nix-base32-chars’ in (guix
> base32) if we want to be pedantic.

At first I didn't want to be so pedantic, but since these base32 chars
are used in 'guix-prettify-regexp' anyway, I agree, thanks!

> Could you update the patch accordingly?

So I'm attaching 2 patches: one for adding a regexp to match a hash
character and another for adding 'guix-build-log-mode' to
'auto-mode-alist'.


[-- Attachment #2: 0001-emacs-Add-guix-hash-char-regexp.patch --]
[-- Type: text/x-patch, Size: 1910 bytes --]

From 11fea59d41063b3511a84a0d783cfa2016ed68c4 Mon Sep 17 00:00:00 2001
From: Alex Kost <alezost@gmail.com>
Date: Sat, 31 Oct 2015 21:36:41 +0300
Subject: [PATCH 1/2] emacs: Add 'guix-hash-char-regexp'.

* emacs/guix-utils.el (guix-hash-char-regexp): New constant.
* emacs/guix-prettify.el (guix-prettify-regexp): Use it.
---
 emacs/guix-prettify.el | 8 ++++----
 emacs/guix-utils.el    | 6 ++++++
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/emacs/guix-prettify.el b/emacs/guix-prettify.el
index 38d72e8..0411aee 100644
--- a/emacs/guix-prettify.el
+++ b/emacs/guix-prettify.el
@@ -84,10 +84,10 @@ disabling `guix-prettify-mode' a little faster."
   ;; http://hydra.gnu.org/nar/…-foo-0.1
   ;; http://hydra.gnu.org/log/…-foo-0.1
 
-  (rx "/" (or "store" "nar" "log") "/"
-      ;; Hash-parts do not include "e", "o", "u" and "t".  See base32Chars
-      ;; at <https://github.com/NixOS/nix/blob/master/src/libutil/hash.cc>
-      (group (= 32 (any "0-9" "a-d" "f-n" "p-s" "v-z"))))
+  (rx-to-string
+   `(and "/" (or "store" "nar" "log") "/"
+         (group (= 32 (regexp ,guix-hash-char-regexp))))
+   t)
   "Regexp matching file names for prettifying.
 
 Disable `guix-prettify-mode' before modifying this variable and
diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el
index d1f088b..d8dad91 100644
--- a/emacs/guix-utils.el
+++ b/emacs/guix-utils.el
@@ -33,6 +33,12 @@
   "String used to format time values.
 For possible formats, see `format-time-string'.")
 
+(defconst guix-hash-char-regexp
+  ;; Hash parts do not include "e", "o", "u" and "t".  See base32Chars
+  ;; at <https://github.com/NixOS/nix/blob/master/src/libutil/hash.cc>.
+  "[0-9a-df-np-sv-z]"
+  "Regexp matching a character used by Nix base32 hash.")
+
 (defun guix-get-string (val &optional face)
   "Convert VAL into a string and return it.
 
-- 
2.5.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-emacs-Enable-guix-build-log-mode-for-build-log-files.patch --]
[-- Type: text/x-patch, Size: 1397 bytes --]

From a9a1b1ef7c272a188745d367745f9ef4fc155be9 Mon Sep 17 00:00:00 2001
From: Alex Kost <alezost@gmail.com>
Date: Thu, 29 Oct 2015 20:48:53 +0300
Subject: [PATCH 2/2] emacs: Enable 'guix-build-log-mode' for build log files.

* emacs/guix-build-log.el (auto-mode-alist): Add 'guix-build-log-mode'
  to 'auto-mode-alist'.
---
 emacs/guix-build-log.el | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/emacs/guix-build-log.el b/emacs/guix-build-log.el
index c209100..ae2631e 100644
--- a/emacs/guix-build-log.el
+++ b/emacs/guix-build-log.el
@@ -24,6 +24,8 @@
 
 ;;; Code:
 
+(require 'guix-utils)
+
 (defgroup guix-build-log nil
   "Settings for `guix-build-log-mode'."
   :group 'guix)
@@ -346,6 +348,18 @@ programmatically using hooks:
   (when font-lock-mode
     (font-lock-fontify-buffer)))
 
+;;;###autoload
+(add-to-list 'auto-mode-alist
+             ;; Regexp for log files (usually placed in /var/log/guix/...)
+             (cons (rx-to-string
+                    `(and "guix/drvs/"
+                          (= 2 (regexp ,guix-hash-char-regexp)) "/"
+                          (= 30 (regexp ,guix-hash-char-regexp))
+                          "-" (+ (any alnum "-+."))
+                          ".drv" (? ".bz2") string-end)
+                    t)
+                   'guix-build-log-mode))
+
 (provide 'guix-build-log)
 
 ;;; guix-build-log.el ends here
-- 
2.5.0


  reply	other threads:[~2015-10-31 20:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-29 20:32 [PATCH 1/3] emacs: Enable 'guix-build-log-mode' for build log files Alex Kost
2015-10-30 16:49 ` Ludovic Courtès
2015-10-31 20:30   ` Alex Kost [this message]
2015-11-01 17:20     ` Ludovic Courtès
2015-11-02 13:01       ` Alex Kost

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874mh6lr1p.fsf@gmail.com \
    --to=alezost@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).