From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: Re: Guix and Emacs Integration for Polyglot Development Date: Sat, 15 Sep 2018 00:34:21 +0300 Message-ID: <875zz7epb6.fsf@gmail.com> References: <87wos9rp5y.fsf@gnu.org> <87wos5cma6.fsf@gnu.org> <87tvn9s14w.fsf@gnu.org> <87k1o5b05d.fsf@gnu.org> <875zz9gm8w.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:59352) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g0vjO-00033F-AX for help-guix@gnu.org; Fri, 14 Sep 2018 17:34:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g0vjK-0001XD-AH for help-guix@gnu.org; Fri, 14 Sep 2018 17:34:26 -0400 In-Reply-To: <875zz9gm8w.fsf@gnu.org> (Jan Nieuwenhuizen's message of "Thu, 13 Sep 2018 22:45:19 +0200") List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: Jan Nieuwenhuizen Cc: help-guix@gnu.org Jan Nieuwenhuizen (2018-09-13 22:45 +0200) wrote: > (defun guix-switch-profile (&optional profile) > "Switch Emacs' environment to PROFILE. PROFILE can be a named > profile (like ~/.guix-profile, ~/.config/guix/work) or an > environment (like: echo $GUIX_ENVIRONMENT)." > > (interactive "fprofile: ") > (lexical-let* ((guix-program > `(begin > (use-modules (ice-9 match) > (guix profiles) > (guix search-paths)) > (let ((specs (profile-search-paths ,(expand-file-name profile)))) > (map > (match-lambda ((spec . dir) > (list (search-path-specification-variable spec) > (or (search-path-specification-separator spec) "") > dir))) > specs)))) > (guix-output (guix-eval (format "%S" guix-program))) > (profile-sexp (car (read-from-string (car guix-output))))) > (mapcar* > (lambda (variable separator path) > (lexical-let ((value (cond ((string-empty-p separator) path) > ((getenv variable) (concat path separator (getenv variable))) > (t path)))) > (setenv variable value))) > (mapcar #'car profile-sexp) > (mapcar #'cadr profile-sexp) > (mapcar #'caddr profile-sexp)))) Thank you! I'm going to apply it. I have extracted the guile code and put it to the "scheme side" of Emacs-Guix, also I have rewritten this command a bit. The only thing: I don't like the name (neither "guix-switch-profile" nor "guix-profile-apply"). I think "guix-set-emacs-environment" suits better, as setting the environment is exactly what this command does, WDYT? You may look at my version of your patch (not in "master" yet) here: https://notabug.org/alezost/emacs-guix/commit/a4bd696f0b8c564c1e654c426e9059cac1607996 Let me know, if you think something should be fixed there. -- Alex