2012-11-01 10 views
5

के तहत प्रॉम्प्ट सही ढंग से प्रदर्शित नहीं करता है यह प्रश्न Node.js prompt '>' can not show in eshell नोड प्रतिलिपि के लिए समस्या का समाधान करता है, लेकिन जब आप नोड को npm से कॉल करते हैं तो वह समाधान काम नहीं करता है।npm emacs eshell

उदाहरण अगर मैं

$ npm init 
This utility will walk you through creating a package.json file. 
It only covers the most common items, and tries to guess sane defaults. 

See `npm help json` for definitive documentation on these fields 
and exactly what they do. 

Use `npm install <pkg> --save` afterwards to install a package and 
save it as a dependency in the package.json file. 

Press ^C at any time to quit. 
^[[1G^[[0Jname: (nodo1) ^[[15G 

बनाने या यदि आप एक "स्क्रिप्ट" के साथ एक package.json है द्वारा: { "शुरू": "नोड"}

$ npm start 
npm WARN package.json [email protected] No README.md file found! 
> node 

^[[1G^[[0J> ^[[3G 

मैं इस एक पता "स्टार्ट" का उपयोग करके हल किया जा सकता है: "env NODE_NO_READLINE = 1 नोड", लेकिन इसे हर जगह लिखें एक समाधान समाधान नहीं है। और शायद पैकेज के अन्य उपयोगकर्ता emacs का उपयोग नहीं करते हैं और env var को अन्य तरीकों से सेट करने की आवश्यकता है।

मैं NPM सेटिंग NODE_NO_READLINE = 1 के लिए एक उर्फ ​​लेकिन एक ही परिणाम

alias npm='env NODE_NO_READLINE=1 npm' 

उत्तर

4

यह comint छानने विशेष वर्ण कई खोल सामने समाप्त होता है पाठ colorize करने के लिए उपयोग करते हैं विधा है के साथ की कोशिश की है। यदि आप कभी भी Emacs के माध्यम से एक शैल प्रोग्राम के साथ बातचीत करते हैं, तो आप शायद "गूंगा टर्मिनल या Emacs टर्मिनल का उपयोग करके" संदेशों से परिचित हैं। कुछ पता लगा सकते हैं कि Emacs या गूंगा टर्मिनल का उपयोग किया जाता है और वे वर्ण नहीं भेजेंगे जो व्याख्या नहीं कर सकते हैं, लेकिन नोड ऐसा नहीं करता है। भले ही, आप इस तरह कुछ उपयोग कर सकते हैं:

(add-to-list 
     'comint-preoutput-filter-functions 
     (lambda (output) 
      (replace-regexp-in-string "\\[[0-9]+[GK]" "" output))) 

कहीं भी आपके .emacs में।

स्टैक ओवरफ्लो नियंत्रण वर्णों को सही ढंग से कॉपी नहीं करेगा, रेगेक्सपी में पहला अक्षर (उद्धरण के ठीक बाद और स्लैश से पहले) ^[ वर्ण है। आप इसे सी-क्यू 0 3 3 करके Emacs में इनपुट कर सकते हैं जो आप अगली टाइप करते हैं, वर्तमान बफर में नियंत्रण वर्ण डालने का कारण बन जाएगा।

+1

आपका समाधान खोल पर काम करता है लेकिन एशेल में नहीं। एशेल एक समान दृष्टिकोण (एड-टू-लिस्ट 'eshell-output-filter-functions' (lambda() (सेव-भ्रमण (प्रतिस्थापन-regexp "\\ का उपयोग करके फिल्टर करने के लिए eshell-output-filter-functions का उपयोग करें। [[0-9] + [GKJ] "" "शून्य \t \t \t \t eshell-अंतिम उत्पादन के अंत)))) काम करता है eshell-अंतिम उत्पादन शुरू लेकिन धीमी है। मैं क्या सोच रहा हूं कि NODE_NO_READLINE = 1 –

+0

का उपयोग करने के लिए एनपीएम को कैसे बताना है: > console.log ('क्या यह अजीब तरीके से अजीब तरीके से बाहर निकल रहा है?') console.lo ('क्या यह कंटिन सामग्री है एक अजीब तरीके से बाहर? ') यह विशेष पात्रों को रोकता है, लेकिन अब मेरे पास जी नहीं है। कॉमेंट विशेष चरित्र प्रारूप रेगेक्स बनाने जैसा दिखता है? – Mittenchops

+0

regex को http://stackoverflow.com/questions/13862471/using-node-js-with-js-comint के आधार पर काम करने के लिए mw के लिए "\ 033 \\ [[0-9] + [GK]" होना था -in-emacs – pellekrogholt

संबंधित मुद्दे