2012-12-13 24 views
13

Tôi sử dụng Emacs 24.2. Tôi đã cài đặt js-comintjs-mode từ MELPA, thực hiện run-js, và bây giờ trong REPL thay vì > dấu tôi có vô nghia này:Sử dụng Node.js với JS-comint trong Emacs

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

Các REPL chính nó trong chế độ Javascript Kém hơn làm việc tốt, chỉ là dấu hiệu > được thay đổi . Nếu bạn nhập biểu thức chưa hoàn thành, nó thậm chí còn in ^[[1G... ^[[0K^[[5G. ^[ là các ký tự hệ thống, không được sao chép với sao chép-dán, tôi thêm chúng để bạn có ý tưởng.

Trong init-file của tôi:

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

Trong terminal gọi nodejs sản xuất REPL làm việc.

Tại sao lời nhắc lại hoạt động theo cách này? Tôi nên làm gì để sửa lỗi này?

Trả lời

17
(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 là ký tự thoát được in là ^[.

+0

nhưng tại sao lại tạo ra rác thải? –

+1

Thực hiện chỉnh sửa nhỏ cho câu lệnh cuối cùng: '(thay thế-regexp-in-chuỗi" \ 033 \\ [[0-9] + [A-Z] "" "đầu ra))))) – narayan

17

Chỉ cần thêm một dòng trong emacs của bạn:

(setenv "NODE_NO_READLINE" "1") 

trả lời đến từ bài đăng này: Node.js prompt '>' can not show in eshell

+0

+1. điều này về cơ bản làm việc cho tôi, cảm ơn. Tôi tạo ra một tập tin có tên 'repl' trong thư mục ứng dụng của tôi, và trong đó đặt NODE_NO_READLINE = 1 nút. Sau đó, chỉ cần gọi ./repl từ bên trong một vỏ emacs và bạn nhận được một nút repl bên trong emacs với phạm vi mô-đun chính xác và không có đầu ra giberrish. – Scott

1

Không chắc thế nào gần đây, nhưng bây giờ người ta có thể tải về và sử dụng nodejs-repl.

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