2013-12-18 12 views
6

Sto usando il wgrep abbastanza spesso per il refactoring e generalmente si comporta abbastanza bene. Tuttavia, ci sono alcuni piccoli fastidi che spero possa essere risolto:Ottimizza l'usabilità di wgrep

  1. Dopo aver fatto un rgrep di ricerca, che cambia a wgrep ed eseguendo i cambiamenti nel buffer rgrep, wgrep aprirà tutti i file che devono essere cambiati e esegue le modifiche. Tuttavia, quando si esegue questa operazione, i file vengono aperti normalmente in emacs, quindi verranno sottoposti al normale caricamento in modalità, che può richiedere un po 'di tempo se questa azione coinvolge file sorgente di grandi dimensioni che vengono analizzati.

    E 'possibile modificare wgrep tale che esso apre i file nella modalità di base (immagino fondamentale modalitànormale modalità), invece?

  2. Dopo aver eseguito le modifiche, wgrep non chiude alcun buffer appena aperto.

    È possibile cambiare wgrep tale che chiuderà automaticamente i buffer aperti durante la fase di esecuzione (cioè buffer che non sono stati aperti prima della wgrep procedura avviata).

Infine, il meta domanda: È questo piuttosto un problema per essere pubblicato alla questione inseguitore del wgrep developer o è una vera e propria domanda StackOverflow?

+0

quanto riguarda la questione "meta": pubblicare qui può aiutare altre persone a trovare risposte e/o imparare cose utili. L'uso dello sviluppatore e/o del tracker dei problemi è imho ok se si tratta di un problema o di una richiesta in primo piano (hai indagato e non c'è modo di fare ciò che vuoi). StackOverflow può aiutare con questa indagine per alcuni utenti. – juanleon

+0

FYI, 'normal-mode' è la funzione che determina la modalità principale appropriata da utilizzare, chiama quella e quindi imposta tutte le variabili locali e di directory (tutte le cose che stai cercando di evitare, in altre parole) . 'fundamental-mode' è ciò che volevi. – phils

+0

@phils - Non è solo 'fondamentale-mode' che è necessario, se si vuole evitare il solito overhead di file-visita: Si vuole anche evitare di processare hook e variabili locali del file. C'è una quantità discreta di cose da fare e attenzione da fare. Quindi, se si desidera visitare effettivamente alcuni file, è necessario fare attenzione a richiamare tutte quelle cose correttamente (altrimenti uccidere il buffer e quindi visitarlo correttamente). Vedere 'icicle-find-file-of-content-action-1' e' icicle-find-file-of-content-1', in 'icicles-cmd1.el', per un esempio di tale codice. – Drew

risposta

3

Da ciò che vedo nel sorgente wgrep.el, è necessario modificare (o in modo aggressivo defadvice) alcune funzioni di wgrep.el.

In particolare, in wgrep-get-file-buffer l'argomento RAWFILE di find-file-noselect dovrebbe essere t, nel tuo caso, e il buffer dovrebbe essere aggiunto a un elenco di buffer da eliminare. In wgrep-finish-edit è possibile utilizzare un dolist in tale nuovo elenco per eliminare i buffer aperti da wgrep.

Quindi una richiesta di funzionalità per l'autore potrebbe essere in ordine :-)

Nel frattempo, le modifiche necessarie sono facili da implementare (basta ignorare il breve wgrep-get-file-buffer e "defadvice dopo" wgrep-finish-edit), ma si sarebbe vulnerabile agli aggiornamenti sul pacchetto.

[E, naturalmente, una patch/pull richiesta può essere inviata per l'autore, ma in quel caso forse dovrebbe essere aggiunta una nuova variabile di configurazione (wgrep-auto-kill-buffer o qualcosa di simile)]