summaryrefslogtreecommitdiff
path: root/emacs
AgeCommit message (Collapse)Author
2016-04-04emacs: Speed up starting the REPL.Alex Kost
Delay initializing variables. * emacs/guix-main.scm: (%packages): Rename to... (%package-vhash): ... this. Delay setting the value. (package-vhash): New procedure (wrapper for '%package-vhash'). (%package-table): Delay setting the value. (package-table): New procedure (wrapper for '%package-table'). (package-by-address, packages-by-name+version): Use wrappers.
2016-04-04emacs: Use (guix scripts lint) only when needed.Alex Kost
* emacs/guix-main.scm: Do not use (guix scripts pull) module. (lint-checker-names): Adjust to use it.
2016-04-04emacs: Remove unused module.Alex Kost
This is a followup to commit c67e344f21fda2bf5a2a377a34d4749a1c7e7c9c. * emacs/guix-main.scm: Do not use (guix scripts pull).
2016-04-04emacs: Stylistic improvements in guile code.Alex Kost
* emacs/guix-main.scm (package-unique?): Use 'match' instead of 'cdr'. (package-by-address): Likewise.
2016-04-04emacs: Use 'build-and-use-profile' from (guix scripts package).Alex Kost
* guix/scripts/package.scm: Export 'build-and-use-profile'. * emacs/guix-main.scm (process-package-actions): Use it.
2016-03-24emacs: Deprecate "guix-init.el".Alex Kost
'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'.
2016-03-23emacs: Use space to separate package name and version in heading.Alex Kost
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.
2016-03-23emacs: Fix converting scheme into elisp expression.Alex Kost
* emacs/guix-geiser.el (guix-geiser-eval-read): Replace #f/#t with nil/t only when they follow "(" or " ".
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-03-04emacs: hydra: Use '-' to separate job names and version numbers.Alex Kost
* 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.
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-02-22emacs: Do not allow a user to modify system profiles.Alex Kost
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.
2016-02-22emacs: Set 'guix-buffer-item' before displaying entries.Alex Kost
* 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.
2016-02-22emacs: Add 'M-x guix-installed-{user/system}-packages'.Alex Kost
* emacs/guix-ui-package.el (guix-installed-user-packages) (guix-installed-system-packages): New commands. * doc/emacs.texi (Emacs Commands): Document them.
2016-02-18emacs: Autoload hooks instead of putting them in 'guix-init'.Alex Kost
* emacs/guix-init.el: Move adding hooks to... * emacs/guix-build-log.el: ... here. * emacs/guix-devel.el: ... and here.
2016-02-10emacs: 'C-u M-x guix-edit' prompts for directory.Alex Kost
* emacs/guix-base.el (guix-read-directory): New procedure. (guix-find-location, guix-edit): Add optional 'directory' argument. * emacs/guix-ui-package.el (guix-package-list-edit) (guix-output-list-edit): Likewise. * doc/emacs.texi (Emacs Commands): Mention "C-u".
2016-02-07emacs: Find Emacs packages in a system profile.Alex Kost
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.
2016-02-07emacs: Move the code to load Emacs packages after installing.Alex Kost
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.
2016-02-07emacs: Factorize searching for Emacs packages.Alex Kost
* 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.
2016-02-04emacs: Add missing (require 'guix-profiles).Alex Kost
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 e4e2154644ecf76ea02a50304c1405c00c9ffdd1 and 13fe4891fa247d306e203ee14c6886513bd86b52, 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.
2016-02-01emacs: command: Disambiguate "w" key in build options.Alex Kost
This is a followup to commit 47c0f92c37dc7d50d9d4598ce5b91c4cdfec6ed1. * emacs/guix-command.el (guix-command-improve-common-build-argument): Use "W" key for '--with-input' option (leave "w" for '--with-source').
2016-01-29guix system: Rename 'dmd-graph' to 'shepherd-graph'.Alex Kost
* doc/images/dmd-graph.dot: Rename to... * doc/images/shepherd-graph.dot: ... this. * doc.am (DOT_FILES): Adjust accordingly. * guix/scripts/system.scm (dmd-service-node-label) (dmd-service-node-type, export-dmd-graph): Rename to... (shepherd-service-node-label, shepherd-service-node-type) (export-shepherd-graph): ... this. (show-help, process-action, process-command): Rename 'dmd-graph' to 'shepherd-graph'. * emacs/guix-command.el (guix-command-additional-execute-arguments) (guix-command-special-executors): Likewise. * doc/guix.texi: Likewise. * doc/emacs.texi (Emacs Popup Interface): 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: list: Support displaying URL links.Alex Kost
* emacs/guix-list.el (guix-list-url): New face. (guix-list-get-url): New procedure.
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: Buttonize licenses in "Package Info".Alex Kost
* emacs/guix-ui-package.el (guix-package-license): New button type. (guix-package-info-format, guix-output-info-format): Use it. * doc/emacs.texi (Emacs Info buffer): Mention 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-25emacs: Rename 'file-path' to 'file-name'.Alex Kost
* emacs/guix-info.el (guix-info-file-path): Rename to... (guix-info-file-name): ... this. * emacs/guix-list.el (guix-list-file-path): Rename to... (guix-list-file-name): ... this. (guix-list-get-file-path): Rename to... (guix-list-get-file-name): ... this. * emacs/guix-ui-generation.el (guix-generation-list-format): Adjust accordingly. * emacs/guix-ui-system-generation.el (guix-system-generation-list-format): Likewise. * NEWS: Mention faces renaming.
2016-01-18emacs: Add 'guix-search-by-name'.Alex Kost
* emacs/guix-ui-package.el (guix-search-by-name): New command. * doc/emacs.texi (Emacs Commands): Document it.
2016-01-18emacs: Rename 'guix-search-by-name' to 'guix-packages-by-name'.Alex Kost
* emacs/guix-ui-package.el (guix-search-by-name): Rename to... (guix-packages-by-name): ... this. Complete package name. * doc/emacs.texi (Emacs Commands): Likewise.
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-16emacs: profiles: Add 'guix-system-profile'.Alex Kost
* emacs/guix-profiles.el (guix-system-profile): New variable.
2016-01-14emacs: Fix heading face in "Package Info".Alex Kost
Reported by Ludovic Courtès <ludo@gnu.org> on #guix. This fixes a regression introduced in commit 7171d824. 'insert-text-button' procedure does not allow to override a button face, so a specialized button type should be used instead. * emacs/guix-ui-package.el (guix-package-heading): New button type. (guix-package-info-insert-heading): Use it.
2016-01-13emacs: Move loading packages to "guix-emacs.el".Alex Kost
* emacs/guix-init.el: Move the code for auto-loading Emacs packages to... (guix-package-enable-at-startup): Move to... * emacs/guix-emacs.el (guix-package-enable-at-startup): ... here.
2016-01-13emacs: Make "guix-emacs.el" independent.Alex Kost
"guix-emacs.el" may be used just for "instructing" Emacs where to find Emacs packages installed with Guix, so it should have as few dependencies as possible. See <http://lists.gnu.org/archive/html/guix-devel/2016-01/msg00022.html>. * emacs/guix-emacs.el: Require 'guix-profiles' optionally. (guix-emacs-load-autoloads): Use 'guix-profile-prompt' only if it is available.
2016-01-13emacs: Complete --file in 'guix build' popup.Alex Kost
* emacs/guix-command.el (guix-command-improve-build-argument): Use 'guix-read-file-name' to complete --file option.
2016-01-13emacs: Add missing shell completions.Alex Kost
* emacs/guix-pcomplete.el (guix-pcomplete-complete-option-arg): Complete file name for '--install-from-file' option of 'guix package' command, and for '--file' and '--with-source' options of 'guix build' command.
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.
2016-01-02emacs: Use "B" key in "Package List" to display latest builds.Alex Kost
* emacs/guix-ui-package.el (guix-package-list-latest-builds): New procedure. (guix-package-list-mode-map): Bind "B" key to it. (guix-output-list-mode-map): Likewise. * doc/emacs.texi (Emacs List buffer): Document it.
2016-01-02emacs: Add Hydra interface.Alex Kost
* emacs/guix-utils.el (guix-hexify, guix-number->bool): New procedures. (guix-while-null): New macro. * emacs/guix-hydra.el: New file. * emacs/guix-hydra-build.el: New file. * emacs/guix-hydra-jobset.el: New file. * emacs.am (ELFILES): Add them. * doc/emacs.texi (Emacs Hydra): New node. (Emacs Interface): Add it. * doc/guix.texi (Top): Add it. (Substitutes): Mention Emacs interface.
2016-01-02emacs: Add 'guix-ui-read-profile'.Alex Kost
* emacs/guix-ui.el (guix-ui-read-profile): New procedure. * emacs/guix-ui-package.el (guix-search-by-name) (guix-search-by-regexp, guix-installed-packages) (guix-obsolete-packages, guix-all-available-packages) (guix-newest-available-packages): Use it. * emacs/guix-ui-generation.el (guix-generations) (guix-last-generations, guix-generations-by-time): Use it.
2016-01-02emacs: Add hierarchy of customization groups.Alex Kost
* emacs/guix-buffer.el (guix-define-groups, guix-define-entry-type) (guix-define-buffer-type): New macros. (guix-buffer-define-interface): Add parent groups for the generated custom groups. * emacs/guix-info.el: Use 'guix-define-buffer-type' to generate custom groups. * emacs/guix-list.el: Likewise. * emacs/guix-ui.el: Use 'guix-define-groups' to generate custom groups. (guix-ui-define-entry-type): New macro. * emacs/guix-ui-package.el: Use it. * emacs/guix-ui-generation.el: Use it.
2016-01-02emacs: Return nil instead of "" in completing readers.Alex Kost
* emacs/guix-utils.el (guix-completing-read): New procedure. (guix-define-readers): Use it.
2016-01-02emacs: Add 'guix-list-get-display-entries'.Alex Kost
* emacs/guix-list.el (guix-list-get-display-entries): New procedure. * emacs/guix-ui-generation.el (guix-generation-get-display): Use it.
2016-01-02emacs: Add 'list-single' variables.Alex Kost
* emacs/guix-list.el (guix-list-single-entry?): New procedure. (guix-list-define-interface): Add ':list-single?' key and generate 'guix-ENTRY-TYPE-list-single' variables. * emacs/guix-ui-package.el (guix-package-list-single): Remove.
2016-01-02emacs: Reorganize package/generation UI code.Alex Kost
Move the code for packages/generations interface from "guix-info.el", "guix-list.el", "guix-base.el" and "guix.el" to "guix-ui-package.el" and "guix-ui-generation.el". * emacs/guix-base.el (guix-package-entry->name-specification) (guix-package-entries->name-specifications) (guix-package-id-and-output-by-output-id) (guix-package-installed-outputs, guix-process-package-actions) (guix-package-list-type, guix-package-info-type) (guix-continue-package-operation-p, guix-get-package-strings) (guix-insert-package-strings): Move to "guix-ui-package.el". (guix-generation-packages-buffer-name-function, guix-output-name-width) (guix-generation-packages-update-buffer, 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-packages, guix-generation-insert-package) (guix-profile-generation-manifest-file, guix-delete-generations) (guix-profile-generation-packages-buffer, guix-switch-to-generation): Move to "guix-ui-generation.el". * emacs/guix-info.el (guix-package-location, guix-package-name) (guix-package-source, guix-package-info-source) (guix-package-info-heading, guix-package-info-license) (guix-package-info-name, guix-package-info-name-button) (guix-package-info-version, guix-package-info-location) (guix-package-info-synopsis, guix-package-info-description) (guix-package-info-obsolete, guix-package-info-installed-outputs) (guix-package-info-uninstalled-outputs) (guix-package-info-insert-heading) (guix-package-info-define-insert-inputs) (guix-package-info-obsolete-string) (guix-package-info-insert-obsolete-text) (guix-package-info-insert-non-unique-text) (guix-package-info-insert-outputs, guix-package-info-insert-output) (guix-package-info-insert-action-button) (guix-package-info-auto-find-source) (guix-package-info-auto-download-source) (guix-package-info-download-buffer, guix-package-info-show-source) (guix-package-info-download-source, guix-package-info-insert-source) (guix-package-info-redisplay-after-download) (guix-output-info-insert-version, guix-output-info-insert-output): Move to "guix-ui-package.el". (guix-generation-info-number, guix-generation-info-current) (guix-generation-not-current, guix-generation-info-insert-number) (guix-generation-info-insert-current): Move to "guix-ui-generation.el". * emacs/guix-list.el (guix-package-list-generation-marking-enabled) (guix-package-list-installed, guix-package-list-obsolete) (guix-package-list-get-name, guix-package-list-get-installed-outputs) (guix-package-list-marking-check, guix-package-list-mark-outputs) (guix-package-list-mark-install, guix-package-list-mark-delete) (guix-package-list-mark-upgrade, guix-package-list-mark-upgrades) (guix-list-mark-package-upgrades, guix-list-execute-package-actions) (guix-package-list-execute, guix-package-list-make-action) (guix-package-list-edit, guix-output-list-mark-install) (guix-output-list-mark-delete, guix-output-list-mark-upgrade) (guix-output-list-mark-upgrades, guix-output-list-make-action) (guix-output-list-describe, guix-output-list-edit): Move to "guix-ui-package.el". (guix-generation-list-get-current, guix-generation-list-switch) (guix-generation-list-generations-to-compare) (guix-generation-list-compare, guix-generation-list-show-packages) (guix-generation-list-show-added-packages) (guix-generation-list-show-removed-packages) (guix-generation-list-diff, guix-generation-list-diff-manifests) (guix-generation-list-ediff, guix-generation-list-ediff-manifests) (guix-generation-list-diff-packages) (guix-generation-list-ediff-packages) (guix-generation-list-mark-delete, guix-generation-list-execute): Move to "guix-ui-generation.el". * emacs/guix.el: Remove. (guix, guix-faces, guix-edit): Move to "guix-base.el". (guix-list-single-package, guix-search-params, guix-search-history) (guix-get-show-packages, guix-search-by-name, guix-search-by-regexp) (guix-installed-packages, guix-obsolete-packages) (guix-all-available-packages, guix-newest-available-packages): Move to "guix-ui-package.el". (guix-get-show-generations, guix-generations, guix-last-generations) (guix-generations-by-time): Move to "guix-ui-generation.el". * emacs.am (ELFILES): Remove "guix.el". Add "guix-ui-package.el" and "guix-ui-generation.el". * doc/emacs.texi (Emacs Appearance): Adjust accordingly.