2012-03-12 10 views
8

A menudo uso ido para autocompletar y vagabundo para acceder al servidor remoto a través de ssh. Mi .emacs incluye las siguientes líneas:Emacs: deshabilitar la finalización de Ido en el modo de Vagabundo

(require 'tramp) 
(setq tramp-default-method "ssh") 
(ido-mode 1) 
(setq ido-enable-flex-matching t) 
(setq ido-everywhere t) 

Quiero desactivar la terminación Ido, cuando estoy navegando contenido del servidor remoto. Tenga en cuenta que la variable ido-enable-tramp-completion no tiene nada que ver con mi problema. Considere la línea /[email protected]#1234:/var/www/file.txt. Necesito Ido no para deducir la parte después de los dos puntos (ruta de archivo remota), no me importa la parte antes del colon. Yo uso ssh, e Ido hace que Emacs se demore unos segundos cada vez que ejecuto ido-find-file, y cuando el tiempo de espera de ssh termina, Tramp intenta reconectarse, me pide una contraseña, etc. Este comportamiento no es deseable. Versión

Emacs - 24.0.94.1

Editar (20.03.12): En caso de contacto con Ido autor I trató de cambiar el ido-file-name-all-completions-1 a lo siguiente:

(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)))) 

Sin éxito. Entonces cambié expresión regular para

"\\`/[^/]+[:@]" 

y funcionó - Ido estaba desactivado, cuando minibuffer contenía ese partido. Sin embargo, como Ido no podía ver los archivos en un servidor remoto, comenzó a llamar al ido-make-merged-file-list para buscar archivos en otros directorios cada vez que ingresaba algo. Esto hizo que trabajar con Ido en servidores remotos fuera aún más doloroso.

También intenté configurar las variables ido-slow-ftp-hosts y ido-slow-ftp-host-regexps en /[email protected]#1234, no me ayudó.

Respuesta

8

Si ingresa C-x C-f nuevamente, deshabilita temporalmente ido-find y vuelve al archivo de búsqueda predeterminado.

Para obtener más información C-h f ido-find-file RET

Para hacer esto cada vez IDO encuentran dos puntos, supongo que tiene que escribir su propia función para eso.

+0

Si hago 'ido-find-file' dos veces, este error se arroja en' * Backtrace * 'buffer -' Depurador ingresado - Error de Lisp: (error "Comando intentó usar minibúfer en minibúfer") Depurador ingresado - Error de Lisp: (error "El comando intentó usar el minibúfer mientras estaba en minibúfer") '. ¿Y dónde debería escribir esta función? –

+0

No puede ejecutar ido-find-file dos veces. El comando 'C-x C-f' no almorzará el archivo ido-find, simplemente retrocederá a find-file. No escriba 'M-x ido-find-file RET' nuevamente. Escriba 'C-x C-f'. – mathk

+0

Ya veo. ¿Dónde debería escribir una función para que yo vea dos puntos? –

Cuestiones relacionadas