wisp
 
(Arne Babenhauserheide)
2013-07-24: wisp-multiline.sh works for emacs, but hacky, because the clean

wisp-multiline.sh works for emacs, but hacky, because the clean solution just does not work.

diff --git a/wisp-multiline.sh b/wisp-multiline.sh
--- a/wisp-multiline.sh
+++ b/wisp-multiline.sh
@@ -103,10 +103,11 @@ fi
 
 # Select the lisp interpreter
 
-if [[ $LISP == "guile" ]]; then
+if [[ "${LISP}" == "guile" ]]; then
     INTERPRETER="guile -s /dev/stdin"
-elif [[ $LISP == "emacs" ]]; then # thanks to http://superuser.com/a/487329
-    INTERPRETER="emacs -Q --batch --eval '(with-temp-buffer (progn (condition-case nil (let (line) (while (setq line (read-from-minibuffer \"\")) (insert line)(insert \"\n\"))) (error nil)) (eval-current-buffer)))))'"
+# the following commented code does not work, sadly. I do not understand, why.
+# elif [[ "${LISP}" == "emacs" ]]; then # thanks to http://superuser.com/a/487329
+#    INTERPRETER="emacs -Q --batch --eval '(with-temp-buffer (progn (condition-case nil (let (line) (while (setq line (read-string \"\")) (insert line)(newline)(forward-char 1))) (error nil)) (eval-current-buffer)))'"
 else
     INTERPRETER="${LISP}"
 fi
@@ -129,7 +130,11 @@ if [ $# -gt 0 ]; then
   # if we do not need additional interactive commands, we only need to
   # execute the lisp.
   if [[ x"$INTERACTIVE" == x"no" ]]; then
-      echo "${lispcode}" | ${INTERPRETER}
+      if [[ x"$LISP" == x"emacs" ]]; then
+          emacs -Q --batch --eval "${lispcode}"
+      else
+          echo "${lispcode}" | eval "${INTERPRETER}"
+      fi
       exit 0
   fi
 fi
@@ -159,5 +164,9 @@ lispcode="${lispcode}
 
 # now run the code
 
-echo "${lispcode}" | guile -s /dev/stdin
+if [[ x"$LISP" == x"emacs" ]]; then
+    emacs -Q --batch --eval "${lispcode}"
+else
+    echo "${lispcode}" | eval "${INTERPRETER}"
+fi