summary refs log tree commit diff
path: root/emacs
AgeCommit message (Collapse)Author
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-06-22emacs: Simplify defining package ID in a list buffer.Alex Kost
* emacs/guix-list.el: Always retrieve 'package-id' parameter for a list of outputs. (guix-list-current-package-id): New function.
2015-06-22emacs: Complete 'guix size --map-file' properly.Alex Kost
* emacs/guix-pcomplete.el (guix-pcomplete-complete-option-arg): Complete file name for '-m/--map-file' option of 'guix size' command.
2015-06-19emacs: Add completions for 'edit' and 'size' commands.Alex Kost
* emacs/guix-pcomplete.el (guix-pcomplete-complete-command-arg): Complete package names for 'guix edit' and 'guix size' commands. (guix-pcomplete-complete-option-arg): Complete '-s/--system' option for 'guix size'.
2015-06-08emacs: Add shell completions for "guix" command.Alex Kost
Suggested by Ludovic Courtès <ludo@gnu.org>. * emacs/guix-pcomplete.el: New file. * emacs.am (ELFILES): Add it. * doc/emacs.texi (Emacs Completions): New node.
2015-06-08emacs: Add "memoization" code.Alex Kost
* emacs/guix-utils.el (guix-memoize): New function. (guix-memoized-defun): New macro.
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-05-29emacs: Add 'guix-apply-manifest'.Alex Kost
* emacs/guix-base.el (guix-apply-manifest): New command. Bind it to "M" key. * doc/emacs.texi (Emacs General info): Document it.
2015-05-29emacs: Remove "M" key binding for marking all lines.Alex Kost
* emacs/guix-list.el: Split 'guix-list-mark' into internal and interactive functions. Remove "M" key binding, use "C-u m" instead. (guix-list--mark): New function. Use it in other marking functions. (guix-list-mark): Mark all lines with a prefix argument. * doc/emacs.texi (Emacs List buffer): Document changes in the key bindings.
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-12-02emacs: Handle autoloading Emacs packages installed with Guix.Alex Kost
* emacs/guix-emacs.el: New file. * emacs.am (ELFILES): Add it. * emacs/guix-backend.el (guix-after-repl-operation-hook): Add 'guix-emacs-load-autoloads-maybe'. * emacs/guix-init.el.in: Autoload emacs packages. (guix-package-enable-at-startup): New variable.
2014-12-02emacs: Move profiles code to "guix-profiles.el.in".Alex Kost
* emacs/guix-base.el (guix-user-profile, guix-default-profile, guix-current-profile, guix-profile-prompt, guix-set-current-profile): Move to... * emacs/guix-init.el.in (guix-default-profile): Move to... * emacs/guix-profiles.el.in: ... here. New file. * configure.ac (AC_CONFIG_FILES): Add "emacs/guix-profiles.el". * emacs.am (nodist_lisp_DATA): Likewise.
2014-11-26emacs: Add missing directory to the guile load path.Alex Kost
Reported by Adam Pribyl and David Thompson. * emacs/guix-helper.scm.in (set-paths!): Add guile module dir to '%load-path'.
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-20emacs: Don't override the user's 'geiser-guile-load-path'.Ludovic Courtès
* emacs/guix-backend.el (guix-start-repl): Add GUIX-LOAD-PATH to the front of GEISER-GUILE-LOAD-PATH instead of overriding it.
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-10emacs: Improve 'guix-redisplay-buffer'.Alex Kost
* emacs/guix-base.el (guix-redisplay-buffer): Allow to display new entries. Restore point position.
2014-11-10emacs: Add 'guix-find-file'.Alex Kost
* emacs/guix-utils.el (guix-find-file): New procedure. * emacs/guix-info.el (guix-file): Use it.
2014-11-10emacs: Restore mode-line after operation prompt.Alex Kost
* emacs/guix-base.el (guix-operation-prompt): Restore 'mode-line-format' after prompting.
2014-11-10emacs: Add "c" key binding to copy a button link.Alex Kost
* emacs/guix-info.el (guix-info-button-map): New variable. (guix-info-button-copy-label): New procedure. * doc/emacs.texi (Emacs Info buffer): Mention a "c" key binding. (Emacs Keymaps): Add 'guix-info-button-map'.
2014-11-07emacs: Add 'guix-prettify'.Alex Kost
* emacs/guix-prettify.el: New file. * emacs.am (ELFILES): Add it. * doc/emacs.texi (Emacs Prettify): New node. * doc/guix.texi (Features): Mention it.
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-11-04emacs: Improve minibuffer messages.Alex Kost
* emacs/guix-base.el (guix-messages, guix-result-message): Move to 'guix-messages.el'. (guix-set-buffer, guix-history-call, guix-redisplay-buffer): Adjust for the modified 'guix-result-message'. * emacs/guix-messages.el: New file. (guix-redisplay-buffer): Add 'profile' argument. (guix-message-string-name, guix-message-string-entry-type, guix-message-string-entries, guix-message-packages-by-name, guix-message-generations-by-time): New procedures.
2014-11-02emacs: Add package info heading.Alex Kost
Co-authored-by: Ludovic Courtès <ludo@gnu.org> * emacs/guix-info.el: (guix-package-info-heading): New face. (guix-package-info-synopsis): Modify face. (guix-info-insert-entry-default, guix-package-info-insert-heading, guix-package-info-insert-with-heading): New procedures. (guix-package-info-heading-params, guix-info-insert-package-function, guix-info-insert-installed-function, guix-info-insert-output-function, guix-info-insert-generation-function): New variables.
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-27emacs: Improve REPL procedures.Alex Kost
* emacs/guix-backend.el (guix-start-process-maybe): Add 'start-msg' and 'end-msg' optional arguments. (guix-start-repl-maybe): Likewise. Do not kill buffer with a dead process. (guix-repl-exit): New procedure. (guix-eval-in-repl): Use 'geiser-repl--send'.
2014-10-27emacs: Improve buffer procedures.Alex Kost
* emacs/guix-base.el (guix-list-or-info-buffer-p): Delete. Replace with... (guix-buffer-p): ... this. New procedure. (guix-buffers): Use it. Add 'modes' argument. (guix-update-buffer): New procedure. (guix-update-buffers-maybe): Rename to ... (guix-update-buffers-maybe-after-operation): this. Use 'guix-update-buffer'.
2014-10-27emacs: Introduce REPL operation type.Alex Kost
* emacs/guix-backend.el (guix-repl-operation-type): New variable. (guix-repl-output-filter): Run type hooks after performing an operation. (guix-eval-read): Add 'operation-type' argument.
2014-10-27emacs: Handle updating by ID after REPL restart.Alex Kost
* emacs/guix-base.el (guix-entry-to-specification, guix-entries-to-specifications): New procedures. (guix-revert-buffer): Search by name if searching by ID gives no results.
2014-10-18emacs: Improve interface for working with multiple profiles.Alex Kost
Suggested by David Thompson, Ludovic Courtès and Mathieu Lirzin. * emacs/guix-base.el (guix-profile-prompt): New procedure. (guix-set-current-profile): Use it. (guix-buffer-name-simple, guix-buffer-name-default, guix-buffer-name): New procedures. (guix-buffer-name-function, guix-profile): New variables. (guix-set-vars, guix-get-entries, guix-get-show-entries, guix-set-buffer, guix-history-call, guix-process-package-actions, guix-continue-package-operation-p, guix-delete-generations, guix-switch-to-generation): Add 'profile' argument. * emacs/guix.el (guix-get-show-packages, guix-get-show-generations, guix-search-by-name, guix-search-by-regexp, guix-installed-packages, guix-obsolete-packages, guix-all-available-packages, guix-newest-available-packages, guix-generations, guix-generations-by-time): Likewise. (guix-last-generations): New command. * emacs/guix-info.el: Adjust for using 'profile' argument where needed. * emacs/guix-list.el: Likewise. * doc/emacs.texi (Emacs Commands): Document 'guix-last-generations' and using "C-u" for commands. (Emacs Buffer Names): Document 'guix-buffer-name-function'.
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-16emacs: Support auto-updating after performing REPL operation.Alex Kost
* emacs/guix-backend.el (guix-operation-buffer): New variable. (guix-eval-in-repl): Use it. Add optional 'operation-buffer' argument. * emacs/guix-base.el (guix-update-after-operation): New variable. (guix-switch-to-buffer, guix-list-or-info-buffer-p, guix-buffers, guix-update-buffers-maybe): New procedures. (guix-set-buffer): Use 'guix-switch-to-buffer'. Add optional 'no-display' argument. (guix-process-package-actions, guix-delete-generations, guix-switch-to-generation): Add optional 'operation-buffer' argument. * emacs/guix-info.el (guix-package-info-insert-action-button, guix-generation-info-insert-number, guix-generation-info-insert-current): Adjust for using operation buffer. * emacs/guix-list.el (guix-list-execute-package-actions, guix-generation-list-switch, guix-generation-list-execute): Likewise.
2014-10-16emacs: Add hooks for REPL operations.Alex Kost
* emacs/guix-backend.el (guix-before-repl-operation-hook, guix-after-repl-operation-hook, guix-repl-operation-p): New variables. (guix-repl-operation-success-message, guix-repl-output-filter): New procedures. (guix-start-repl): Adjust for using 'guix-repl-output-filter'. (guix-eval-in-repl): Honor 'guix-before-repl-operation-hook'.
2014-10-13emacs: Add support for switching generations.Alex Kost
* emacs/guix-base.el (guix-switch-to-generation): New procedure. * emacs/guix-info.el (guix-generation-info-insert-current): Insert button for switching to generation. * emacs/guix-list.el (guix-generation-list-switch): New procedure. * doc/emacs.texi (emacs List buffer, emacs Info buffer): Document switching generations.
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-12emacs: Allow list functions to deal with nil values.Alex Kost
* emacs/guix-list.el (guix-list-get-tabulated-entry): Call functions returning column value even for nil values. (guix-list-get-one-line): Adjust for accepting nil argument.
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-10-02emacs: Add support for modifying options during operation confirmation.Alex Kost
* emacs/guix-base.el (guix-operation-option-key): New face. (guix-operation-option-true-string, guix-operation-option-false-string, guix-operation-option-separator, guix-operation-options): New variables. (guix-operation-option-by-key, guix-operation-option-key, guix-operation-option-name, guix-operation-option-variable, guix-operation-option-value, guix-operation-option-string-value, guix-operation-prompt, guix-operation-set-mode-line): New procedures. (guix-continue-package-operation-p): Use 'guix-operation-prompt'.
2014-09-28emacs: Use package/output type variables where needed.Alex Kost
* emacs/guix-list.el (guix-package-list-type, guix-output-list-describe-type): Move to... * emacs/guix-base.el: ... here. Rename 'guix-output-list-describe-type' to 'guix-package-info-type'. * emacs/guix-info.el (guix-generation-info-insert-number): Use 'guix-package-list-type'. * emacs/guix.el (guix-get-show-packages): Use 'guix-package-info-type'.
2014-09-28emacs: Support font-locking.Alex Kost
Avoid breaking highlighting after adding new font-lock keywords. * emacs/guix-base.el (guix-insert-package-strings): Use 'propertize' instead of 'guix-get-string'. * emacs/guix-info.el (guix, guix-action, guix-file, guix-url, guix-package-location, guix-package-name): New button types. (guix-info-insert-action-button, guix-info-insert-file-path, guix-info-insert-url, guix-package-info-insert-location, guix-package-info-insert-full-names, guix-package-info-insert-non-unique-text): Adjust for 'guix-insert-button' and button types. (guix-package-info-name-button): New face. (guix-package-info-define-insert-inputs): Use it. Add new button types. (guix-package-info-insert-full-name): Remove. * emacs/guix-utils.el (guix-get-string): Replace 'face' with 'font-lock-face'. (guix-insert-button): Adjust for using button types.
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: Add support for displaying outputs.Alex Kost
Suggested by Taylan Ulrich Bayirli/Kammer and Ludovic Courtès. * emacs/guix-base.el (guix-param-titles): Add output titles. (guix-messages): Add output messages. (guix-get-package-id-and-output-by-output-id): New procedure. (guix-define-buffer-type): Add ':buffer-name' key. * emacs/guix-info.el: Add "output-info" buffer type. (guix-info-insert-methods): Add output methods. (guix-info-displayed-params): Add output params. (guix-output-info-insert-version, guix-output-info-insert-output): New procedures. * emacs/guix-list.el: Add "output-list" buffer type. (guix-list-column-format): Add output formats. (guix-list-column-value-methods): Add output methods. (guix-package-list-type): New variable. (guix-generation-list-show-packages): Use it. (guix-package-list-marking-check): Use 'guix-output-list-mode'. (guix-list-mark-package-upgrades): New procedure. (guix-package-list-mark-upgrades): Use it. (guix-list-execute-package-actions): New procedure. (guix-package-list-execute): Use it. (guix-list-describe-maybe): New procedure. (guix-list-describe): Use it. (guix-output-list-mark-install, guix-output-list-mark-delete, guix-output-list-mark-upgrade, guix-output-list-mark-upgrades, guix-output-list-execute, guix-output-list-make-action, guix-output-list-describe): New procedures. (guix-output-list-describe-type): New variable. * emacs/guix.el (guix-get-show-packages): Use 'guix-package-list-type'. * doc/emacs.texi (emacs Commands): Mention 'guix-package-list-type'. (emacs List buffer): Adjust accordingly. (emacs Info buffer): Likewise. (emacs Buffer Names): New node. (emacs Keymaps): Add keymaps for output buffers.
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-24emacs: Use general functions instead of generated ones.Alex Kost
* emacs/guix-base.el: Add and use general functions instead of specialized functions generated by 'guix-define-buffer-type' macro. (guix-buffer-type, guix-entry-type): New variables. (guix-set-vars): Add new variables. (guix-get-show-entries, guix-show-entries, guix-set-buffer) (guix-history-call, guix-make-history-item) (guix-get-params-for-receiving, guix-revert-buffer) (guix-redisplay-buffer): New functions. (guix-define-buffer-type): Do not generate specialized functions. * emacs/guix-info.el (guix-package-info-insert-full-names): Use 'guix-get-show-entries'. (guix-generation-info-insert-number): Likewise. * emacs/guix-list.el (guix-list-describe): New function. (guix-list-define-entry-type): Do not generate specialized one. (guix-generation-list-show-packages): Use 'guix-get-show-entries'. * emacs/guix.el (guix-show-generations-function): Remove. (guix-get-show-packages): Use new functions. (guix-get-show-generations): Likewise.
2014-09-08emacs: Improve key bindings for marking the packages.Alex Kost
Use "U" to upgrade the current package, "^" to upgrade all. * emacs/guix-list.el: (guix-list-unmark): With prefix, mark all. (guix-package-list-mark-outputs): New procedure. (guix-package-list-mark-install, guix-package-list-mark-delete) (guix-package-list-mark-upgrade): Use it. (guix-package-list-mark-upgrades): New command. * doc/emacs.texi (emacs List buffer): Update the manual accordingly.
2014-09-06emacs: Add a face for installed packages.Alex Kost
* emacs/guix-list.el (guix-package-list-installed): New face. (guix-package-list-get-name): Use it.
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.