guix-commits
[Top][All Lists]
Advanced

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

15/20: emacs: Add code to run guix command in shell.


From: Alex Kost
Subject: 15/20: emacs: Add code to run guix command in shell.
Date: Tue, 18 Aug 2015 09:41:13 +0000

alezost pushed a commit to branch wip-emacs-popup-ui
in repository guix.

commit 73a1691ffefb0fa68eb23d119c74be9367fe8e5f
Author: Alex Kost <address@hidden>
Date:   Sun Aug 16 13:55:25 2015 +0300

    emacs: Add code to run guix command in shell.
    
    * emacs/guix-base.el (guix-run-in-shell, guix-run-in-eshell,
      guix-run-command-in-shell): New functions.
      (guix-run-in-shell-function, guix-shell-buffer-name): New variables.
---
 emacs/guix-base.el |   36 ++++++++++++++++++++++++++++++++++++
 1 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/emacs/guix-base.el b/emacs/guix-base.el
index 5e6873c..2f23bdb 100644
--- a/emacs/guix-base.el
+++ b/emacs/guix-base.el
@@ -1096,6 +1096,42 @@ FILE.  With a prefix argument, also prompt for PROFILE."
 
 ;;; Executing guix commands
 
+(defcustom guix-run-in-shell-function #'guix-run-in-shell
+  "Function used to run guix command.
+The function is called with a single argument - a command line string."
+  :type '(choice (function-item guix-run-in-shell)
+                 (function-item guix-run-in-eshell)
+                 (function :tag "Other function"))
+  :group 'guix)
+
+(defcustom guix-shell-buffer-name "*shell*"
+  "Default name of a shell buffer used for running guix commands."
+  :type 'string
+  :group 'guix)
+
+(declare-function comint-send-input "comint" t)
+
+(defun guix-run-in-shell (string)
+  "Run command line STRING in `guix-shell-buffer-name' buffer."
+  (shell guix-shell-buffer-name)
+  (goto-char (point-max))
+  (insert string)
+  (comint-send-input))
+
+(declare-function eshell-send-input "esh-mode" t)
+
+(defun guix-run-in-eshell (string)
+  "Run command line STRING in eshell buffer."
+  (eshell)
+  (goto-char (point-max))
+  (insert string)
+  (eshell-send-input))
+
+(defun guix-run-command-in-shell (args)
+  "Execute 'guix ARGS ...' command in a shell buffer."
+  (funcall guix-run-in-shell-function
+           (guix-command-string args)))
+
 (defun guix-run-command-in-repl (args)
   "Execute 'guix ARGS ...' command in Guix REPL."
   (guix-eval-in-repl



reply via email to

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