* guix/gexp.scm (<gexp>)[modules]: New field.
(gexp-modules): New procedure.
(gexp->derivation): Use it and append the result to %MODULES.
Update docstring to mark #:modules as deprecated.
(current-imported-modules, with-imported-modules): New macros.
(gexp): Pass CURRENT-IMPORTED-MODULES as second argument to 'gexp'.
(gexp->script): Use and honor 'gexp-modules'; define '%modules'.
* tests/gexp.scm ("gexp->derivation & with-imported-modules")
("gexp->derivation & nested with-imported-modules")
("gexp-modules & ungexp", "gexp-modules & ungexp-splicing"):
New tests.
("program-file"): Use 'with-imported-modules'. Remove #:modules
argument to 'program-file'.
* doc/guix.texi (G-Expressions): Document 'with-imported-modules'.
Mark #:modules of 'gexp->derivation' as deprecated.
* emacs/guix-devel.el: Add syntax for 'with-imported-modules'.
(guix-devel-keywords): Add it.
* .dir-locals.el: Likewise.
* emacs/guix-main.scm: Use (guix scripts) module for 'build-package'
procedure.
* emacs/guix-base.el (guix-build-package): New procedure.
* emacs/guix-ui-package.el (guix-package-info-insert-build-button): New
procedure.
(guix-package-info-button-functions): New variable.
(guix-package-info-insert-misc): Insert buttons using it.
* doc/local.mk: Use "%D%" for the directory of the fragment relative to
the base 'Makefile.am'.
* emacs/local.mk: Likewise.
* gnu/local.mk: Likewise.
* nix/local.mk: Likewise.
* emacs/guix-config.el.in (guix-config-name, guix-config-version): New
constants.
* emacs/guix-about.el (guix-version): New command. New file.
* emacs/local.mk (ELFILES): Add it.
Reported by rsiddharth on #guix.
This is a followup to commit 958dd3ce68.
* emacs/guix-main.scm: Use (guix combinators) module as 'memoize' moved there.
* emacs/guix-license.el (guix-license-file): New procedure.
(guix-find-license-definition): New command.
* doc/emacs.texi (Emacs Licenses): Document it.
This follows a convention used by some other GNU packages like Autoconf,
Bison, Coreutils, and Gnulib.
* doc.am: Rename to ...
* doc/local.mk: ... this.
* emacs.am: Rename to ...
* emacs/local.mk: ... this.
* gnu-system.am: Rename to ...
* gnu/local.mk: ... this.
* daemon.am: Rename to ...
* nix/local.mk: ... this.
* Makefile.am: Adapt to them.
* doc/guix.texi (Porting to a New Platform): Adapt documentation.
* guix/config.scm.in (%state-directory, %config-directory): Adapt comments.
* emacs/guix-config.el.in (guix-config-state-directory): Likewise.
* emacs/guix-ui-package.el (guix-package-info-insert-location): New
procedure.
(guix-package-info-format): Use it.
(guix-output-info-format): Likewise.
* emacs/guix-ui-license.el (guix-license-message): New procedure.
(guix-license-info-message-function): Use it.
(guix-license-list-message-function): Likewise.
* emacs/guix-ui.el (guix-ui-buffer-name-default): Rename to...
(guix-ui-buffer-name-short): ... this.
(guix-ui-buffer-name-full): New procedure.
(guix-ui-buffer-name-function): Set it as default.
* emacs/guix-ui.el (guix-ui-buffer-name-default): Extract the code to
compose buffer name and move to...
* emacs/guix-utils.el (guix-compose-buffer-name): ... here. New procedure.
'guix-init' served 2 purposes:
- to autoload guix commands (by requiring 'guix-autoloads');
- and to autoload Emacs packages installed with Guix (by requiring
'guix-emacs').
The second purpose is not actual anymore, as Emacs package handles this
task now, so there is no need in 'guix-init' anymore.
* emacs/guix-init.el: Do not require 'guix-emacs'. Add a deprecation
message.
* doc/emacs.texi (Emacs Initial Setup): Recommend to use
'guix-autoloads' instead of 'guix-init'.
Reported by Ludovic Courtès <ludo@gnu.org>.
* emacs/guix-ui-package.el (guix-package-name): Check 'spec' property.
(guix-package-info-insert-heading): Use "name version" for button label,
write name specification to 'spec' property.
Fixes <http://bugs.gnu.org/22933>.
* emacs/guix-main.scm (package-location-string): Rewrite to handle the
case where 'packages-by-name' returns the empty list.
Co-authored-by: Mathieu Lirzin <mthl@gnu.org>
This is a followup to commit 1b846da8c3.
* emacs/guix-base.el (guix-package-name-specification): Use "@" instead
of "-".
* emacs/guix-main.scm (name+version->full-name): Likewise.
(package-inputs-names): Use 'make-package-specification' instead of
'package-full-name'.
(full-name->name+version): Update the docstring.
* emacs/guix-ui-package.el (guix-packages-by-name): Likewise.
* emacs/guix-hydra.el (guix-hydra-job-name-specification): New procedure.
* emacs/guix-ui-package.el (guix-package-info-insert-systems)
(guix-package-list-latest-builds): Use it.
Fixes <http://bugs.gnu.org/22607>.
Reported by myglc2 <myglc2@gmail.com>.
Remove possibilities to install/delete packages to/from a system profile
both for "Package List" and "Package Info" buffers.
* emacs/guix-profiles.el (guix-system-profile-regexp): New variable.
(guix-system-profile?): New procedure.
* emacs/guix-ui-package.el (guix-package-info-insert-output): Do not
display "Install"/"Delete" button for a system profile.
(guix-package-assert-non-system-profile): New procedure.
(guix-package-execute-actions): Use it.
* emacs/guix-buffer.el (guix-buffer-set): Set 'guix-buffer-item' early,
so that it can be used during displaying entries. For example, this
allows us to use a value of the current guix profile when package
entries are inserted in a "List" or "Info" buffer.
Fixes <http://bugs.gnu.org/22550>.
Reported by myglc2 <myglc2@gmail.com>.
* emacs/guix-emacs.el (guix-emacs-autoload-packages): Autoload Emacs
packages installed in a system profile.
This code should belong to "guix-backend" as it is run after a REPL
operation to check if new Emacs packages have been installed and to
autoload them if needed.
* emacs/guix-emacs.el (guix-emacs-activate-after-operation)
(guix-emacs-load-autoloads-maybe): Move and rename to...
* emacs/guix-backend.el (guix-emacs-activate-after-operation)
(guix-repl-autoload-emacs-packages-maybe): ... this.
(guix-after-repl-operation-hook): Adjust for the renaming.
* emacs/guix-emacs.el: (guix-emacs-directories): New procedure.
(guix-emacs-find-autoloads-in-directory): Rename to...
(guix-emacs-find-autoloads): ... this.
(guix-emacs-load-autoloads): Remove. Replace with...
(guix-emacs-autoload-packages): ... this. New procedure. At first,
find a list of directories with Emacs packages, then add them to
'load-path' and finally, load autoloads.
* doc/emacs.texi (Emacs Initial Setup): Adjust accordingly.
Reported by Christopher Allan Webber <cwebber@dustycloud.org> on #guix.
Several modules use the code from 'guix-profiles' without requiring it. It
was never noticed before commits e4e2154644
and 13fe4891fa, because 'guix-emacs' required
this module. But now, when 'site-start.el' loads 'guix-emacs',
'guix-profiles' may not exist yet, so it may not be required. This will
lead to an error when some of "M-x guix-..." commands will be used. See
<https://gnunet.org/bot/log/guix/2016-02-03#T898859>.
* emacs/guix-base.el: Require 'guix-profiles'.
* emacs/guix-ui.el: Likewise.
* emacs/guix-ui-generation.el: Likewise.
* emacs/guix-ui-package.el: Likewise.
This is a followup to commit 47c0f92c37.
* emacs/guix-command.el (guix-command-improve-common-build-argument):
Use "W" key for '--with-input' option (leave "w" for '--with-source').