[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/03: emacs: Add 'guix-apply-manifest'.

From: Alex Kost
Subject: 02/03: emacs: Add 'guix-apply-manifest'.
Date: Fri, 29 May 2015 18:23:50 +0000

alezost pushed a commit to branch master
in repository guix.

commit 5a727cdfa983c6fb6ea8bdecd6d298db439e3610
Author: Alex Kost <address@hidden>
Date:   Wed May 27 20:33:42 2015 +0300

    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.
 doc/emacs.texi     |    5 +++++
 emacs/guix-base.el |   27 +++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/doc/emacs.texi b/doc/emacs.texi
index 9678570..6c1b255 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).
address@hidden 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 5129c87..851ee89 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)))
+(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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]