2016-07-03 4 views
0

私は外部の 'npm'コマンドを実行するelispをいくつか持っています。emacsでは、外部プログラムを別のウィンドウで実行する最良の方法は、プログラムの終了を実行した後に単一のキーコマンドで閉じることができますか?

(defun npm-mode-npm-run() 
    "Run the 'npm run' command on a project script." 
    (interactive) 
    (let ((command 
      (completing-read 
      "Run command: " (npm-mode--get-project-scripts)))) 
    (message "Running npm script: %s" command) 
    (switch-to-buffer npm-mode--buffer-name command) 
    (erase-buffer) 
    (ansi-term (getenv "SHELL") "npm-mode-npm-run") 
    (comint-send-string "*npm-mode-npm-run*" (format "npm run-script %s\n" command)))) 

実行している間、ユーザーは強制終了されなければならないバッファに残され、プロセスを強制終了するために追加の確認が必要です。

プログラムが終了すると、「q」キーを押してそのすべてを行い、ユーザーを元のバッファに残すことができます。

私が参照できる近代的なEmacsや他の具体的なドキュメントでこれをどうやって行うのが良いのか?

事前に感謝します。

+0

私はNPMに慣れていないんだけど、一般的に、私は 'compile'、それの可能性の派生バージョンを試してみました。派生コンパイルモードの非常に単純な例では、https://github.com/PyCQA/pylint/blob/master/elisp/pylint.elを見てください。また、成功したコンパイルバッファを自動的に埋める(または強制終了する)方法については、http://stackoverflow.com/a/11059012/245173を参照してください。 – jpkotta

答えて

0

@jpkottaは言ったように、コンパイルは良い選択です。あなたはまた、あなたが自由に解析エラー(構文の色分け+問題のある行にジャンプする機能)多くの言語のためのために取得するなど、簡単にバッファを埋める根本的なプロセスにTERMシグナルを送ることができます。

(defun juanleon/execute-buffer() 
    (interactive) 
    (let ((compile-command nil)) 
    (compile buffer-file-name))) 

簡単にあなたのコードに適応するために変更する:ここで

は、私は(私が編集しています任意のスクリプトの迅速な実行を行うために、この場合には)それを使用する方法の例です。 (私は通常のコンパイルのために多くのことをコンパイル使用しているため、歴史は便利です) letcompile歴史にコンテンツを追加しないためです。

関連する問題