Win32 で GNU Emacs を使用しています。
jslint を .js ファイルのコンパイルとして実行し、jslint が報告するエラーをステップ実行できるようにしたいと考えています。
WScript バージョンの jslint があります。
Win32 で GNU Emacs を使用しています。
jslint を .js ファイルのコンパイルとして実行し、jslint が報告するエラーをステップ実行できるようにしたいと考えています。
WScript バージョンの jslint があります。
編集-これを行う簡略化されたモジュールがあります。
http://marmalade-repo.org/packages/fly-jshint-wsh
この.elパッケージ:
簡単に簡単。それでもWindowsだけです。
私は歴史的な興味の理由でこの答えの古い部分をすべて保持しましたが、これ以上読む必要はありません。
注-以下では、emacs内で使用するためにjslint.jsを変更する方法について説明します。
自分でやりたくない場合は、必要な変更済みのコードを利用できます。
このリンクには、Windowsでjslintをflymakeで使用できるようにする追加の部分flymake-for-jslint-for-wsh.elがあります。
emacs内でjslintを使用するには、
WScriptバージョンのjslint.jsをダウンロードします。
jslint.jsファイルを編集します。一番下までスクロールして、これを見つけます。
(function(){if(!JSLINT(WScript.StdIn.ReadAll(),.....
それ(およびそれに続くすべて)をこれに置き換えます:
(function(){
var filename = "stdin";
var content= "";
if (WScript.Arguments.length > 0){
filename = WScript.Arguments(0);
var fso = new ActiveXObject("Scripting.FileSystemObject");
//var file = fso.GetFile(filename);
var fs = fso.OpenTextFile(filename, 1);
content = fs.ReadAll();
fs.Close();
fso = null;
fs = null;
} else {
content = WScript.StdIn.ReadAll();
}
if(!JSLINT(content,{passfail:false})){
WScript.StdErr.WriteLine("JSLINT");
for (var i=0; i<JSLINT.errors.length; i++) {
// sample error msg:
// sprintf.js(53,42) JSLINT: Use the array literal notation [].
var e=JSLINT.errors[i];
if (e !== null){
var line = (typeof e.line == "undefined")?'0':e.line;
WScript.StdErr.WriteLine(filename + '(' +line+','+e.character+') JSLINT: '+e.reason);
WScript.StdErr.WriteLine(' ' + (e.evidence||'').replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"));
}
}}}());
この変更により、次の2つのことが行われます。
最初の変更により、emacs内から。を使用してjslint.jsを呼び出すことができますM-x compile
。2つ目は、エラーメッセージをM-x next-error
。
そのファイルをjslint-for-wsh.jsに保存します
次に、init.elまたはemacs.elでcompilation-error-regexp-alist
、この正規表現を追加します。
;; JSLINT
("^[ \t]*\\([A-Za-z.0-9_: \\-]+\\)(\\([0-9]+\\)[,]\\( *[0-9]+\\))\\( Microsoft JScript runtime error\\| JSLINT\\): \\(.+\\)$" 1 2 3)
javascriptモードフックで、コンパイルコマンドを設定します。
(setq compile-command
(let ((file (file-name-nondirectory buffer-file-name)))
(concat "%windir%\\system32\\cscript.exe \\LOCATION\\OF\\jslint-for-wsh.js " file)))
それでおしまい。
次に、.jsファイルを開いて実行するM-x compile
と、既存のバッファーでjslint.jsが実行されます。エラーのリストが表示M-x next-error
され、期待どおりに機能します。
Yipee !!
LinuxまたはWindowsで、flymake構文チェッカーツールとしてjslintを実行することもできます。詳細については、 http://www.emacswiki.org/emacs/FlymakeJavaScriptを参照してください。
JSLint は WSH をサポートしなくなりました。Windows で Node.js を使用して JSLint をセットアップするための手順を EmacsWiki に追加しました。
おそらく flymake のより良い代替手段は Flycheck であり、JSLint を使用して設定する方法に関する手順も EmacsWikiで提供しています。
Node.jsをインストールします。
Node.js の jslint パッケージをインストールします。
C:\>npm -g install jslint
Windows では、EMACS 23 からの jslint の呼び出しに問題があります。したがって、ラッパーを作成します~/.emacs.d/jslint.bat
(jslint はファイル名の一部である必要があります!):
@ECHO OFF
node "%APPDATA%"\npm\node_modules\jslint\bin\jslint.js >"%TEMP%"\jslint.out 2>&1 %*
TYPE "%TEMP%"\jslint.out
Emacs の組み込みシェルEShellから JSLint をテストします。
$ ~/.emacs.d/jslint.bat
No files specified.
[...]
flymake-jslintとその依存関係flymake-easyをインストールします。
に追加~/.emacs
:
(require 'flymake-jslint)
(add-hook 'js-mode-hook 'flymake-jslint-load)
カスタマイズflymake-jslint-command
:~/.emacs.d/jslint.bat
必要に応じて、その他の flymake-jslint オプションをカスタマイズします。
Emacs を再起動して、すべてが正常にロードされることを確認します。
欠陥のある JavaScript ファイルを開いてテストします。
バッファをカスタマイズflymake-log-level
して検査します。*Messages*
確認してくださいflymake-jslint-args
。
で構成されたコマンドflymake-jslint-command
が EShell で実行されることを確認します。
Node.js と一緒にインストールされた JSHint を使用する場合、たとえば次のように実行できます。
M-x compile jshint --reporter unix --verbose *.js
.
または、.emacs ファイルに次を追加します。
(add-hook 'js-mode-hook
(lambda() (setq compile-command
(concat "jshint --reporter unix --verbose "
(file-name-nondirectory buffer-file-name)))))
Perl、jslint、cygwin、EmacsW32を使用した私のセットアップに関するメモ。なんて混乱!