From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: Re: [PATCH] gnu: guix: Set 'guix-dot-program' emacs variable. Date: Fri, 16 Oct 2015 21:21:50 +0300 Message-ID: <87twpqy8qp.fsf@gmail.com> References: <877fmnkj61.fsf@gmail.com> <87si5buswd.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:33879) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zn9de-0005To-4f for guix-devel@gnu.org; Fri, 16 Oct 2015 14:21:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zn9dX-0006tD-Al for guix-devel@gnu.org; Fri, 16 Oct 2015 14:21:55 -0400 In-Reply-To: <87si5buswd.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Fri, 16 Oct 2015 10:20:02 +0200") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Ludovic Court=C3=A8s (2015-10-16 11:20 +0300) wrote: > Alex Kost skribis: > >> What about modifying =E2=80=98guix=E2=80=99 package to make various "Vie= w graph" actions >> in "M-x guix" work by default (without installing graphviz)? > > I would rather change Guix itself: What about adding =E2=80=98guix-dot-pr= ogram=E2=80=99 > to guix-config.el.in, set to "@DOT_USER_PROGRAM@" (which doesn=E2=80=99t = exist > yet)? Great idea! However I think instead of moving =E2=80=98guix-dot-program=E2= =80=99 to "guix-config.el.in", it is better to move =E2=80=98guix-guile-program=E2=80= =99 to "guix-external.el" instead (explained below). > We can=E2=80=99t use @DOT@ because currently it is set to something like: > > DOT=3D'${SHELL} /home/ludo/src/guix/build-aux/missing dot' Yes, that's why I didn't use @DOT@, and decided to modify the =E2=80=98guix= =E2=80=99 package instead. > So we need an AC_PATH_PROG for dot that defines the =E2=80=98DOT_USER_PRO= GRAM=E2=80=99 > substitution variable. > > Does that make sense? Yes, this is great! I didn't think to go this way, thanks! Along with the patch for this change, I'm also attaching a patch to "improve" guix-config.el: to make all its constants begin with "guix-config-" prefix and to use them in the real variables that may be modified by a user. WDYT? --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-build-Set-DOT_USER_PROGRAM-for-Emacs-interface.patch Content-Transfer-Encoding: quoted-printable >From dd793147718cb18766268c8aad50d24b88ffe6b6 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Fri, 16 Oct 2015 20:34:32 +0300 Subject: [PATCH 1/2] build: Set DOT_USER_PROGRAM for Emacs interface. MIME-Version: 1.0 Content-Type: text/plain; charset=3DUTF-8 Content-Transfer-Encoding: 8bit Suggested by Ludovic Court=C3=A8s . * configure.ac: Set DOT_USER_PROGRAM variable. * emacs/guix-config.el.in (guix-config-dot-program): New constant. * emacs/guix-external.el (guix-dot-program): Use it. --- configure.ac | 1 + emacs/guix-config.el.in | 4 ++++ emacs/guix-external.el | 7 ++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index bb3d947..74683fb 100644 --- a/configure.ac +++ b/configure.ac @@ -206,6 +206,7 @@ AC_CONFIG_FILES([pre-inst-env], [chmod +x pre-inst-env]) AC_CONFIG_FILES([test-env], [chmod +x test-env]) =20 dnl Emacs interface. +AC_PATH_PROG([DOT_USER_PROGRAM], [dot]) AM_PATH_LISPDIR AM_CONDITIONAL([HAVE_EMACS], [test "x$EMACS" !=3D "xno"]) =20 diff --git a/emacs/guix-config.el.in b/emacs/guix-config.el.in index 16434ce..b7020de 100644 --- a/emacs/guix-config.el.in +++ b/emacs/guix-config.el.in @@ -1,6 +1,7 @@ ;;; guix-config.el --- Compile-time configuration of Guix. =20 ;; Copyright =C2=A9 2015 Mathieu Lirzin +;; Copyright =C2=A9 2015 Alex Kost =20 ;; This file is part of GNU Guix. =20 @@ -35,6 +36,9 @@ strings of the form: =20 Where ARGS is a list of arguments to the guile program.") =20 +(defconst guix-config-dot-program "@DOT_USER_PROGRAM@" + "Name of the 'dot' executable defined at the configure time.") + (provide 'guix-config) =20 ;;; guix-config.el ends here diff --git a/emacs/guix-external.el b/emacs/guix-external.el index d233473..ce83589 100644 --- a/emacs/guix-external.el +++ b/emacs/guix-external.el @@ -23,11 +23,16 @@ =20 ;;; Code: =20 +(require 'guix-config) + (defgroup guix-external nil "Settings for external programs." :group 'guix) =20 -(defcustom guix-dot-program (executable-find "dot") +(defcustom guix-dot-program + (if (string=3D "" guix-config-dot-program) + (executable-find "dot") + guix-config-dot-program) "Name of the 'dot' executable." :type 'string :group 'guix-external) --=20 2.5.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0002-emacs-config-Use-emacs-config-prefix-for-constants.patch >From be9e01b3c2d6ca9f47c5bdac38effe7a7bb707dc Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Fri, 16 Oct 2015 20:48:24 +0300 Subject: [PATCH 2/2] emacs: config: Use "emacs-config-" prefix for constants. * emacs/guix-config.el.in (guix-emacs-interface-directory, guix-state-directory): Rename to ... (guix-config-emacs-interface-directory, guix-config-state-directory): ...this. (guix-config-guile-program): New constant. (guix-guile-program): Move to ... * emacs/guix-external.el (guix-guile-program): ...here. Make it a 'defcustom'. * emacs/guix-profiles.el (guix-default-profile): Use 'guix-config-state-directory'. * emacs/guix-backend.el (guix-load-path): Use 'guix-config-emacs-interface-directory'. --- emacs/guix-backend.el | 3 ++- emacs/guix-config.el.in | 14 ++++---------- emacs/guix-external.el | 11 +++++++++++ emacs/guix-profiles.el | 2 +- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/emacs/guix-backend.el b/emacs/guix-backend.el index 412d648..e7c158b 100644 --- a/emacs/guix-backend.el +++ b/emacs/guix-backend.el @@ -56,9 +56,10 @@ (require 'geiser-guile) (require 'guix-geiser) (require 'guix-config) +(require 'guix-external) (require 'guix-emacs) -(defvar guix-load-path guix-emacs-interface-directory +(defvar guix-load-path guix-config-emacs-interface-directory "Directory with scheme files for \"guix.el\" package.") (defvar guix-helper-file diff --git a/emacs/guix-config.el.in b/emacs/guix-config.el.in index b7020de..a02b362 100644 --- a/emacs/guix-config.el.in +++ b/emacs/guix-config.el.in @@ -20,21 +20,15 @@ ;;; Code: -(defconst guix-emacs-interface-directory +(defconst guix-config-emacs-interface-directory (replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@")) -(defconst guix-state-directory +(defconst guix-config-state-directory ;; This must match `NIX_STATE_DIR' as defined in `daemon.am'. (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")) -(defvar guix-guile-program "@GUILE@" - "Name of the guile executable used for Guix REPL. -May be either a string (the name of the executable) or a list of -strings of the form: - - (NAME . ARGS) - -Where ARGS is a list of arguments to the guile program.") +(defconst guix-config-guile-program "@GUILE@" + "Name of the 'guile' executable defined at the configure time.") (defconst guix-config-dot-program "@DOT_USER_PROGRAM@" "Name of the 'dot' executable defined at the configure time.") diff --git a/emacs/guix-external.el b/emacs/guix-external.el index ce83589..0af52c3 100644 --- a/emacs/guix-external.el +++ b/emacs/guix-external.el @@ -29,6 +29,17 @@ "Settings for external programs." :group 'guix) +(defcustom guix-guile-program guix-config-guile-program + "Name of the 'guile' executable used for Guix REPL. +May be either a string (the name of the executable) or a list of +strings of the form: + + (NAME . ARGS) + +Where ARGS is a list of arguments to the guile program." + :type 'string + :group 'guix-external) + (defcustom guix-dot-program (if (string= "" guix-config-dot-program) (executable-find "dot") diff --git a/emacs/guix-profiles.el b/emacs/guix-profiles.el index 1a41745..2c19368 100644 --- a/emacs/guix-profiles.el +++ b/emacs/guix-profiles.el @@ -26,7 +26,7 @@ "User profile.") (defvar guix-default-profile - (concat guix-state-directory + (concat guix-config-state-directory "/profiles/per-user/" (getenv "USER") "/guix-profile") -- 2.5.0 --=-=-=--