Я использую GNU Emacs на Win32.
Я хочу смочь выполнить jslint как компиляцию на .js файлах и затем ступить через ошибки это отчеты о jslint.
У меня есть jslint, версия WScript.
РЕДАКТИРОВАТЬ - Теперь есть упрощенный модуль, который делает это за вас.
http://marmalade-repo.org/packages/fly-jshint-wsh
Этот пакет .el:
Easy peasy. Еще винда только хоть.
Я сохранил все старые части этого ответа по причинам исторического интереса, но вам не нужно читать дальше.
Примечание - Ниже я описываю, как изменить jslint.js для использования в emacs.
Если вы не хотите делать это самостоятельно, доступен уже измененный код .
По этой ссылке есть дополнительный фрагмент, flymake-for-jslint-for-wsh.el, который позволяет использовать jslint с flymake в Windows.
Чтобы использовать jslint в emacs,
Загрузите jslint.js, версию WScript .
Отредактируйте файл 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"));
}
}}}());
Это изменение делает две вещи:
Первое изменение позволяет вам вызывать jslint.js из emacs с помощью компиляции M-x
. Второй позволяет вставлять сообщения об ошибках с помощью 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
работает должным образом.
Ура !!
Вы также можете запустить jslint как средство проверки синтаксиса flymake в Linux или Windows. Подробнее см. http://www.emacswiki.org/emacs/FlymakeJavaScript .
Некоторые примечания по моей настройке с использованием Perl, jslint, cygwin, EmacsW32. Какой бардак!