2009-11-10 12 views
7

Ho una strana interazione con tramp e cygwin-mount (penso: Emacs: Tab completion of file name appends an extra i:\cygwin). Per questo motivo, voglio disabilitare il vagabondo. Non riesco a trovare nulla nel mio .emacs che sta caricando esplicitamente il vagabondo. Riesco a vedere "Caricamento tramp ..." quando premo una scheda nel minibuffer del file di ricerca. Mi piacerebbe capire quale pacchetto sta causando il caricamento di vagabondo e disabilitarlo. Come procedo a fare questo? Ho provato a cercare (richiedere 'vagabondo) ma non ho trovato nulla di interessante. L'unica altra opzione a cui posso pensare è di commentare i bit del mio .emacs uno per uno e vedere quale funziona - ma questa è una forza così bruta, mi piacerebbe un modo più intelligente (e più semplice).In Emacs, come faccio a capire quale pacchetto sta caricando tramp?

risposta

18

Che bella domanda! Se non altro perché non ero a conoscenza della funzione (eval-post-carico sotto forma di file) che vi permetterà di scrivere codice come il seguente e metterlo nel vostro .emacs:

(eval-after-load "tramp" 
    '(debug)) 

che, a bruta forza la forma, vomita un backtrace nella tua finestra e rivela la libreria incriminata.

+0

Trucco pulito, lo adoro! – paprika

+0

Non lo sapevo neanche io, sembra essere esattamente quello che Rhith stava cercando. – Friedrich

+0

Impressionante, pajato0. Questo mi ha davvero aiutato a ridurre il problema e mi ha salvato almeno un giorno di risoluzione dei problemi, inoltre ho imparato molto di più su emac anche in questo caso! Grazie a tutti per tutte le vostre risposte e aiuto. – Rohith

1

Trova file di strumento per il debug e/o strumento il file di inizializzazione per il debug. Quindi puoi passare attraverso il caricamento e vedere dove sono caricati i roba del barbone.

+0

Questo sembra quello che voglio fare - ma non so come farlo. Puoi darmi qualche dettaglio, per favore? Ho fatto qualche ricerca su google per il codice dello strumento emacs per il debug e sembra che tu stia suggerendo di usare edebug-defun - è corretto? Dal guardare tramp.el, non sembra che il vagabondo abbia una singola funzione di punto d'ingresso che posso usare. Altri dettagli sarebbero davvero utili, considerando che sono un principiante di emacs. – Rohith

+1

Beh, penso che pajato0 lo abbia reso irrilevante. Tuttavia ho scritto o rubato il seguente codice: (defun find-symbol-at-point() "Trova l'origine della funzione o della variabile nel punto." (interattivo) (o (find-function-at-point) (find-variable-at-point))) Ho associato questo a F5 e ora vado solo a una funzione di tipo F5 e ottenere dove esso Ho definito questa funzione solo per il debugging – Friedrich

+0

Sii un po 'attento quando tratti un simbolo * come * una funzione * o * una variabile, perché un dato simbolo può essere effettivamente entrambi (qualcosa che viene regolarmente osservato con le modalità). Il tuo 'find-symbol-at-point' non noterà mai la definizione della variabile in queste istanze – phils

3

Penso che troverete che il vagabondo è attivato di default. Se lo fai:

M-x customize-apropos 
Customize (regexp): tramp 

('Personalizza (regexp):' è la richiesta da emacs) vedrete due variabili elencate (almeno io lo faccio in emacs 23), qualcosa come:

alt text

Se si imposta la modalità di sospensione su "off", salvare per sessioni future e riavviare il mover di emacs non dovrebbe più essere caricato. Credo che puoi semplicemente disattivarlo nella sessione corrente per permetterti di testarlo, ma questo non sempre funziona con le variabili personalizzabili, anche se dovrebbe fare qualcosa come il vagabondo che fa parte della distribuzione standard di emacs.

Non ho più installato emacs 22, ma qualcosa di simile dovrebbe funzionare anche per quello.

2

Ho avuto un problema simile con il vagabondo, quando un giorno ho trovato "/C:\...\debuglog.txt" sul mio sistema. A causa di quel file, il completamento automatico stava invocando il barbone ogni volta Ho inserito "/". E il vagabondo stava ovviamente dando un errore. completamento automatico stava chiamando

(expand-file-name ...) 

che, a causa della corrente di file-nome-gestore-alist, è stato chiamando vagabondo. La mia soluzione era:

(delete-if 
(lambda (x) 
    (or (eq (cdr x) 'tramp-completion-file-name-handler) 
     (eq (cdr x) 'tramp-file-name-handler))) 
file-name-handler-alist) 
+0

Questo ha risolto il mio problema (dopo aver usato il vagabondo, non potevo più cliccare su un hyperlink in gnus). Non ho ancora provato il vagabondo di nuovo dopo aver applicato questa correzione. Ricorda che devi, ad esempio, '(richiedere 'cl)' prima. –

Problemi correlati