From 7008dffff52b59bb37361e72f4319977a91db2f1 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 16 Aug 2015 13:55:25 +0300 Subject: [PATCH] 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 file changed, 36 insertions(+) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index d1593e285d..4dff0d6170 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -1087,6 +1087,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