>From 3adc0be13880472e74b6015c6948046a25acdb9b Mon Sep 17 00:00:00 2001 From: Phil Sainty Date: Sun, 14 Oct 2018 15:54:05 +1300 Subject: [PATCH] Support program switches in 'comint-run' command * lisp/comint.el (comint-run): Add optional SWITCHES argument. With prefix argument C-u, prompt for SWITCHES. * etc/NEWS: * doc/emacs/misc.texi: Describe new behaviour. --- doc/emacs/misc.texi | 3 ++- etc/NEWS | 4 ++++ lisp/comint.el | 16 ++++++++++++---- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index 236cb07..fe397f7 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -1088,7 +1088,8 @@ Shell Mode @findex comint-run You can use @kbd{M-x comint-run} to execute any program of your choice in a subprocess using unmodified Comint mode---without the -specializations of Shell mode. +specializations of Shell mode. To pass arguments to the program, use +@kbd{C-u M-x comint-run} @node Shell Prompts @subsection Shell Prompts diff --git a/etc/NEWS b/etc/NEWS index 946a823..d2b8bdb 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -366,6 +366,10 @@ better emulate 'M-.' in both Bash and zsh, since the former counts from the beginning of the arguments, while the latter counts from the end. ++++ +*** 'comint-run' can now accept a list of switches to pass to the program. +'C-u M-x comint-run' will prompt for the switches interactively. + ** SQL *** Installation of 'sql-indent' from ELPA is strongly encouraged. diff --git a/lisp/comint.el b/lisp/comint.el index 5928804..5be763e 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -759,16 +759,24 @@ make-comint (apply #'make-comint-in-buffer name nil program startfile switches)) ;;;###autoload -(defun comint-run (program) - "Run PROGRAM in a Comint buffer and switch to it. +(defun comint-run (program &optional switches) + "Run PROGRAM in a Comint buffer and switch to that buffer. + +If SWITCHES are supplied, they are passed to PROGRAM. With prefix argument +\\[universal-argument] prompt for SWITCHES as well as PROGRAM. + The buffer name is made by surrounding the file name of PROGRAM with `*'s. The file name is used to make a symbol name, such as `comint-sh-hook', and any hooks on this symbol are run in the buffer. + See `make-comint' and `comint-exec'." (declare (interactive-only make-comint)) - (interactive "sRun program: ") + (interactive + (list (read-string "Run program: ") + (and (consp current-prefix-arg) + (split-string-and-unquote (read-string "Switches: "))))) (let ((name (file-name-nondirectory program))) - (switch-to-buffer (make-comint name program)) + (switch-to-buffer (apply #'make-comint name program nil switches)) (run-hooks (intern-soft (concat "comint-" name "-hook"))))) (defun comint-exec (buffer name command startfile switches) -- 2.8.3