2015-03-15 4 views
5

Обычно, редактируя JavaScript на emacs, я использую flycheck с jshint для проверки синтаксических ошибок. Так что я jshint установленный по всему миру, и следующая команда в файле .emacs использовать flycheck в JS-режиме:Использовать flycheck с eslint на emacs при редактировании файлов из определенного проекта

(require 'flycheck) 
(add-hook 'js-mode-hook 
      (lambda() (flycheck-mode t))) 

Но я также внести свой вклад в проект, где они используют eslint определить правила синтаксиса. У меня есть .dir-locals.el файла в этой папке проекта, которая в данный момент только определяет необходимое подведение:

((nil . ((tab-width . 4) 
     (js-indent-level . 4))) 

(js-mode . ((tab-width . 4) 
      (js-indent-level . 4))) 

(html-mode . ((tab-width . 4) 
       (sgml-basic-offset . 4)))) 

возможно ли это, возможно, с помощью .dir-locals.el файла, чтобы сообщить Emacs использовать flycheck с eslint в этще когда вы продолжаете использовать flycheck с jshint в остальных проектах? Я слышал, следующие строки должны сделать трюк для переключения с jshint на eslint, но я не совсем уверен, куда добавить их:

(setq flycheck-disabled-checkers '(javascript-jshint)) 
(setq flycheck-checkers '(javascript-eslint)) 

(Как вы можете догадаться, я не совсем хорошо с настройкой emacs, поэтому я буду очень благодарен за конкретные инструкции.)

ответ

1

Я в той же ситуации, за исключением того, что я хочу, чтобы eslint был значением по умолчанию и использовал jshint в некоторых старых «старых» проектах.

dir-locals просто содержит вложенные режимы отображения alist для пар переменных/значений, которые необходимо установить в этом режиме. Так что ваши setq могут тривиальным быть переведены на такой ALIST:

((js-mode . ((flycheck-disabled-checkers . (javascript-jshint)) 
      (flycheck-checkers . (javascript-eslint))))) 

Это на самом деле лучше всего установить flycheck-disabled-checkers, поскольку шашки уже включает в себя как javascript-jshint и javascript-eslint, (она просто отключена в вашей конфигурации), и flycheck-checkers является помечен как «рискованная» переменная (потому что это вызовет запуск произвольных программ на входе), поэтому это вызовет вопрос, задаваемый при открытии JS-файла в каталоге.

+0

Извините за поздний ответ. Я попробовал ваше предложение, но мой emacs все еще, кажется, продолжает использовать jshint, несмотря на код выше. Я могу переопределить это, находясь в js-файле, нажав «Мета-X», а затем набрав «flycheck-select-checker» и выбрав «javascript-eslint», но когда я отредактировал код на '((js-mode. ((Flycheck- select-checker. (javascript-eslint))))) 'и поместил его в' .dir-locals.el', это не сработало. Отсутствие знаний о elisp, я полностью исключаю идеи :-( – azangru

+0

flycheck-select-checker - это функция, тогда как две другие вещи являются переменными. .dir-locals.el будет принимать только атрибут переменных для сопоставления значений, который объясняет, почему это не работает. У меня есть '(flycheck-add-mode 'javascript-eslint' javascript-mode)' в моем .emacs, возможно, вы этого не сделали? Это объясняет, почему отключение jshint не вызовет eslint быть выбранным. – sjamaan

 Смежные вопросы

  • Нет связанных вопросов^_^