redguardtoo / js-comint

js-comint will send the code from Emacs into node.js or rhino
GNU General Public License v3.0
71 stars 22 forks source link

Send multiline string #31

Open linktohack opened 1 year ago

linktohack commented 1 year ago

Node has special key for multiline string. .editor. The patch bellow will allow you to evaluate all or partial of this code for example

[1, 2, 3]
  .map((it) => it + 1)
  .filter((it) => it > 0)
  .reduce((prev, curr) => prev + curr, 0);
  (el-patch-feature js-comint)

  (with-eval-after-load 'js-comint
    (el-patch-defun js-comint-send-string (str)
      "Send STR to repl."
      (el-patch-swap
    (comint-send-string (js-comint-get-process)
                (concat str "\n"))
    (let ((lines (string-lines str)))
      (if (length= lines 1)
          (comint-send-string (js-comint-get-process)
                  (concat str "\n"))
        (comint-send-string (js-comint-get-process)
                (concat ".editor" "\n" str "\n"))
        (process-send-eof (js-comint-get-process)))))))
redguardtoo commented 1 year ago

Thanks. Could you send me a pull request?

linktohack commented 1 year ago

Sure, will do

SequentialDesign commented 1 year ago

How can I use .editor to evaluate your example when I'm using js-comint?

SequentialDesign commented 1 year ago

Hmm, the above didn't work for me, but this did:

[1, 2, 3].
map((it) => it + 1).
filter((it) => it > 0).
reduce((prev, curr) => prev + curr, 0);
linktohack commented 11 months ago

@SequentialDesign you should try the version here https://github.com/redguardtoo/js-comint/pull/33/files if you're on a version newer than 27.x.

The last PR breaks for me, too https://github.com/redguardtoo/js-comint/pull/33

saffroy commented 11 months ago

After a quick test, I think (I hope!) this should work again with #34