亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何編寫適用于 GNU Emacs 的 Node.js REPL?

如何編寫適用于 GNU Emacs 的 Node.js REPL?

胡子哥哥 2022-06-09 17:06:54
我在 JavaScript 中有一個名為 LIPS 的 Scheme 解釋器。我有可執行文件,它在終端仿真器中工作,但在 GNU Emacs 劣質模式(使用run-scheme函數)中被破壞。我已經使用 Readline 重現了這個簡單的 Node.js REPL 的問題:var prompt = 'lips> ';var continuePrompt = '... ';const rl = readline.createInterface({    input: process.stdin,    output: process.stdout,    prompt: prompt,    terminal: !!process.stdin.isTTY // true in Emacs});if (process.stdin.isTTY) {    rl.prompt();}rl.on('line', function(line) {    if (process.stdin.isTTY) {        rl.prompt();    }});第一個問題是,當我輸入重復的輸出內容時,它是文字命令行回顯:lips> 101010lips> '(1 2 3)'(1 2 3)(1 2 3)lips>我找到了解決方案,其中:(setq comint-process-echoes t)但另一個問題是,在調整大小時,它會不斷追加提示。所以我有這個:lips> lips> lips> lips> lips>這是提示,因為如果我設置:(setq comint-prompt-read-only t)我無法刪除該文本。編輯:如果我調用 (read) 也使用 readline 獲取輸入,也會發生同樣的情況,它會不斷添加空格。我正在閱讀 Node.js 源代碼,它也使用 readline 并且在運行時運行良好run-js,Kawa Scheme Interpreter 可以正常工作,但它不使用 readline: (setq inferior-js-program-command "node --interactive") (run-js)這行得通,它不是運行方案,但它是相同的模式,我也嘗試run-js使用我的方案解釋器運行相同的代碼,并且它在調整大小時也顯示相同的提示重復。 (setq inferior-js-program-command "/home/kuba/projects/jcubic/lips/bin/lips.js") (run-js)
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

在 Emacs 開發郵件列表中得到了答案,解決方案是在 Emacs 中關閉 readline:


const rl = readline.createInterface({

    input: process.stdin,

    output: process.stdout,

    prompt: prompt,

    terminal: !!process.stdin.isTTY && !(process.env.EMACS || process.env.INSIDE_EMACS)

});

很多口譯員做同樣的事情。例如:重擊。


查看完整回答
反對 回復 2022-06-09
  • 1 回答
  • 0 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號