Соответствие на лету PEP8 с помощью flycheck на emacs

Я распаковываю флайчек в ~/. и поместите следующие строки в ~/.emacs:

;; (package-initialize)
(setq load-path (cons "~/flycheck-20170415.1006" load-path))
(require 'flycheck)
(add-hook 'after-init-hook #'global-flycheck-mode)

Начиная Emacs 24.5.1 я получаю:

File error: Cannot open load file, no such file or directory, let-alist

С Emacs 25.1.1 я получаю:

File error: Cannot open load file, No such file or directory, dash

(Эти ошибки не меняются, если я раскомментирую (package-initialize), Emacs 25 теперь вставляет (package-initialize), подталкивая тех из нас с длинной настройкой, чтобы приспособиться.)

Моя (последующая) цель состоит в том, чтобы на лету согласовать код Python с PEP8. Как только проблема выше решена, я добавлю

(setq exec-path (append exec-path '("/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin")))

к этому брифу ~/.emacs (/opt/..2.7/bin где MacPorts поставить flake8), но, по-видимому, существует проблема еще до того, как я укажу язык программирования.

Обновить

Это гораздо более болезненно, чем я ожидал. Flycheck жестко обходится установкой через пакеты и включением описанных здесь шагов в мой обычный ~/.emacs приводит к пресловутой

load-with-code-conversion: Symbol’s value as variable is void: <!DOCTYPE

ошибка. (Я почти уверен, что у меня нет файлов HTML, скрывающихся под .el расширение.)

Update2

Э-э... Я исправлюсь! Немного dash.el пробрался в мой обычный каталог elisp, и flycheck зависит от него, но это действительно был HTML-файл.

1 ответ

Решение

Flycheck зависит от dash, let-alist, а также seq,

Скачать файлы

  84766  dash.el
 381142  flycheck.el
   6136  let-alist.el
  17589  seq-24.el
  17684  seq-25.el
   1540  seq.el

и положить их в ~/.concise-elisp, Вам нужны три файла для seq, потому что он имеет альтернативные реализации для Emacs 24 и 25.

Вставьте следующие строки в ваш ~/.emacs:

;; Even if you are not using packages, you need the following
;; commented-out line, or else Emacs 25 will insert one for you.
;; (package-initialize)

(setq load-path (cons "~/.concise-elisp" load-path))
(require 'flycheck)
(add-hook 'after-init-hook #'global-flycheck-mode)
(setq exec-path (append exec-path '("/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin")))

Последняя строка указывает, куда MacPorts положил бы flake8, Flake8 - одна из программ, которым flycheck делегирует проверку PEP8.

Следующее упражнение: крюк flycheck только для Python (и, возможно, C/C++/Java/JS/..). В частности, не беспокойтесь о том, чтобы сделать файлы elisp кошерными. Выборочно активировать flycheck для языков по мере необходимости.

Другие вопросы по тегам