Domanda

Sto cercando di utilizzare flymake per eseguire pyflakes, come suggerito qui

Questo funziona bene per i file locali, e quasi funziona con i file remoti con un po 'di tweaking, ma mi rimane un problema in cui flymake / pyflakes 'modifica' il buffer quando viene eseguito (anche se nulla sembra in realtà per il cambiamento) , che lo rende un po 'inutile in pratica (es salva un file piste flymake che modifica immediatamente il buffer di nuovo).

Ecco cosa ho fatto per quasi farlo funzionare:

  1. pyflakes installato sulla scatola a distanza.
  2. misura la mia variabile tramp-remote-process-environment in modo che pyflakes potrebbe essere trovato nel suo percorso
  3. Usato una variante del codice dal link wiki sopra. Ovviamente escluso il controllo che disabilita per i buffer remoti. Inoltre, il costrutto (when (load "flymake" t) ...) non sembra funzionare come mi aspettavo, ma io non sono troppo preoccupato per questo.
  4. Re-definito (per scopi di test - consulenza dovrebbe andare bene, se questo può essere fatto per il lavoro) la funzione flymake-start-syntax-check-process in modo che utilizzi start-file-process (che funziona con vagabondo), invece di start-process (che non)

Il cambiamento di 4 # non sembra causare problemi durante l'elaborazione di un file locale, ma anche se questo consente ora flymake per eseguire i pyflakes remoto per i file remoti (gli errori sono evidenziati come previsto), in questo caso il buffer è 'modificato' ogni volta che viene eseguito flymake.

Sto indovinando che start-file-process, per i processi a distanza, i risultati di un certo valore di ritorno aggiuntivo / dati che non si verifica per i processi locali.

Qualcuno ha qualche intuizione / consiglio?

  • Emacs 23.1 e 23.2 su Ubuntu
  • Python 2.4.6
  • pyflakes 0.4.0 (via easy_install)
È stato utile?

Soluzione

Dovete dire flymake a creare di essa la copia del buffer di somewhere localmente, io preferisco usare la directory $TMP dal momento che questo anche mi permette per l'uso vagabondo su file nelle directory che non ho i permessi di scrittura.

Si consiglia di cassa my fork di flymake-python dal momento che fa tutto questo.

Altri suggerimenti

Ho questo fisso nella mia forcella di Flymake ( https://github.com/illusori/emacs-flymake ).

Si sarà o eseguire il controllo della sintassi sulla macchina remota tramite Tramp, senza il problema di buffer-modifica si sta vedendo; oppure è possibile impostare flymake-run-in-place per nil e verrà eseguito il controllo della sintassi sulla macchina locale, proprio come flymake su un buffer di regolare non Tramp.

Dal momento che è fissato al livello Flymake, questa correzione funziona per tutte le lingue e controlli di sintassi e non solo pyflakes.

Se siete interessati a dettagli del perché sta accadendo, in pratica quando il gestore di vagabondo per i calci di start-file di processo, fa uscire il messaggio di login per il collegamento sulla fine del buffer corrente prima di qualsiasi filtro di uscita può essere collegato al processo.

Di solito questo si manifesta come la gente vedendo il contenuto di / etc / issue appaiono alla fine del loro lima insieme a "C'è posta." e così via.

Nel tuo caso è possibile che il messaggio di login è vuota o semplicemente una nuova linea, in modo da non riesci a vedere alcun testo che viene aggiunto, anche se è l'impostazione del buffer come modificati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top