summaryrefslogtreecommitdiff
path: root/emacs/guix-main.scm
AgeCommit message (Collapse)Author
2016-03-08emacs: Gracefully handle wrong package names passed to 'guix-edit'.Ludovic Courtès
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>
2016-03-04emacs: Use '@' to separate package names and version numbers.Alex Kost
This is a followup to commit 1b846da8c372bee78851439fd9e72b2499115e5a. * 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.
2016-02-24Do not check package freshness during upgrade.Alex Kost
Fixes <http://bugs.gnu.org/22740>. Reported by Andreas Enge <andreas@enge.fr>. * gnu/packages.scm (waiting, ftp-open*, check-package-freshness): Remove. * guix/scripts/package.scm (options->installable): Adjust accordingly. * emacs/guix-main.scm (package->manifest-entry*): Likewise.
2016-01-25emacs: Add interface for licenses.Alex Kost
* emacs/guix-main.scm (%license-param-alist): New variable. (license->sexp, find-licenses, license-entries): New procedures. * emacs/guix-license.el (guix-license-get-entries) (guix-license-get-display, guix-license-insert-packages-button) (guix-license-insert-comment, guix-license-list-describe) (guix-license-list-show-packages): New procedures. (guix-licenses): New command. * doc/emacs.texi (Emacs Licenses): New node. (Emacs Interface): Add it. * doc/guix.texi (Top): Add it. * NEWS: Mention new interface.
2016-01-25emacs: Add 'guix-packages-by-license' command.Alex Kost
* emacs/guix-main.scm (packages-by-license): New procedure. (%patterns-makers): Add 'license' search type. * emacs/guix-messages.el (guix-message-packages-by-license): New procedure. (guix-messages): Use it. * emacs/guix-ui-package.el (guix-packages-by-license): New command. * doc/emacs.texi (Emacs Commands): Document it.
2016-01-25emacs: Add 'guix-browse-license-url' command.Alex Kost
* emacs/guix-main.scm (%licenses): New variable. (licenses, license-names, lookup-license, lookup-license-uri): New procedures. * emacs/guix-read.el (guix-license-names, guix-read-license-name): New procedures. * emacs/guix-license.el: New file. (guix-lookup-license-url): New procedure. (guix-browse-license-url): New command. * emacs.am (ELFILES): Add new file.
2016-01-16emacs: Add interface for system generations.Alex Kost
* emacs/guix-main.scm (system-generation-boot-parameters) (system-generation-param-alist, system-generation-sexps): New procedures. (entries): Add 'system-generation' entry type. * emacs/guix-messages.el (guix-result-message): Use the same messages for 'generation' and 'system-generation' entry types. * emacs/guix-ui-system-generation.el: New file. * emacs.am (ELFILES): Add it. * doc/emacs.texi (Emacs Commands): Document new commands. * NEWS: Mention new interface.
2016-01-16emacs: Remove 'generation' search type.Alex Kost
Use 'installed' search type instead. * emacs/guix-main.scm (%patterns-makers): Remove 'generation'. (package/output-sexps): Adjust accordingly. * emacs/guix-ui-generation.el (guix-generation-info-insert-number): Replace 'generation' search with 'installed'. (guix-generation-list-show-packages): Likewise. * emacs/guix-messages.el (guix-messages): Remove 'generation'.
2016-01-16emacs: Replace 'generation-diff' search with 'profile-diff'.Alex Kost
* emacs/guix-main.scm (generation-package-specifications): Rename to... (profile-package-specifications): ... this. Take a single 'profile' argument. (generation-difference): Rename to... (profile-difference): ... this. Take profiles as arguments. (package/output-sexps): Adjust accordingly. * emacs/guix-ui-generation.el (guix-generation-list-profiles-to-compare): New procedure. (guix-generation-list-show-added-packages) (guix-generation-list-show-removed-packages): Use it. * emacs/guix-messages.el (guix-messages): Replace 'generation-diff' with 'profile-diff'. (guix-message-outputs-by-diff): Adjust accordingly.
2016-01-16emacs: Find packages in system profiles.Alex Kost
For a usual profile, packages are placed in a profile directory itself, but for a system profile, packages are placed in 'profile' sub-directory. So we need to do some special cases for system profiles to find packages there as well. * emacs/guix-base.el (guix-packages-profile): New procedure. (guix-manifest-file): Use it. Add optional 'system?' argument. * emacs/guix-ui-generation.el (guix-system-generation?) (guix-generation-current-packages-profile): New procedures. (guix-generation-packages, guix-generation-insert-packages): Remove 'generation' argument. (guix-generation-packages-buffer): Add optional 'system?' argument. (guix-profile-generation-manifest-file) (guix-profile-generation-packages-buffer): Adjust accordingly. * emacs/guix-main.scm (generation-package-specifications+paths): Rename to... (profile->specifications+paths): ... this. Use a single 'profile' argument.
2016-01-07emacs: Display supported systems in "Package Info".Alex Kost
* emacs/guix-main.scm (%package-param-alist): Add 'systems'. * emacs/guix-ui-package.el (guix-package-info-insert-systems): New procedure. (guix-package-info-format): Add it. (guix-output-info-format): Likewise. (guix-package-info-titles): Add "Supported systems" title.
2015-12-15emacs: 'node-type' is in (guix graph) now.Alex Kost
This is a followup to commit 8fb583714f78d1b283523ef7edbb6e098946182f. * emacs/guix-main.scm (graph-type-names): Use 'node-type-name' from (guix graph) module.
2015-11-16emacs: 'display-search-paths' now takes a list of profiles.Ludovic Courtès
Fixes a regression introduced in fc2d233. * emacs/guix-main.scm (process-package-actions): Make second argument to 'display-search-paths' a list.
2015-11-02emacs: Add completions for '--type' option of 'refresh' popup.Alex Kost
* guix/scripts/refresh.scm: Export '%updaters'. * emacs/guix-main.scm (refresh-updater-names): New procedure. * emacs/guix-base.el (guix-refresh-updater-names): New function. * emacs/guix-read.el (guix-read-refresh-updater-names, guix-read-refresh-updater-names-string): New functions. * emacs/guix-command.el (guix-command-improve-refresh-argument): Use 'guix-read-refresh-updater-names-string'.
2015-09-15emacs: Display guix command errors in the minibuffer.Alex Kost
* emacs/guix-main.scm (output+error): New procedure. (guix-command-output): Use it. * emacs/guix-base.el (guix-command-output): Display error output in the minibuffer.
2015-09-08ui: Add package-description-string.Mathieu Lirzin
Provide support for Texinfo's markup in package description. * guix/ui.scm (%text-width): New parameter. (texi->plain-text): New variable. (package->recutils): Use them. (package-description-string): New variable. * emacs/guix-main.scm (%package-param-alist): Use it. * gnu/packages/perl.scm (perl-devel-globaldestruction) (perl-devel-lexalias, perl-exporter-lite): Adapt to Texinfo's markup. * gnu/packages/python.scm (python2-empy): Likewise.
2015-09-04emacs: Add support for "triplet" package inputs.Alex Kost
Fixes <http://bugs.gnu.org/21399>. * emacs/guix-main.scm (full-name->name+version): Adjust to handle "name-version:output" string. (package-inputs-names): Support ("name" package "output") inputs.
2015-09-01emacs: Add code to pipe guix output to external program.Alex Kost
* emacs/guix-main.scm: Use (ice-9 popen) module. (pipe-guix-output): New procedure.
2015-08-30emacs: Use prompt for packages instead popup for edit action.Alex Kost
* emacs/guix-base.el (guix-package-location): New function. (guix-edit-package): Rename and move to ... * emacs/guix.el (guix-edit): ...here. Make it interactive. * emacs/guix-command.el (guix-edit-action): New function (alias to 'guix-edit') to override the popup for edit command in "M-x guix". * emacs/guix-list.el (guix-list-edit-package): Adjust for 'guix-edit' renaming. * emacs/guix-main.scm (package-location-string): Allow to accept package id or package name as argument.
2015-08-30emacs: Add code to run guix command in REPL.Alex Kost
* emacs/guix-base.el (guix-run-command-in-repl, guix-command-output, guix-help-string): New functions. * emacs/guix-main.scm (guix-command, guix-command-output, help-string): New procedures.
2015-08-30emacs: Add 'guix-package-names'.Alex Kost
* emacs/guix-main.scm (package-names, package-names-lists): New procedures. * emacs/guix-base.el (guix-package-names): New function.
2015-08-30emacs: Add 'guix-graph-type-names'.Alex Kost
* emacs/guix-main.scm: Use (guix scripts graph) module. (graph-type-names): New procedure. * emacs/guix-base.el (guix-graph-type-names): New function.
2015-08-30emacs: Add 'guix-lint-checker-names'.Alex Kost
* emacs/guix-main.scm: Use (guix scripts lint) module. (lint-checker-names): New procedure. * emacs/guix-base.el (guix-lint-checker-names): New function.
2015-06-22emacs: Add "edit" command to a list of packages.Alex Kost
* emacs/guix-base.el (guix-edit-package): New function. * emacs/guix-list.el (guix-list-edit-package): New command. Bind it to "e" key. * emacs/guix-main.scm (package-location-string): New procedure. * doc/emacs.texi (Emacs List buffer): Document "e" key binding. * doc/guix.texi (Invoking guix edit): Mention "package list" buffer.
2015-05-29emacs: Report about "search paths" after operation.Alex Kost
* guix/scripts/package.scm: Export 'display-search-paths'. * emacs/guix-main.scm (process-package-actions): Use it.
2015-01-16emacs: In 'run-with-store' call, specify the guile-for-build.Ludovic Courtès
This fixes a regression introduced in commit e87f059. * emacs/guix-main.scm (process-package-actions): Add call to 'set-guile-for-build' in monadic expression.
2014-11-25emacs: Disable build traces produced by the daemon.Ludovic Courtès
* emacs/guix-main.scm (process-package-actions, package-source-build-derivation): Pass #:print-build-trace #f to 'set-build-options', to reduce verbosity.
2014-11-12emacs: Add "Source" field to 'guix-info' buffers.Alex Kost
Suggested by Ludovic Courtès. * emacs/guix-info.el (guix-info-insert-methods, guix-info-displayed-params): Add 'source' parameter. (guix-package-info-source): New face. (guix-package-source): New button type. (guix-package-info-auto-find-source, guix-package-info-auto-download-source, guix-package-info-download-buffer): New variables. (guix-package-info-show-source, guix-package-info-insert-source-url, guix-package-info-insert-source, guix-package-info-download-source, guix-package-info-redisplay-after-download): New procedures. * emacs/guix-base.el (guix-param-titles): Add 'source' parameter. (guix-operation-prompt): Add 'prompt' argument. (guix-after-source-download-hook): New variable. (guix-package-source-path, guix-package-source-build-derivation): New procedures. * emacs/guix-main.scm (%package-param-alist): Add 'source' parameter. (package-source-names, package-source-derivation->store-path, package-source-path, package-source-build-derivation): New procedures.
2014-11-04emacs: Add interface for comparing generations.Alex Kost
Suggested by Ludovic Courtès. * doc/emacs.texi (Emacs List buffer): Document new key bindings. * emacs/guix-base.el (guix-generation-packages-buffer-name-function, guix-generation-packages-update-buffer, guix-output-name-width): New variables. (guix-generation-file, guix-manifest-file, guix-generation-packages, guix-generation-packages-buffer-name-default, guix-generation-packages-buffer-name-long, guix-generation-packages-buffer-name, guix-generation-packages-buffer, guix-generation-insert-package, guix-generation-insert-packages, guix-profile-generation-manifest-file, guix-profile-generation-packages-buffer): New procedures. * emacs/guix-list.el: Add key bindings for comparing generations. (guix-generation-list-generations-to-compare, guix-generation-list-show-added-packages, guix-generation-list-show-removed-packages, guix-generation-list-compare, guix-generation-list-ediff-manifests, guix-generation-list-diff-manifests, guix-generation-list-ediff-packages, guix-generation-list-diff-packages, guix-generation-list-ediff, guix-generation-list-diff): New procedures. * emacs/guix-messages.el (guix-messages): Add 'generation-diff' search type. (guix-message-outputs-by-diff): New procedure. * emacs/guix-utils.el (guix-diff-switches): New variable. (guix-diff): New procedure. * emacs/guix-main.scm (package/output-sexps): Handle 'generation-diff' search type. (manifest-entry->package-specification, manifest-entries->package-specifications, generation-package-specifications, generation-package-specifications+paths, generation-difference): New procedures.
2014-10-27emacs: Add 'guix-pull' command.Alex Kost
* emacs/guix-base.el (guix-pull): New command. (guix-update-after-pull, guix-after-pull-hook): New variables. (guix-restart-repl-after-pull, guix-update-buffers-maybe-after-pull): New procedures. * emacs/guix-main.scm: Use (guix scripts pull) module. * doc/emacs.texi (Emacs Commands): Document 'guix-pull' command.
2014-10-17emacs: Add 'guix-generations-by-time' command.Alex Kost
* emacs/guix-main.scm (find-generations): Add finding generations by time. * emacs/guix-utils.el (guix-read-date): New procedure. * emacs/guix-base.el (guix-messages): Add new messages. * emacs/guix.el (guix-generations-by-time): New command. * doc/emacs.texi (emacs Commands): Document it.
2014-10-13emacs: Add 'current' generation parameter.Alex Kost
* emacs/guix-main.scm (generation-param-alist): Add 'current' parameter. * emacs/guix-base.el (guix-param-titles): Add title for 'current' parameter. * emacs/guix-info.el: Display 'current' parameter. (guix-generation-info-current, guix-generation-info-not-current): New faces. (guix-generation-info-insert-current): New procedure. * emacs/guix-list.el: Display 'current' column. (guix-generation-list-get-current): New procedure.
2014-10-10ui: Move 'show-manifest-transaction' from (guix profiles).Alex Kost
* guix/profiles.scm: Do not use (guix ui) module. (right-arrow, manifest-show-transaction): Move and rename to... * guix/ui.scm (right-arrow, show-manifest-transaction): ... here. * tests/profiles.scm ("manifest-show-transaction"): Move to... * tests/ui.scm ("show-manifest-transaction"): ... here. (guile-1.8.8, guile-2.0.9): New variables. * emacs/guix-main.scm (process-package-actions): Rename 'manifest-show-transaction' to 'show-manifest-transaction'. * guix/scripts/package.scm (guix-package): Likewise. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-10-06emacs: Use 'with-store' in 'process-package-actions'.Alex Kost
* emacs/guix-main.scm (process-package-actions): Use 'with-store'.
2014-10-06emacs: Add support for deleting generations.Alex Kost
* doc/emacs.texi (emacs List buffer): Mention new key bindings. * emacs/guix-base.el (guix-delete-generations): New procedure. * emacs/guix-info.el (guix-generation-info-insert-number): Use it. * emacs/guix-list.el (guix-generation-list-mark-delete, guix-generation-list-execute): New procedures. * emacs/guix-main.scm (delete-generations*): New procedure.
2014-09-28emacs: Fix errors in receiving information.Alex Kost
* emacs/guix-main.scm (package-pattern-transformer, output-pattern-transformer): Add fallback 'match' clauses. (find-generations): Fix getting generations by IDs.
2014-09-24emacs: Rewrite scheme side in a functional manner.Alex Kost
* emacs/guix-main.scm: Rewrite in a functional way. Add support for output entries. (%current-manifest, %current-manifest-entries-table, set-current-manifest-maybe!): Replace with... (manifest-entries->hash-table, manifest->hash-table): ... this. (manifest-entries-by-name+version): Replace with... (manifest-entries-by-name): ... this. (fold-manifest-entries): Rename to... (fold-manifest-by-name): ... this. (package-installed-param-alist): Rename to... (%manifest-entry-param-alist): ... this. (package-param-alist): Rename to... (%package-param-alist): this. (manifest-entry->installed-entry): Rename to... (manifest-entry->sexp): ... this. (manifest-entries->installed-entries): Rename to... (manifest-entries->sexps): ... this. (matching-generation-entries): Replace with... (matching-generations): ... this. (last-generation-entries): Replace with... (last-generations): ... this. (get-entries): Rename to... (entries): ... this. (installed-entries-by-name+version, installed-entries-by-package, matching-package-entries, fold-object, package-entries-by-name+version, package-entries-by-spec, package-entries-by-regexp, package-entries-by-ids, newest-available-package-entries, all-available-package-entries, manifest-package-entries, installed-package-entries, generation-package-entries, obsolete-package-entries, all-generation-entries, generation-entries-by-ids, profile-generations, %package-entries-functions, %generation-entries-functions): Remove. (manifest=?, manifest-entry->name+version+output, manifest-entry-by-output, list-maybe, matching-packages, filter-packages-by-output, packages-by-name, manifest-entry->packages, all-available-packages, newest-available-packages, specification->package-pattern, specification->output-pattern, id->package-pattern, id->output-pattern, specifications->package-patterns, specifications->output-patterns, ids->package-patterns, ids->output-patterns, manifest-patterns-result, obsolete-package-patterns, obsolete-output-patterns, manifest-package-patterns, manifest-output-patterns, obsolete-package-sexp, package-pattern-transformer, output-pattern-transformer, entry-type-error, search-type-error, pattern-transformer, patterns-maker, package/output-sexps, find-generations, generation-sexps): New procedures. (%pattern-transformers, %patterns-makers): New variables. * emacs/guix-base.el (guix-continue-package-operation-p): Adjust accordingly. * emacs/guix-info.el (guix-package-info-insert-action-button): Likewise.
2014-09-03Add Emacs user interface.Alex Kost
* configure.ac (emacsuidir): New variable. (AC_CONFIG_FILES): Add 'emacs/guix-init.el', 'emacs/guix-helper.scm'. * Makefile.am: Include 'emacs.am'. * emacs.am: New file. * doc/emacs.texi: New file. * doc/guix.texi: Include 'emacs.texi'. * emacs/guix-backend.el: New file. * emacs/guix-base.el: New file. * emacs/guix-helper.scm.in: New file. * emacs/guix-history.el: New file. * emacs/guix-info.el: New file. * emacs/guix-init.el.in: New file. * emacs/guix-list.el: New file. * emacs/guix-main.scm: New file. * emacs/guix-utils.el: New file. * emacs/guix.el: New file.