Я пытаюсь использовать flymake запустить pyflakes, как это было предложено hereЗапуск пихты удаленно с flymake и бродягой в emacs?
Это прекрасно работает для локальных файлов и работает почти с удаленными файлами с немного настройки, но я остался с проблемой, где flymake/pyflakes «изменяет» буфер при его запуске (хотя фактически ничего не меняется), что делает его практически бесполезным на практике (например, сохранение файла запускает flymake, который сразу же модифицирует буфер).
Вот что я сделал почти заставить его работать:
- Установленные pyflakes на удаленном компьютере.
- Настроить мою переменную
tramp-remote-process-environment
так, чтобы pyflakes можно было найти в ее PATH - Используется вариант кода из указанной выше вики. Очевидно, я исключил проверку, которая отключает ее для удаленных буферов. Кроме того, конструкция
(when (load "flymake" t) ...)
не работала так, как я ожидал, но я не слишком беспокоюсь об этом. - Переопределенный (для целей тестирования - рекомендации должны быть в порядке, если это может быть сделано для работы) функция
flymake-start-syntax-check-process
, так что она используетstart-file-process
(которая работает с бродягой) вместоstart-process
(а это не так).
Изменение в # 4 не вызывает никаких проблем при обработке локального файла, но хотя теперь это позволяет flymake запускать удаленные pyflakes для удаленных файлов (ошибки подсвечиваются как ожидалось), в этом случае буфер «модифицируется» всякий раз, когда запускается flymake.
Я предполагаю, что для удаленных процессов start-file-process
приводит к дополнительным возвращаемым значениям/данным, которые не встречаются для локальных процессов.
Есть ли у кого-нибудь идеи/советы?
- Emacs 23.1 и 23.2 на Ubuntu
- Python 2.4.6
- Pyflakes 0.4.0 (через easy_install)
Просто примечание: в 2014 году стандартная flymake, которую вы можете установить с помощью elpa (у меня есть версия 0.4.16), включает переменную flymake-run-in-place - просто настройте ее на nil, а flymake будет хранить файлы в $ TMP – gromgull