2012-12-13 13 views
13

Uso Emacs 24.2. Ho installato js-comint e js-mode da MELPA, eseguito run-js, ed ora in REPL invece di > segno ho questo senza senso:Uso di Node.js con JS-comint in Emacs

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

La stessa REPL in modalità Javascript Inferiore funziona bene, solo il segno > è cambiato . Se si inserisce un'espressione incompiuta, stampa anche ^[[1G... ^[[0K^[[5G. Gli ^[ sono caratteri di sistema, che non vengono copiati con copia-incolla, li aggiungo per farti un'idea.

Nel mio init-file:

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

Nel terminale chiamando nodejs produce REPL lavoro.

Perché il prompt si comporta in questo modo? Cosa dovrei fare per correggere questo?

risposta

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 è il carattere di escape viene stampato come ^[.

+0

ma perché richiede produrre rifiuti? –

+1

Apporta una modifica minore all'ultima istruzione: '(replace-regexp-in-string" \ 033 \\ [[0-9] + [A-Z] "" "output)))))' – narayan

17

Basta aggiungere una riga nel vostro .emacs:

(setenv "NODE_NO_READLINE" "1") 

risposta provenire da questo post: Node.js prompt '>' can not show in eshell

+0

+1. questo fondamentalmente ha funzionato per me, grazie. Ho creato un file chiamato "repl" nella mia directory app, e in esso inserisce NODE_NO_READLINE = 1 nodo. Quindi basta chiamare ./repl dall'interno di una shell di emacs e si ottiene un nodo repl all'interno di emacs con il corretto scope del modulo e nessun output giberrish. – Scott

1

Non so quanto recente, ma ora si può scaricare e utilizzare la nodejs-repl.