как интерактивно запускать node.js в Emacs на Windows - PullRequest
12 голосов
/ 18 января 2012

Я думал, что это будет работать:

(defun my-node ()
  (interactive)
  (pop-to-buffer (make-comint "my-node" "node")))

Но когда я набираю M-x my-node и ввожу 1+1 в буфер ввода, он не выводит никаких выводов.

Это в Emacs 24.0.50.1 в Windows 7, и NodeJS устанавливается без какой-либо специальной настройки.

Вызов node.js неинтерактивно, как в M-x compile RET node hello-world.js RET, работает нормально. Интерактивный запуск node в cmd работает нормально.

Это может быть связано: когда я запускаю M-x shell и ввожу node в буфер оболочки, а затем ввожу 1+1, результат не отображается. Я, должно быть, упускаю что-то очень простое.

Обновление:

Вероятно, связано: emacs / Python: запуск оболочки python в режиме с линейной буферизацией и с блочной буферизацией - переполнение стека

Ответы [ 4 ]

12 голосов
/ 30 июня 2012

Самый простой способ использовать node.js (протестированный с использованием узла v0.8.1) в качестве подчиненной оболочки в Emacs - это использовать пакет js-comint . Затем установите (setq inferior-js-program-command "node --interactive"), чтобы заставить узел работать в интерактивном режиме. Команда M-x run-js откроет переводчик.

Точно так же вы можете легко проверить, что node --interactive работает в оболочке.

3 голосов
/ 23 января 2012

Я нашел одно решение.

Создайте скрипт узла, который запускает интерфейс JavaScript REPL.

node-in-node.js:

var repl = require("repl");
repl.start();

Pass "путь к узлу \ to \ node-in-node.js "к make-comint вместо простого" node ".

(defun my-node-shell ()
  (interactive)
  (pop-to-buffer (make-comint "Node Shell" "node" nil "C:\\run\\node-in-node.js")))

Запустите M-x my-node-shell, чтобы запустить оболочку JavaScript в Windows Emacs.Я не знаю, почему это работает.Завершение табуляции, выделение синтаксиса, многострочный ввод через Shift + Enter не работает.

3 голосов
/ 19 января 2012

Начиная с http://www.gnu.org/software/emacs/windows/Sub_002dprocesses.html, создается впечатление, что выходные данные буферизуются узлом.Если есть опция, изменяющая ее буферизацию, вы можете попробовать передать ее.

Возможно, существует другой способ ее решения, если предположить, что это проблема буферизации, но мои знания о окнах еще не достаточно полны, чтобы это знать.Я, например, хотел бы общее решение этого на платформах Windows, это раздражает проблема, когда он появляется.

0 голосов
/ 15 мая 2019

Если у вас не работает js-comint, вы можете попробовать :

(defun node-repl () (interactive)
      (setenv "NODE_NO_READLINE" "1") ;avoid fancy terminal codes
      (pop-to-buffer (make-comint "node-repl" "node" nil "--interactive")))
(node-repl)

Способ js-comint , кажется, работает лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...