Using Node.js with JS-comint in Emacs

2019-01-17 22:42发布

问题:

I use Emacs 24.2. I've installed js-comint and js-mode from MELPA, executed run-js, and now in REPL instead of > sign i have this gibberish:

^[[1G> ^[[0K^[[3G

The REPL itself in Inferior Javascript mode works just fine, just the > sign is changed. If you enter unfinished expression, it even prints ^[[1G... ^[[0K^[[5G. The ^[ are system characters, that are not copied with copy-paste, i add them for you to have an idea.

In my init-file:

(require 'js-comint)
(setq inferior-js-program-command "nodejs")

In terminal calling nodejs produces working REPL.

Why prompt behaves this way? What should i do to correct this?

回答1:

(setq inferior-js-mode-hook
      (lambda ()
        ;; We like nice colors
        (ansi-color-for-comint-mode-on)
        ;; Deal with some prompt nonsense
        (add-to-list
         'comint-preoutput-filter-functions
         (lambda (output)
           (replace-regexp-in-string "\033\\[[0-9]+[GK]" "" output)))))

\033 is the escape character it prints as ^[.



回答2:

Just add one line in your .emacs:

(setenv "NODE_NO_READLINE" "1")

Answer come from this post: Node.js prompt '>' can not show in eshell



回答3:

Not sure how recent, but now one can download and use the nodejs-repl.