Вопрос

Я пытаюсь использовать Flymake, чтобы запустить Pyflakes, как предложено здесь

Это отлично работает для локальных файлов, и почти работает с удаленными файлами с небольшим количеством настройки, но я остался с проблемой, когда Flymake / Pyflakes 'модифицирует «буфер, когда он работает (хотя ничего на самом деле не меняется), что делает Это немного бесполезно на практике (например, сохранение файла запускает Flymake, который сразу же изменяет буфер снова).

Вот что я сделал, чтобы почти заставить его работать:

  1. Установлены Pyflakes на удаленном поле.
  2. Настроить мой tramp-remote-process-environment переменная, так что на его пути можно найти Pyflakes
  3. Использовал вариант кода из ссылки Wiki выше. Очевидно, что я исключал чек, который отключает его для удаленных буферов. Так же (when (load "flymake" t) ...) Конструкция, похоже, не работала, как я ожидал, но я не слишком беспокоюсь об этом.
  4. Переопределен (для целей тестирования - совет должен быть в порядке, если это может быть сделано на работу) 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)
Это было полезно?

Решение

Вы должны сказать Flymake Создайте Это копия буфера где-то локально я предпочитаю использовать $TMP каталог с этого также Позволяет мне использовать бродяги на файлах в каталогах у меня нет разрешений на запись.

Вы можете захотеть оформить мою вилку Flymake-Python Так как это делает все это.

Другие советы

У меня это исправлено в моей вилке Flymake (https://github.com/illusori/emacs-flymake.).

Он либо будет запустить проверку синтаксиса на удаленном компьютере через бродюг, без проблем с модификацией буфера вы видите; или вы можете установить flymake-run-in-place к nil И он будет запускать синтаксис проверки на локальной машине, как Flymake на регулярном небрежном буфере.

Поскольку он фиксируется на уровне Flymake, это исправление работает для всех языков и синтаксических проверок, а не только Pyflakes.

Если вы заинтересованы в деталях того, почему он происходит, в основном, когда Handler Tramp для START-FILE-FILE-PLACE включает, он сбрасывает сообщение для входа в систему подключения к концу текущего буфера, прежде чем любой выходной фильтр может быть прикреплен к обработать.

Обычно это проявляется, когда люди видят содержимое / etc / escept, появляются в конце их файла вместе с «у вас письмо». и так далее.

В вашем случае возможно, что сообщение для входа в систему пустое или просто новая строка, поэтому вы не видите добавленные текста, даже если он устанавливает буфер как модифицированный.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top