emacs: In 'run-with-store' call, specify the guile-for-build. 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.
Merge branch 'master' into 'core-updates'.
emacs: Handle autoloading Emacs packages installed with Guix. * 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.
emacs: Move profiles code to "guix-profiles.el.in". * 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.
emacs: Add missing directory to the guile load path. Reported by Adam Pribyl and David Thompson. * emacs/guix-helper.scm.in (set-paths!): Add guile module dir to '%load-path'.
emacs: Disable build traces produced by the daemon. * emacs/guix-main.scm (process-package-actions, package-source-build-derivation): Pass #:print-build-trace #f to 'set-build-options', to reduce verbosity.
emacs: Don't override the user's 'geiser-guile-load-path'. * emacs/guix-backend.el (guix-start-repl): Add GUIX-LOAD-PATH to the front of GEISER-GUILE-LOAD-PATH instead of overriding it.
emacs: Add "Source" field to 'guix-info' buffers. 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.
emacs: Improve 'guix-redisplay-buffer'. * emacs/guix-base.el (guix-redisplay-buffer): Allow to display new entries. Restore point position.
emacs: Add 'guix-find-file'. * emacs/guix-utils.el (guix-find-file): New procedure. * emacs/guix-info.el (guix-file): Use it.
emacs: Restore mode-line after operation prompt. * emacs/guix-base.el (guix-operation-prompt): Restore 'mode-line-format' after prompting.
emacs: Add "c" key binding to copy a button link. * 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'.
emacs: Add 'guix-prettify'. * emacs/guix-prettify.el: New file. * emacs.am (ELFILES): Add it. * doc/emacs.texi (Emacs Prettify): New node. * doc/guix.texi (Features): Mention it.
emacs: Add interface for comparing generations. 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.
emacs: Improve minibuffer messages. * 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.
emacs: Add package info heading. 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.
emacs: Add 'guix-pull' command. * 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.
emacs: Improve REPL procedures. * 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'.
emacs: Improve buffer procedures. * 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'.
emacs: Introduce REPL operation type. * 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.