From: Jean Louis <bugs@gnu.support>
To: GNU Emacs Help <help-gnu-emacs@gnu.org>
Subject: How to run shell command with stream input, to get string output
Date: Mon, 1 Jul 2019 00:32:05 +0200 [thread overview]
Message-ID: <20190630223205.GA19895@protected.rcdrun.com> (raw)
Hello,
I would like to know how to make in Emacs Lisp the
equivalent function to what I have here below in
Common Lisp.
I wish to feed a string as stream to a command and
to get the string output.
For example, I would like to do something like
this:
(setq output
(shell-command-feed-string "markdown" "Hello\n=====\n\n"))
output would then be something like "<h1>Hello</h1>"
so to receive the string back as result from
markdown parsing.
This type of function then I would use on various
commands, not just markdown, but that maybe one
good example.
I have tried searching for similar in Emacs Lisp
manual, could not find it.
With CLISP Common Lisp implementation:
(defun slurp-stream-io-command2 (command string)
"Returns the output of a command to which string
has been fed, very usable for markdown, emacs Org
mode processing and similar"
(let* ((stream (make-pipe-io-stream command :external-format "utf-8"))
(in (two-way-stream-input-stream stream))
(out (two-way-stream-output-stream stream))
(result ""))
(princ string out)
(finish-output out)
(close out)
(setf result (with-output-to-string (var)
(loop for c = (read-char in nil)
while c
do (format var "~A" c))))
(finish-output in)
(close in)
(close stream)
result))
Thank you,
Jean
next reply other threads:[~2019-06-30 22:32 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-30 22:32 Jean Louis [this message]
2019-07-01 7:18 ` How to run shell command with stream input, to get string output Marcin Borkowski
2019-07-01 8:17 ` Jean Louis
2019-07-01 8:38 ` tomas
2019-07-01 9:06 ` Jean Louis
2019-07-01 9:38 ` Robert Pluim
2019-07-01 9:43 ` Jean Louis
2019-07-01 11:12 ` Noam Postavsky
2019-07-01 12:15 ` Jean Louis
2019-07-01 9:10 ` Marcin Borkowski
2019-07-01 9:24 ` Jean Louis
2019-07-04 19:16 ` Marcin Borkowski
2019-07-04 20:33 ` Jean Louis
2019-07-04 20:38 ` Jean Louis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190630223205.GA19895@protected.rcdrun.com \
--to=bugs@gnu.support \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.