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.
This commit is contained in:
Alex Kost 2015-08-16 13:55:25 +03:00
parent 5e53b0c5a9
commit 7008dffff5
1 changed files with 36 additions and 0 deletions

View File

@ -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