>From cfee4565b5b573cf12bea716079160c0276e3b81 Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Thu, 6 Aug 2015 11:36:53 +0200 Subject: [PATCH 1/3] build: Produce 'guix-config' instead of using compile-time tricks. * emacs/guix-{init,profiles}.el.in: Rename to ... * emacs/guix-{init,profiles}.el: ... these. New files. Use 'guix-config'. * emacs/guix-config.el.in: New file. * emacs.am (nodist_lisp_DATA): Add it. Move them to ... (ELFILES): ... here. * .gitignore, configure.ac: Adjust accordingly. --- .gitignore | 3 +-- configure.ac | 3 +-- emacs.am | 6 ++--- emacs/guix-config.el.in | 31 +++++++++++++++++++++++ emacs/guix-init.el | 19 ++++++++++++++ emacs/guix-init.el.in | 19 -------------- emacs/guix-profiles.el | 64 +++++++++++++++++++++++++++++++++++++++++++++++ emacs/guix-profiles.el.in | 62 --------------------------------------------- 8 files changed, 119 insertions(+), 88 deletions(-) create mode 100644 emacs/guix-config.el.in create mode 100644 emacs/guix-init.el delete mode 100644 emacs/guix-init.el.in create mode 100644 emacs/guix-profiles.el delete mode 100644 emacs/guix-profiles.el.in diff --git a/.gitignore b/.gitignore index c7a6cdd..657c2b3 100644 --- a/.gitignore +++ b/.gitignore @@ -120,8 +120,7 @@ GTAGS /emacs/Makefile /emacs/guix-autoloads.el /emacs/guix-helper.scm -/emacs/guix-init.el -/emacs/guix-profiles.el +/emacs/guix-config.el /doc/os-config-bare-bones.texi /doc/os-config-desktop.texi /doc/*.1 diff --git a/configure.ac b/configure.ac index 2c8b9f0..bc1714e 100644 --- a/configure.ac +++ b/configure.ac @@ -200,8 +200,7 @@ AM_CONDITIONAL([HAVE_EMACS], [test "x$EMACS" != "xno"]) emacsuidir="${guilemoduledir}/guix/emacs" AC_SUBST([emacsuidir]) -AC_CONFIG_FILES([emacs/guix-init.el - emacs/guix-profiles.el +AC_CONFIG_FILES([emacs/guix-config.el emacs/guix-helper.scm]) AC_OUTPUT diff --git a/emacs.am b/emacs.am index 372b33e..e135ce4 100644 --- a/emacs.am +++ b/emacs.am @@ -24,10 +24,12 @@ ELFILES = \ emacs/guix-emacs.el \ emacs/guix-history.el \ emacs/guix-info.el \ + emacs/guix-init.el \ emacs/guix-list.el \ emacs/guix-messages.el \ emacs/guix-pcomplete.el \ emacs/guix-prettify.el \ + emacs/guix-profiles.el \ emacs/guix-utils.el \ emacs/guix.el @@ -37,9 +39,7 @@ dist_lisp_DATA = \ $(ELFILES) \ $(AUTOLOADS) -nodist_lisp_DATA = \ - emacs/guix-init.el \ - emacs/guix-profiles.el +nodist_lisp_DATA = emacs/guix-config.el $(AUTOLOADS): $(ELFILES) $(EMACS) --batch --eval \ diff --git a/emacs/guix-config.el.in b/emacs/guix-config.el.in new file mode 100644 index 0000000..8804f72 --- /dev/null +++ b/emacs/guix-config.el.in @@ -0,0 +1,31 @@ +;;; guix-config.el --- Compile-time configuration of Guix. + +;; Copyright © 2015 Mathieu Lirzin + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Code: + +(defconst guix-emacs-interface-directory + (replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@")) + +(defconst guix-state-directory + ;; This must match `NIX_STATE_DIR' as defined in `daemon.am'. + (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")) + +(provide 'guix-config) + +;;; guix-config.el ends here diff --git a/emacs/guix-init.el b/emacs/guix-init.el new file mode 100644 index 0000000..6ea6fcd --- /dev/null +++ b/emacs/guix-init.el @@ -0,0 +1,19 @@ +(require 'guix-config) +(require 'guix-autoloads) + +(defvar guix-load-path guix-emacs-interface-directory + "Directory with scheme files for \"guix.el\" package.") + +(defcustom guix-package-enable-at-startup t + "If non-nil, activate Emacs packages installed in a user profile. +Set this variable to nil before requiring `guix-init' file to +avoid loading autoloads of Emacs packages installed in +`guix-user-profile'." + :type 'boolean + :group 'guix) + +(when guix-package-enable-at-startup + (require 'guix-emacs) + (guix-emacs-load-autoloads 'all)) + +(provide 'guix-init) diff --git a/emacs/guix-init.el.in b/emacs/guix-init.el.in deleted file mode 100644 index 728bc37..0000000 --- a/emacs/guix-init.el.in +++ /dev/null @@ -1,19 +0,0 @@ -(require 'guix-autoloads) - -(defvar guix-load-path - (replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@") - "Directory with scheme files for \"guix.el\" package.") - -(defcustom guix-package-enable-at-startup t - "If non-nil, activate Emacs packages installed in a user profile. -Set this variable to nil before requiring `guix-init' file to -avoid loading autoloads of Emacs packages installed in -`guix-user-profile'." - :type 'boolean - :group 'guix) - -(when guix-package-enable-at-startup - (require 'guix-emacs) - (guix-emacs-load-autoloads 'all)) - -(provide 'guix-init) diff --git a/emacs/guix-profiles.el b/emacs/guix-profiles.el new file mode 100644 index 0000000..1a41745 --- /dev/null +++ b/emacs/guix-profiles.el @@ -0,0 +1,64 @@ +;;; guix-profiles.el --- Guix profiles + +;; Copyright © 2014 Alex Kost + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Code: + +(require 'guix-config) + +(defvar guix-user-profile + (expand-file-name "~/.guix-profile") + "User profile.") + +(defvar guix-default-profile + (concat guix-state-directory + "/profiles/per-user/" + (getenv "USER") + "/guix-profile") + "Default Guix profile.") + +(defvar guix-current-profile guix-default-profile + "Current profile.") + +(defun guix-profile-prompt (&optional default) + "Prompt for profile and return it. +Use DEFAULT as a start directory. If it is nil, use +`guix-current-profile'." + (let* ((path (read-file-name "Profile: " + (file-name-directory + (or default guix-current-profile)))) + (path (directory-file-name (expand-file-name path)))) + (if (string= path guix-user-profile) + guix-default-profile + path))) + +(defun guix-set-current-profile (path) + "Set `guix-current-profile' to PATH. +Interactively, prompt for PATH. With prefix, use +`guix-default-profile'." + (interactive + (list (if current-prefix-arg + guix-default-profile + (guix-profile-prompt)))) + (setq guix-current-profile path) + (message "Current profile has been set to '%s'." + guix-current-profile)) + +(provide 'guix-profiles) + +;;; guix-profiles.el ends here diff --git a/emacs/guix-profiles.el.in b/emacs/guix-profiles.el.in deleted file mode 100644 index 1e43707..0000000 --- a/emacs/guix-profiles.el.in +++ /dev/null @@ -1,62 +0,0 @@ -;;; guix-profiles.el --- Guix profiles - -;; Copyright © 2014 Alex Kost - -;; This file is part of GNU Guix. - -;; GNU Guix is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Guix is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Code: - -(defvar guix-user-profile - (expand-file-name "~/.guix-profile") - "User profile.") - -(defvar guix-default-profile - (concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix") - "/profiles/per-user/" - (getenv "USER") - "/guix-profile") - "Default Guix profile.") - -(defvar guix-current-profile guix-default-profile - "Current profile.") - -(defun guix-profile-prompt (&optional default) - "Prompt for profile and return it. -Use DEFAULT as a start directory. If it is nil, use -`guix-current-profile'." - (let* ((path (read-file-name "Profile: " - (file-name-directory - (or default guix-current-profile)))) - (path (directory-file-name (expand-file-name path)))) - (if (string= path guix-user-profile) - guix-default-profile - path))) - -(defun guix-set-current-profile (path) - "Set `guix-current-profile' to PATH. -Interactively, prompt for PATH. With prefix, use -`guix-default-profile'." - (interactive - (list (if current-prefix-arg - guix-default-profile - (guix-profile-prompt)))) - (setq guix-current-profile path) - (message "Current profile has been set to '%s'." - guix-current-profile)) - -(provide 'guix-profiles) - -;;; guix-profiles.el ends here -- 2.1.4