diff options
author | Alex Kost <alezost@gmail.com> | 2015-05-27 20:33:42 +0300 |
---|---|---|
committer | Alex Kost <alezost@gmail.com> | 2015-05-29 20:54:54 +0300 |
commit | 5a727cdfa983c6fb6ea8bdecd6d298db439e3610 (patch) | |
tree | 51a898bd23a2eebbc8a086ae8218ea4974458c2a | |
parent | 578b98da43a946f1db2d3b6dd4585c5c0ad5aa6d (diff) | |
download | patches-5a727cdfa983c6fb6ea8bdecd6d298db439e3610.tar patches-5a727cdfa983c6fb6ea8bdecd6d298db439e3610.tar.gz |
emacs: Add 'guix-apply-manifest'.
* emacs/guix-base.el (guix-apply-manifest): New command.
Bind it to "M" key.
* doc/emacs.texi (Emacs General info): Document it.
-rw-r--r-- | doc/emacs.texi | 5 | ||||
-rw-r--r-- | emacs/guix-base.el | 27 |
2 files changed, 32 insertions, 0 deletions
diff --git a/doc/emacs.texi b/doc/emacs.texi index 9678570d58..6c1b255af0 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -183,6 +183,11 @@ packages/generations and redisplay it. @item R Redisplay current buffer (without updating information). +@item M +Apply manifest to the current profile or to a specified profile, if +prefix argument is used. This has the same meaning as @code{--manifest} +option (@pxref{Invoking guix package}). + @item C-c C-z Go to the Guix REPL (@pxref{The REPL,,, geiser, Geiser User Manual}). diff --git a/emacs/guix-base.el b/emacs/guix-base.el index 5129c87a5d..851ee895b9 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -439,6 +439,7 @@ following keywords are available: (define-key map (kbd "r") 'guix-history-forward) (define-key map (kbd "g") 'revert-buffer) (define-key map (kbd "R") 'guix-redisplay-buffer) + (define-key map (kbd "M") 'guix-apply-manifest) (define-key map (kbd "C-c C-z") 'guix-switch-to-repl))))) (put 'guix-define-buffer-type 'lisp-indent-function 'defun) @@ -1022,6 +1023,32 @@ Ask a user with PROMPT for continuing an operation." :dry-run? (or guix-dry-run 'f)) nil 'source-download))) +;;;###autoload +(defun guix-apply-manifest (profile file &optional operation-buffer) + "Apply manifest from FILE to PROFILE. +This function has the same meaning as 'guix package --manifest' command. +See Info node `(guix) Invoking guix package' for details. + +Interactively, use the current profile and prompt for manifest +FILE. With a prefix argument, also prompt for PROFILE." + (interactive + (let* ((default-profile (or guix-profile guix-current-profile)) + (profile (if current-prefix-arg + (guix-profile-prompt) + default-profile)) + (file (read-file-name "File with manifest: ")) + (buffer (and guix-profile (current-buffer)))) + (list profile file buffer))) + (when (or (not guix-operation-confirm) + (y-or-n-p (format "Apply manifest from '%s' to profile '%s'? " + file profile))) + (guix-eval-in-repl + (guix-make-guile-expression + 'guix-package + (concat "--profile=" profile) + (concat "--manifest=" file)) + operation-buffer))) + ;;; Pull |