Io uso spesso l'ido per il completamento automatico e il tramp per accedere al server remoto tramite ssh. Il mio .emacs
include le seguenti righe:Emacs: disabilita il completamento Ido in modalità Tramp
(require 'tramp)
(setq tramp-default-method "ssh")
(ido-mode 1)
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
Voglio disattivare il completamento Ido, quando sto navigando contenuto del server remoto. Si noti che la variabile ido-enable-tramp-completion
non ha nulla a che fare con il mio problema. Prendere in considerazione la riga /[email protected]#1234:/var/www/file.txt
. Ho bisogno di Ido non per dedurre la parte dopo i due punti (percorso file remoto), non mi interessa la parte prima dei due punti. Io uso ssh e Ido fa in modo che Emacs resti in ritardo per qualche secondo ogni volta che corro ido-find-file
e quando il timeout di ssh è finito, Tramp tenta di riconnettersi, mi chiede una password e così via. Questo comportamento non è desiderabile.
Emacs versione - 24.0.94.1
Edit (20.03.12): Dopo il contatto con Ido autore Ho provato a cambiare il ido-file-name-all-completions-1
al seguente:
(defun ido-file-name-all-completions-1 (dir)
(cond
((ido-nonreadable-directory-p dir) '())
;; do not check (ido-directory-too-big-p dir) here.
;; Caller must have done that if necessary.
((and ido-enable-tramp-completion
(or (fboundp 'tramp-completion-mode-p)
(require 'tramp nil t))
(string-match "\\`/[^/]+[:@]\\'" dir))
;; TRAMP RELATED CODE DELETED
nil)
(t
(file-name-all-completions "" dir))))
Nessun successo. Ho quindi cambiato regex a
"\\`/[^/]+[:@]"
e ha funzionato - Ido era disabilitato, quando minibuffer conteneva quella partita. Tuttavia, come Ido non poteva vedere i file su un server remoto, è iniziato a chiamare ido-make-merged-file-list
per cercare i file in altre directory ogni volta che entro in qualcosa. Ciò ha reso ancora più difficile lavorare con Ido su server remoti.
Ho anche provato a impostare le variabili ido-slow-ftp-hosts
e ido-slow-ftp-host-regexps
a /[email protected]#1234
, non ha aiutato.
Se eseguo 'ido-find-file' due volte, questo errore viene generato in' * Backtrace * 'buffer -' Debugger inserito - Errore Lisp: (errore "Comando tentato di utilizzare il minibuffer mentre è in minibuffer") Debugger immesso - Errore Lisp: (errore "Il comando ha tentato di utilizzare il minibuffer mentre era in minibuffer") '. E dove dovrei scrivere questa funzione? –
Non è possibile eseguire ido-find-file due volte. Il comando 'C-x C-f' non pranza il file di ricerca degli ido, ma si limita a trovare il file di ricerca. Non digitare di nuovo 'M-x ido-find-file RET'. Scrivi 'C-x C-f'. – mathk
Vedo. Dove dovrei scrivere una funzione per vedere i due punti? –