2012-01-18 24 views
12

Tôi nghĩ điều này sẽ làm việc:thế nào để chạy Node.js tương tác trong Emacs trên Windows

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

Nhưng khi tôi làm M-x my-node và nhập 1+1 trong bộ đệm COMINT, nó không hiển thị bất kỳ đầu ra.

Đây là trong Emacs 24.0.50.1 trên Windows 7 và NodeJS được cài đặt mà không có bất kỳ cấu hình đặc biệt nào.

Gọi node.js không tương tác như trong M-x compile RET node hello-world.js RET hoạt động tốt. Chạy node tương tác trong cmd hoạt động tốt.

Điều này có thể liên quan: khi tôi chạy M-x shell và nhập node vào bộ đệm vỏ rồi nhập 1+1, nó không hiển thị kết quả. Tôi phải thiếu một cái gì đó rất cơ bản.

Cập nhật:

lẽ liên quan: emacs/Python: running python-shell in line buffered vs. block buffered mode - Stack Overflow

Trả lời

3

Tôi đã tìm thấy một giải pháp.

Tạo tập lệnh nút bắt đầu giao diện JavaScript REPL.

Node.js nút-in-:

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

đèo "path nút \ to \ nút-in-Node.js" để make-COMINT thay vì chỉ đơn giản là "nút".

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

Chạy M-x my-node-shell để chạy vỏ JavaScript trong Windows Emacs. Tôi không biết tại sao nó lại hoạt động. Hoàn thành tab, đánh dấu cú pháp, nhập nhiều thông qua Shift + Enter không hoạt động.

+0

cho các phiên bản mới nhất của nút 'repl.start()' cần được thay thế bằng 'repl.start ({prompt: '>'})' – shyam

3

Từ http://www.gnu.org/software/emacs/windows/Sub_002dprocesses.html, có vẻ như nếu những gì có thể xảy ra là kết quả đã được đệm bằng nút. Nếu có một tùy chọn sửa đổi bộ đệm của nó, bạn có thể thử truyền nó.

Có thể có một cách khác để giải quyết nó, giả sử đó là vấn đề đệm, nhưng số lượng cửa sổ của tôi không đủ gần để biết. Tôi, đối với một, sẽ yêu một giải pháp chung cho điều này trên nền tảng cửa sổ, đó là một vấn đề gây phiền nhiễu khi nó cây trồng lên.

11

Cách đơn giản nhất để có node.js (được thử nghiệm bằng nút v0.8.1) dưới dạng vỏ kém hơn dưới Emacs là sử dụng gói js-comint. Sau đó, đặt (setq inferior-js-program-command "node --interactive") để buộc nút chạy ở chế độ tương tác. Lệnh M-x run-js sau đó sẽ mở trình thông dịch.

Tương tự, bạn có thể dễ dàng xác minh rằng node --interactive hoạt động trong một eshell.

+1

Bí quyết - tôi cần thêm "--interactive" . –

+0

IOW '(nút pop-to-buffer (make-comint" node-repl "" nút "nil" --interactive "))' –

Các vấn đề liên quan