Question

Je suis en train d'utiliser flymake pour exécuter pyflakes, comme le suggère ici

Cela fonctionne bien pour les fichiers locaux, et travaille presque avec des fichiers distants avec un peu de peaufinage, mais je suis parti avec un problème où flymake / pyflakes « modifie » le tampon quand il fonctionne (bien que rien ne semble réellement au changement) , ce qui le rend un peu inutile dans la pratique (par exemple, enregistrement d'un fichier qui modifie flymake fonctionne immédiatement à nouveau le tampon).

Voici ce que je faisais pour obtenir presque fonctionner:

  1. pyflakes installé sur la boîte à distance.
  2. sur mesure ma variable tramp-remote-process-environment afin que pyflakes pu être trouvée dans son PATH
  3. Utilisé une variante du code à partir du lien ci-dessus wiki. Il est évident que j'Exclue la vérification qui désactive pour tampons à distance. En outre, la construction de (when (load "flymake" t) ...) ne semble pas fonctionner comme je m'y attendais, mais je ne suis pas trop inquiet à ce sujet.
  4. redéfinies (à des fins de test - des conseils devrait être bien si cela peut être fait au travail) la fonction flymake-start-syntax-check-process afin qu'elle utilise start-file-process (qui travaille avec clochard) au lieu de start-process (qui ne fonctionne pas)

Le changement de # 4 ne semble pas provoquer des problèmes lors du traitement d'un fichier local, mais bien que cela permet désormais flymake d'exécuter les pyflakes à distance pour les fichiers distants (erreurs sont mises en évidence comme prévu), dans ce cas, le tampon est 'modifié' chaque fois exécute flymake.

Je devine que start-file-process, pour les processus à distance, les résultats dans une valeur de rendement supplémentaire / données qui ne se produit pas pour les processus locaux.

Quelqu'un at-il une idée / conseil?

  • Emacs 23.1 et 23.2 sur Ubuntu
  • Python 2.4.6
  • pyflakes 0.4.0 (via easy_install)
Était-ce utile?

La solution

Vous devez dire flymake créer il copie de la mémoire tampon somewhere localement, je préfère utiliser le répertoire $TMP puisque ce aussi me permet à l'utilisation clochard sur les fichiers dans les répertoires que je ne dispose pas des autorisations d'écriture à.

Vous voudrez peut-être à la caisse de ma fourchette flymake-python, car il fait tout cela.

Autres conseils

Je possède ce fixée dans ma fourchette de Flymake ( https://github.com/illusori/emacs-flymake ).

Il sera soit exécuter la vérification de la syntaxe sur la machine distante via Tramp, sans problème de modification de tampon que vous voyez; ou vous pouvez définir flymake-run-in-place à nil et courrez la vérification de la syntaxe sur la machine locale, tout comme flymake sur une base régulière tampon non Tramp.

Comme il est fixé au niveau Flymake, ce correctif fonctionne pour toutes les langues et les contrôles de syntaxe plutôt que seulement pyflakes.

Si vous êtes intéressé par les détails des raisons pour lesquelles il se passe, essentiellement lorsque le gestionnaire Tramp pour coups de pied démarrage de fichiers processus en, il vide le message de connexion pour la connexion à l'extrémité du tampon courant avant tout filtre de sortie peut être attaché au processus.

Habituellement, cela se manifeste que les gens voient le contenu de / etc / question apparaissent à la fin de leur dossier ainsi que « Vous avez du courrier. » et ainsi de suite.

Dans votre cas, il se peut que le message de connexion est vide ou tout simplement une nouvelle ligne, de sorte que vous ne voyez aucun texte ajouté, même si elle est mise en tampon comme étant modifiés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top